Skip to content

go语言 达梦数据库(DM)的exporter采集器 ,可对接prometheus+grafana 提供表盘

License

Notifications You must be signed in to change notification settings

gaoyuan98/dameng_exporter

Repository files navigation

DAMENG_EXPORTER的介绍说明

介绍

  1. DM数据库适配prometheus监控的采集器,目前已支持DM8数据库同时提供grafana 8.5.X 以上版本的监控面板(其他的grafana版本需要自己绘制表盘)。
  2. 已支持的指标如下
   数据库线程数	dmdbms_thread_num_info
   数据库事务等待数	dmdbms_trx_info
   数据库死锁数	dmdbms_dead_lock_num_info
   数据库的状态	dmdbms_status_info
   数据库启动时间	dmdbms_start_time_info
   数据库QPS数量	dmdbms_qps_count
   数据库TPS数量	dmdbms_tps_count
   主备集群同步延迟	dmdbms_rapply_stat
   表空间总大小	dmdbms_tablespace_size_total_info
   表空间空闲大小	dmdbms_tablespace_size_free_info
   表空间数据文件总大小	dmdbms_tablespace_file_total_info
   表空间数据文件空闲大小	dmdbms_tablespace_file_free_info
   数据库会话数状态	dmdbms_session_type_info
   数据库实例的错误事件	dmdbms_instance_log_error_info
   查询内存池的当前使用状态	dmdbms_memory_curr_pool_info
   查询内存池的配置上限	dmdbms_memory_total_pool_info
   数据库活动会话执行延迟监控	dmdbms_waiting_session
   数据库的最大连接数	dmdbms_connect_session
   数据库授权查询	dmdbms_license_date
   数据库定时任务错误	dmdbms_joblog_error_num
   监控监视器进程	dmdbms_monitor_info
   监控慢SQL语句	dmdbms_slow_sql_info
   备库重演运行线程数	dmdbms_rapply_sys_task_num
   备库重演内存堆积信息	dmdbms_rapply_sys_task_mem_used
   数据库语句类型数量展示逻辑	dmdbms_statement_type_info
   检查点更新	dmdbms_ckpttime_info
   检查用户信息	dmdbms_user_list_info
   数据库版本	dmdbms_version
   数据库启动天数	dmdbms_start_day
   数据库归档状态	dmdbms_arch_status
   dmap进程探活	dmdbms_dmap_process_is_exit
   dmserver进程探活	dmdbms_dmserver_process_is_exit
   dmwatcher进程探活	dmdbms_dmwatcher_process_is_exit
   dmmonitor进程探活	dmdbms_dmmonitor_process_is_exit
   dmagent进程探活	dmdbms_dmagent_process_is_exit
  1. 源码解析地址:https://blog.csdn.net/qq_35349982/article/details/140698149
  2. 如果有问题,欢迎提issue。如该项目对您有用请点亮右上角的starred

目录

  • doc目录存放的是相关的配置文件(告警模板、配置模板、表盘)
  • collector存放的是各个指标的采集逻辑
  • build_all_versions.bat为window的一键编译脚本

搭建效果图



搭建步骤

可查看这个:https://blog.csdn.net/qq_35349982/article/details/140700625

1. 下载编译的exporter包

https://github.com/gaoyuan98/dameng_exporter/releases

dameng_exporter_v1.0.0_linux_amd64.tar.gz(linux_x86平台)
dameng_exporter_v1.0.0_linux_arm64.tar.gz(linux_arm平台)
dameng_exporter_v1.0.0_windows_amd64.tar.gz(window_x64平台)

2. 新建用户权限

## 新建用户
create tablespace "PROMETHEUS.DBF" datafile 'PROMETHEUS.DBF' size 512 CACHE = NORMAL;
create user "PROMETHEUS" identified by "PROMETHEUS";
alter user "PROMETHEUS" default tablespace "PROMETHEUS.DBF" default index tablespace "PROMETHEUS.DBF";
## 条件允许的话 最好赋予DBA权限
grant "PUBLIC","RESOURCE","SOI","SVI","VTI" to "PROMETHEUS";
## 最小化权限
GRANT SELECT ON V$SYSSTAT TO PROMETHEUS;
GRANT SELECT ON V$SESSIONS TO PROMETHEUS;
GRANT SELECT ON V$LICENSE TO PROMETHEUS;
GRANT SELECT ON V$DATABASE TO PROMETHEUS;
GRANT SELECT ON V$DM_INI TO PROMETHEUS;
GRANT SELECT ON V$RLOGFILE TO PROMETHEUS;
GRANT SELECT ON V$TABLESPACE TO PROMETHEUS;
GRANT SELECT ON V$DATAFILE TO PROMETHEUS;
GRANT SELECT ON DBA_DATA_FILES TO PROMETHEUS;
GRANT SELECT ON DBA_FREE_SPACE TO PROMETHEUS;
GRANT SELECT ON V$TRXWAIT TO PROMETHEUS;
GRANT SELECT ON V$CKPT TO PROMETHEUS;
GRANT SELECT ON V$RAPPLY_SYS TO PROMETHEUS;
GRANT SELECT ON V$PROCESS TO PROMETHEUS;
GRANT SELECT ON V$LOCK TO PROMETHEUS;
GRANT SELECT ON V$THREADS TO PROMETHEUS;

