注册
Prometheus+grafana监控达梦8实例
专栏/培训园地/ 文章详情 /

Prometheus+grafana监控达梦8实例

北极熊 2026/07/28 137 0 0
摘要

在国产化替代、信创落地的大背景下,达梦8(DM8)作为国产主流关系型数据库,凭借高性能、高兼容、高稳定的特性,广泛应用于政务、金融、能源、企业核心业务等各类关键场景,承担着核心数据存储与业务支撑的重要职责。数据库作为业务系统的核心基石,其运行状态直接决定了整体业务的稳定性与可用性,一旦出现会话阻塞、表空间溢出、性能卡顿、异常宕机等问题,极易引发业务中断、数据异常等重大故障。因此,搭建一套实时、全面、可视化的监控体系,是保障DM8数据库长期稳定运行、实现故障提前预警、运维精细化管理的核心刚需。
传统DM8运维监控多依赖达梦自带DEM管理工具、手动执行SQL巡检、系统日志查看等方式,存在监控维度单一、实时性不足、可视化效果差、难以对接统一运维平台、无法自定义告警规则等诸多短板,难以适配规模化、自动化的企业运维场景。而Prometheus+Grafana作为云原生领域主流的开源监控可视化解决方案,凭借轻量化部署、指标采集全面、时序数据存储稳定、自定义程度高、兼容性强等优势,已成为企业统一监控体系的首选组合,可完美适配国产数据库的监控适配需求。
通过部署适配DM8的专属Exporter采集器,可精准抓取数据库TPS事务、SQL执行状态、在线会话、表空间使用率、CPU/IO负载、缓存命中率、连接数等核心运行指标,经由Prometheus完成数据采集、存储与告警规则配置,再通过Grafana搭建可视化大屏,实现DM8数据库运行状态的全方位实时观测、异常指标自动预警、历史性能数据追溯分析,彻底解决传统人工巡检效率低、故障滞后、运维无数据支撑的痛点。
本文将从零出发,详细讲解dameng_exporter部署、Prometheus指标采集配置、Grafana监控面板搭建、告警规则配置全流程实操步骤,帮助运维人员快速搭建一套轻量化、高可用、可落地的DM8数据库专属监控平台,实现达梦数据库运维的标准化、可视化、智能化,为核心业务系统平稳运行筑牢运维保障。
01、环境准备
image.png

02、安装prometheus (192.168.88.80)
1)、安装

tar -xf prometheus-2.43.0.linux-amd64.tar.gz -C /opt/ cd /opt ln -sf prometheus-2.43.0.linux-amd64/ prometheus cd prometheus ./promtool check config prometheus.yml # 配置文件语法校验 cd /opt/prometheus

vim prometheus.yml # [部分]

scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ["192.168.88.80:9090"] # 注意修改localhost为 prometheus服务器IP

2) 默认配置启动

cd /opt/prometheus ./prometheus --config.file=prometheus.yml & ps -ef|grep prome
  1. 浏览器查看 192.168.88.80:9090
    image.png

  2. 配置prometheus启动命令
    prometheus启动选项:

--config.file # 指明prometheus的配置文件路径 --web.enable-lifecycle # 指明prometheus配置更改后可以进行热加载 --storage.tsdb.path # 指明监控数据存储路径 --storage.tsdb.retention # 指明数据保留时间

5) 设置开机自启动prometheus
vim /etc/rc.d/rc.local

nohup /opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.path=/opt/prometheus/data --storage.tsdb.retention=60d >> /var/log/prometheus.log 2>&1 &

chmod +x rc.local

03、DM服务器安装node_exporter
191、192操作:

tar -xf node_exporter-1.5.0.linux-amd64.tar.gz -C /opt ln -sf node_exporter-1.5.0.linux-amd64/ node_exporter nohup /opt/node_exporter/node_exporter &

vi /etc/rc.d/rc.local

chmod +x /etc/rc.d/rc.local

访问:
192.168.88.80:9100/metrics

04、达梦服务器安装dameng_exporter
192.168.88.80操作:

mkdir /opt/dmexporter tar -xf dameng_exporter_v1.1.6_linux_amd64.tar.gz -C /opt/dmexporter cd /opt/

达梦数据库创建监控用户

CREATE TABLESPACE export_tbs datafile '/dm8/data/DM01/EXPORT_TBS01.DBF' size 512 CACHE=NORMAL; CREATE user export01 IDENTIFIED by Dameng123; ALTER user export01 IDENTIFIED BY Dameng123; alter user export01 DEFAULT TABLESPACE export_tbs DEFAULT INDEX TABLESPACE export_tbs; grant public,resource,soi,svi,vti to export01;

修改配置文件:

vim /opt/dmexporter/dameng_exporter.config

dbHost=192.168.88.80:5236?autoCommit=true dbUser=export01 dbPwd=Dameng123

前台启动dameng_exporter调试:
chmod +x dameng_exporter_linux_amd64
ps -ef|grep exporter
image.png

