注册
prometheus在dm8上部署与简单测试
培训园地/ 文章详情 /

prometheus在dm8上部署与简单测试

xiaoshu 2022/11/16 1625 2 0
  1. 安装部署
    i. 安装go 环境
    采用直接解压安装的方式
    cd /homd/dmdba/
    tar -xvzf go1.17.2.linux-amd64.tar.gz (解压会生成go目录)

ii. 安装 dmdb-exporter
广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本数据。
image.png

由于原生exporter不提供对达梦数据库的支持,这里选择安装部署从github网上的dmdb-exporter,相当于agent。通过内置dm的golang驱动连接库。

具体步骤参照如下:
linux配置git连接账号如下:
git config --global user.name “XXXXXX”
git config --global user.email “swb@dameng.com”
ssh-keygen -C “swb@dameng.com” -t rsa
将公钥复制到git网站个人设置页面ssh key 设置中
测试连通性使用如下命令
ssh -T git@github.com

到对应目录执行git clone
git clone git@github.com:clong365/dmdb_exporter.git
使用以下命令安装dmdb_exporter
go build -o dmdb_exporter main.go

iii. 配置dmdb_exporter
dmdb_exporter可以按照promql表达式格式自行编写数据库相应的监控指标,基本意思就是通过promQL语言套用SQL标准语法通过dm golang驱动连接达梦是数据库进行各项动态性能视图的查询。
由于dmdb_exporter已经有内置定义好的监控指标配置(.toml)文件可以使用,本次实验直接使用dmdb_exporter自带的默认配置文件default-metrics.toml

context = "session"
labels = [ "state" ]
metricsdesc = { value= "Gauge metric with count of state sessions by DmService." }
request = "select count(*) as value , state  from v$sessions group by  state;"

[[metric]]
context = "session"
metricsdesc = { max= "Gauge metric with count of  sessions by DmService." }
request = " SELECT PARA_VALUE as max FROM v$dm_ini WHERE PARA_NAME='MAX_SESSIONS';"

[[metric]]
context = "tablespace"
labels = [ "tablespace_name" ]
metricsdesc = { free_space = "Generic counter metric of tablespaces free space MB in DmService.", total_space = "Generic counter metric of tablespaces total space MB in DmService.", free_percent = "Generic counter metric of tablespaces free percent in DmService." }
request = '''
select
t.name tablespace_name,
sum(d.free_size*SF_GET_PAGE_SIZE()/1024/1024)  free_space,
sum(d.total_size*SF_GET_PAGE_SIZE()/1024/1024)  total_space,
sum(d.free_size*100)/sum(d.total_size)  free_percent
from
v$tablespace t,
v$datafile d
where
t.id=d.group_id
group by t.name;
'''

[[metric]]
context = "systeminfo"
metricsdesc = { n_cpu= "cpu 个数.",total_phy_size= "物理内存总大小.", free_phy_size= "剩余物理内存大小.", total_disk_size= "磁盘总大小.", free_disk_size= "剩余磁盘大小.", load_one_average= "每分钟平均负载.", load_five_average= "每五分钟平均负载.", load_fifteen_average= "每十五分钟平均负载.", cpu_user_rate= "用户级的 cpu 使用率.", cpu_system_rate= "系统级的 cpu 使用率.", cpu_idle_rate= "idle 的 cpu 使用率.",  send_bytes_per_second= "当前每秒发送字节数.", receive_bytes_per_second= "当前每秒接收字节数.",send_bytes_total="发送的总字节数.",receive_bytes_total="接收的总字节数." }
request = " select n_cpu,total_phy_size,free_phy_size,total_disk_size,free_disk_size,load_one_average,load_five_average,load_fifteen_average,cpu_user_rate,cpu_system_rate,cpu_idle_rate,send_bytes_per_second,receive_bytes_per_second,send_bytes_total,receive_bytes_total from v$systeminfo;"
metricstype = { send_bytes_total = "counter",receive_bytes_total = "counter" }

[[metric]]
context = "sysstat"
labels = [ "name" ]
metricsdesc = { value= "Gauge metric with count of  sysstat by DmService." }
request = " select name,stat_val as value from v$sysstat;"
metricstype = { value = "counter" }

iv. 开启dmdb_exporter
设置DATA_SOURCE_NAME(被监控库连接串)环境变量,并指定日志级别、调用toml配置文件及dmdb_exporter监听ip地址及端口即可。

export DATA_SOURCE_NAME=dm://SYSDBA:SYSDBA@192.168.43.128:5236?autoCommit=true
/home/dmdba/go/bin/go run /home/dmdba/exporter/dmdb_exporter/main.go --log.level error  --default.metrics  /home/dmdba/exporter/dmdb_exporter/default-metrics.toml --web.listen-address 192.168.43.142:9161

v. 安装prometheus-server
按照prometheus官方说明文档采用从网上下载对应源码包方式安装

cd prometheus-2.34.0-rc.2.linux-arm64/
mkdir -p data

编辑prometheus.yml中targer 设置以捕获dmdb_exporter的metrics数据,其他设置保持不变,默认每间隔15秒中搜集一次数据库指标信息

  - job_name: "dm_exporter"
    static_configs:
      - targets: ["192.168.43.142:9161"]

启动prometheus服务,其会默认加载当前路径下的prometheus.yaml文件:


启动完成后,可以通过http://localhost:9090访问Prometheus的UI界面:
image.png

在上图界面上输入up 命令并执 返回一行结果为1表示监控启用。
在targets中看到被监控的目标信息包括上次扫描时间 扫描耗时等
image.png
点击endpoint下连接可以看到具体监控的各项指标值如下图所示(默认配置是15秒刷新一次也可以页面刷新按钮手工刷新)
image.png

默认promethus监控获取的数据都是如上文本格式。随后可以在该UI监控页面使用promql语言表达式汇总监控捕获的数据并形成基本的二位曲线图。如果需要个性定制专业的监控样式可以配合Grafana组件搭建监控的Dashboard。

以下为使用默认基本图形化展示达梦数据库运行期间的一些指标情况示例:
会话:
image.png

CPU占用率情况:
image.png

累计事务数:
image.png

  1. 对数据库性能影响验证
    i. TPCC装载数据
    由于目前环境因素限制,在本地测试库中载入50仓tpcc数据如下:
    image.png

ii. TPCC性能对比测试
测试参数条件说明:
50仓数据10并发跑5分钟建库默认参数
关闭Prometheus
16:36~16:41测得平均TPMC为12016.69
image.png
16:36~16:41测得平均TPMC为12016.59
image.png
17:19~17:24关闭prometheus测得平均TPMC为11831.43 多次测得结果基本相同

开启Prometheus
image.png

开启Prometheus监控情况下测得平均TPM为10663.84,较没有prometheus监控时性能平均降低10%
image.png
image.png

以上两图为tpcc测试时通过prometheus基本图形框架查看数据库系统信息及单独会话信息的指标图表表示。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服