3. 在数据库上运行

  1. 解压压缩包
  2. 修改dameng_exporter.config配置文件的数据库账号及密码 注意:程序运行后会自动对数据库密码部分进行密文处理,不用担心密码泄露问题
  3. 启动exporter程序
## 启动服务
[root@VM-24-17-centos dm_prometheus]#  nohup  ./dameng_exporter_v1.0.0_linux_amd64 > /dev/null 2>&1 &
## 2. 访问接口
##  通过浏览器访问http://被监控端IP:9200/metrics
[root@server ~]# lsof -i:9200

4. 在prometheus上进行配置

修改prometheus的prometheus.yml配置文件

# 添加的是数据库监控的接口9200接口,如果是一套集群,则在targets标签后进行逗号拼接,如下图所示
# 注意 cluster_name标签不能改,提供的模板用该标签做分类
- job_name: "dm_db_single"
  static_configs:
   - targets: ["192.168.112.135:9200"]
     labels:
     cluster_name: '单机测试'

5. 在grafana上导入提供的表盘

  1. 登录grafana登录,导入模板

  2. 所使用的模板在表盘中

  3. 效果图

6. 自定义指标

在exporter的同级目录下创建一个custom_metrics.toml文件,注意文件权限,编写SQL即可。写法与(oracledb_exporter)类似

1. 简单语句

[[metric]]
context = "context_with_labels"
request = "SELECT 1 as value_1, 2 as value_2, 'First label' as label_1, 'Second label' as label_2 FROM DUAL"
metricsdesc = { value_1 = "Simple example returning always 1 as counter.", value_2 = "Same but returning always 2 as gauge." }

该文件在导出器中生成以下条目:

# HELP dmdbms_context_no_label_value_1 Simple example returning always 1.
# TYPE dmdbms_context_no_label_value_1 gauge
dmdbms_context_no_label_value_1{host_name="gy"} 1
# HELP dmdbms_context_no_label_value_2 Same but returning always 2.
# TYPE dmdbms_context_no_label_value_2 gauge
dmdbms_context_no_label_value_2{host_name="gy"} 2

2. 自定义指标的lable

自定义标签的例子:

[[metric]]
context = "context_with_labels"
labels = [ "label_1", "label_2" ]
request = "SELECT 1 as value_1, 2 as value_2, 'First label' as label_1, 'Second label' as label_2 FROM DUAL"
metricsdesc = { value_1 = "Simple example returning always 1 as counter.", value_2 = "Same but returning always 2 as gauge." }
# Can be counter or gauge (default)
metricstype = { value_1 = "counter" }

该文件在导出器中生成以下条目:

# HELP dmdbms_context_with_labels_value_1 Simple example returning always 1 as counter.
# TYPE dmdbms_context_with_labels_value_1 counter
dmdbms_context_with_labels_value_1{host_name="gy",label_1="First label",label_2="Second label"} 1
# HELP dmdbms_context_with_labels_value_2 Same but returning always 2 as gauge.
# TYPE dmdbms_context_with_labels_value_2 gauge
dmdbms_context_with_labels_value_2{host_name="gy",label_1="First label",label_2="Second label"} 2

3.查询表空间数据文件的大小

[[metric]]
context = "test_table_metrics"
labels = [ "name"]
request = "SELECT name,TO_CHAR(TOTAL_SIZE*PAGE/1024/1024) AS total_size_mb FROM SYS.V$TABLESPACE"
metricsdesc = { total_size_mb = "Simple example"}

该文件在导出器中生成以下条目:

# HELP dmdbms_test_table_metrics_total_size_mb Simple example
# TYPE dmdbms_test_table_metrics_total_size_mb gauge
dmdbms_test_table_metrics_total_size_mb{host_name="gy",name="DMEAGLE"} 1024
dmdbms_test_table_metrics_total_size_mb{host_name="gy",name="DMEAGLE_DEV"} 1024
dmdbms_test_table_metrics_total_size_mb{host_name="gy",name="MAIN"} 2176
dmdbms_test_table_metrics_total_size_mb{host_name="gy",name="ROLL"} 128
dmdbms_test_table_metrics_total_size_mb{host_name="gy",name="SYSTEM"} 138
dmdbms_test_table_metrics_total_size_mb{host_name="gy",name="TEMP"} 74

更新记录

1.0.6

  1. 修复指标dmdbms_start_time_info时间戳与实际时间相差14个小时问题

v1.0.5

  1. 修复表空间指标dmdbms_tablespace_size total与free指标 赋值错误的问题
  2. 优化查询指定版本时 因没有指定视图而提示的告警信息

v1.0.4

  1. 修复自定义SQL指标时,多条数据报lable重复的问题
  2. 将依赖的go驱动调整为v1.3.162版本
  3. 修复告警的rules中表空间告警规则不生效的问题

v1.0.3

  1. 修复自定义SQL指标时指标名称不包含context的问题
  2. 优化logger的日志展示,日志级别带颜色输出

v1.0.2

  1. 新增自定义SQL指标的功能(在exporter的同级目录下创建一个custom_metrics.toml文件即可,写法与(oracledb_exporter相同)

About

go语言 达梦数据库(DM)的exporter采集器 ,可对接prometheus+grafana 提供表盘

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published