配置开机后台自启动
vi /etc/rc.d/rc.local
image.png

05、修改prometheus配置并重启
vim /opt/prometheus/prometheus.yml

scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ["192.168.88.80:9090"] - job_name: "dameng_80" static_configs: - targets: ["192.168.88.80:9200"] labels: cluster_name: 'dameng_single_instance'

./promtool check config prometheus.yml

nohup /opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.path=/opt/prometheus/data --storage.tsdb.retention=60d >> /var/log/prometheus.log 2>&1 &

06、配置grafana

yum install -y grafana-enterprise-12.1.0-1.x86_64.rpm systemctl start grafana-server systemctl enable grafana-server

http://192.168.88.80:3000/login #初始密码admin/admin,按提示修改密码

image.png
#导入prometheus数据源

image.png
image.png

image.png
#导入达梦监控面板的json文件

image.png

image.png

  1. 安装alertmanager
    上传alertmanager至171(prometheus服务器)后解压
tar -xf alertmanager-0.25.0.linux-amd64.tar.gz -C /opt/ ln -sf alertmanager-0.25.0.linux-amd64/ alertmanager cd /opt/alertmanager

2)修改alertmanager配置文件
cp alertmanager.yml alertmanager.yml.bak
vim alertmanager.yml

global: smtp_smarthost: 'smtp.qq.com:465' smtp_from: '468165631@qq.com' smtp_auth_username: '468165631@qq.com' smtp_auth_password: '<auth>' smtp_require_tls: false route: group_by: ['Linux'] group_wait: 30s group_interval: 5m repeat_interval: 1h receiver: '8230311' receivers: - name: '8230311' email_configs: - to: '468165631@qq.com' send_resolved: true

./amtool check-config alertmanager.yml
netstat -natp | grep :9093

3)添加告警规则

mkdir /opt/prometheus/alert_rules
vim /opt/prometheus/alert_rules/nodestat.yaml

groups: - name: hostStatsAlert rules: - alert: NodeDown expr: up == 0 for: 1m annotations: title: 'Instance Down' description: "instance: {{ $labels.instance }} ,Instance has been down for more than 1 min!" labels: severity: 'critical' - alert: cpu_alert expr: 100 -avg(irate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)* 100 > 80 for: 1m labels: level: warning annotations: description: "instance: {{ $labels.instance }} ,cpu usage is too high ! value: {{$value}}" summary: "cpu usage is too high" - alert: NodeMemoryUsage expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)/node_memory_MemTotal_bytes > 0.85 for: 2m labels: severity: "Warning" annotations: summary: "Instance {{ $labels.instance }} MEM usgae high" description: "{{ $labels.instance }} MEM usage above 92% (current value: {{ $value }})" - alert: rootDiskUsageAlert expr: 100 - ((node_filesystem_avail_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100) / node_filesystem_size_bytes {mountpoint="/",fstype=~"ext4|xfs"}) > 85 for: 1m labels: severity: "Warning" annotations: summary: "Instance {{ $labels.instance }} root DISK usgae high" description: "{{ $labels.instance }} root DISK usage above 85% (current value: {{ $value }})" - alert: dataDiskUsageAlert expr: 100 - ((node_filesystem_avail_bytes{mountpoint="/data",fstype=~"ext4|xfs"} * 100) / node_filesystem_size_bytes {mountpoint="/data",fstype=~"ext4|xfs"}) > 85 for: 1m labels: severity: "Warning" annotations: summary: "Instance {{ $labels.instance }} data DISK usgae high" description: "{{ $labels.instance }} data DISK usage above 85% (current value: {{ $value }})" - alert: backupDiskUsageAlert expr: 100 - ((node_filesystem_avail_bytes{mountpoint="/backup",fstype=~"ext4|xfs"} * 100) / node_filesystem_size_bytes {mountpoint="/backup",fstype=~"ext4|xfs"}) > 85 for: 1m labels: severity: "Warning" annotations: summary: "Instance {{ $labels.instance }} backup DISK usgae high" description: "{{ $labels.instance }} backup DISK usage above 85% (current value: {{ $value }})"
  1. 修改promethues 配置文件,添加alertmanager配置
    vim /opt/prometheus/prometheus.yml
alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - 192.168.88.80:9093

rule_files:
   - "/opt/prometheus/alert_rules/nodestat.yaml"

添加promethues 对alertmanager的监控

- job_name: 'alertmanager' scrape_interval: 5s static_configs: - targets: ["192.168.88.80:9093"]

./promtool check config prometheus.yml

重启prometheus
ps -ef|grep prometheus|grep -v color|awk '{print $2}'|xargs kill -9

nohup /opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.path=/opt/prometheus/data --storage.tsdb.retention=60d >> /var/log/prometheus.log 2>&1 &

访问alertmanager: 192.168.88.80:9093
访问prometheus: 192.168.88.80:9090
重新加载prometheus配置方法:

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服