达梦数据库DM8教程:运维监控工具(DEM、DMLOG日志工具、NMON、Prometheus)

运维监控工具

一、前言

数据库运维监控系统可以为数据库稳定运行提供重要保障。如果可以建立起可靠的运维监控系统,对可能发生的灾难加以预警,就能迅速启动应急响应机制,排除系统故障,这对于保障系统稳定运行具有极大的实用价值。
本文主要介绍达梦数据库常用的四种运维监控工具:

  • 达梦企业管理器 DEM
  • 达梦 SQL 日志分析工具 DMLOG
  • 开源性能监控工具 NMON(Linux)
  • 开源运维监控工具 Prometheus

二、达梦企业管理器 DEM

2.1 工具介绍

达梦企业管理器(DM Enterprise Manager,简称为 DEM )提供一个通过 Web 界面来监控、管理并维护 DM 数据库的集中式管理平台。数据库管理员可通过任意 Web 应用登录 DEM,从而对 DM 数据库进行管理和监控。 DEM 主要有集群部署、自动巡检、监控和告警等功能。DEM 由以下几个部分组成:

  • DEM 服务器:指 DEM 应用服务器,负责处理客户端工具功能逻辑并存储 dmagent 收集到的数据到 DEM 存储数据库,同时向客户端展示监控数据。
  • DEM 存储数据库:存储 DEM 的元数据和 dmagent 收集到的监控数据。
  • 数据库实例:需要被管理监控的数据库实例。
  • 数据库代理服务(dmagent):部署在远程机器上的代理,DEM 通过 dmagent 访问远程主机,同时 dmagent 收集监控信息发送给 DEM。

DEM 系统架构图如下所示:

在这里插入图片描述

DEM 工具主要提供如下功能:

  • 客户端工具。用户能够通过 DEM 工具来进行 DM 数据库的对象管理、状态监控、SQL 查询与调试。
  • 监控与告警。本功能是 DEM 工具的核心功能。通过远程主机部署代理,能够实现对远程主机状态和远程主机上 DM 数据库实例状态的监控。DEM 监控功能不仅仅局限于单个数据库实例,还能够对数据库集群(MPP、RAC、数据守护等)进行监控和管理。
  • 系统管理。DEM 工具提供了工具本身的系统配置与权限管理,方便不同用户同时使用工具,也可限制非 admin 用户的权限。

2.2 适用范围

该工具适用于监控 DM7 数据库和 DM8 数据库。

2.3 工具下载

DEM 试用版可在 达梦数据库官网达梦在线服务平台 进行下载。

2.4 DEM 部署

2.4.1 环境准备

1. 硬件环境

(1)服务器:实体机或虚拟机;

(2)操作系统:Windows 或 Linux 操作系统均可;

(3)内存:建议提供 2G 以上内存;

(4)其他:由于 DEM 会从被监视的数据库中获取信息到后台数据库,因此,建议生产环境中 DEM 数据的存储目录应不小于 100GB;其余的硬件要求与数据库单机部署一致。

2. 软件环境

(1)DEM WAR 包:位于达梦安装目录下 “…/web/dem.war”;

(2)Tomcat:自备,要求与部署的系统环境相匹配;

(3)JAVA 1.8:DEM 和 dmagent 所在机器需要配置 JAVA 环境,JAVA 版本必须为 JAVA 1.8。若系统中不带 jdk 环境可以在环境变量中指定数据库中的 jdk 目录即可,如下所示:

[root@localhost ~]# cat /etc/profile
export JAVA_HOME=/home/dmdba/dm/dmdbms/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

(4)达梦数据库:为 DEM 的后台数据库,需保证 DEM 所在机器能访问达梦数据库。

在部署 dmagent 之前,需设置 DEM 和 dmagent 所在服务器主机的时间同步。正式环境建议使用 ntp 配置时间同步。如下以 ”10.10.10.10“ 为 ntp 服务器为例,设置定时任务:

[root@localhost ~]# crontab -l
# Time sync
0,10,20,30,40,50 * * * * /root/sync_time.sh
[root@localhost ~]# cat /root/sync_time.sh 
#!/bin/bash
. /etc/profile
. /root/.bash_profile
ntpdate 10.10.10.10 ; hwclock –w
2.4.2 初始化后台数据库
  1. 创建后台数据库。创建一个 DM 数据库作为 DEM 后台数据库,初始化参数不做要求,默认即可,并对数据库的 dm.ini 参数配置进行优化,推荐配置如下:
MEMORY_POOL         	=  200
BUFFER                  		=  1000
KEEP                    		=  64
SORT_BUF_SIZE          	=  50
  1. 执行初始化脚本。在创建的后台数据库中用 SYSDBA(或管理员用户)执行 SQL 脚本 dem_init.sql,脚本位于达梦安装目录下"…/web/dem_init.sql"(此 SQL 脚本编码为 UTF-8,若使用 disql 执行 SQL 脚本,请先设置 set CHAR_CODE UTF8)。执行完脚本后,在后台数据库中会生成一个 DEM 的模式,存放 DEM 运行所需要的表和视图。
  2. 备份策略。可根据实际项目需求确定是否有必要设置后台数据库的备份,并确定备份策略。
2.4.3 配置 Tomcat
  1. 解压 tomcat 包。安装完 tomcat 之后,会生成以下目录:
[dmdba@localhost apache-tomcat-7.0.75]# ll
总用量 144
drwxr-x--- 2 dmdba dinstall  4096  827 09:28 bin
drwx------ 3 dmdba dinstall  4096  831 09:32 conf
drwxr-x--- 2 dmdba dinstall  4096  827 09:15 lib
-rw-r----- 1 dmdba dinstall 57092  95  2018 LICENSE
drwxr-x--- 2 dmdba dinstall  4096  93 09:46 logs
-rw-r----- 1 dmdba dinstall  1726  95  2018 NOTICE
-rw-r----- 1 dmdba dinstall  7142  95  2018 RELEASE-NOTES
-rw-r----- 1 dmdba dinstall 16262  95  2018 RUNNING.txt
drwxr-x--- 2 dmdba dinstall  4096  827 09:15 temp
drwxr-x--- 8 dmdba dinstall  4096  827 09:32 webapps
drwxr-x--- 3 dmdba dinstall  4096  827 09:32 work
  1. 检查 JAVA 环境。启动之前需要确定配置 JAVA 1.8 及以上版本的运行环境,运行 java –version 查看 JAVA 版本。
[dmdba@localhost ~/apache-tomcat-7.0.75]$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
  1. 修改 tomcat 配置。

(1)在 conf/server.xml 配置文件中 <Connector port="8080" protocol="HTTP/1.1"... 位置处添加属性字段 maxPostSize="-1"

Copy<Connector port="8080" protocol="HTTP/1.1" maxPostSize="-1"
               connectionTimeout="20000"
              redirectPort="8443" />

(2)在 bin/catalina.sh 配置文件中,根据数据库的安装路径,修改 jvm 启动参数。

CopyLinux:bin/catalina.sh -> 	JAVA_OPTS="-server -Xms256m -Xmx1024m -Djava.library.path=/home/dmdba/dmdbms/bin"
Windows:bin/catalina.bat -> set java_opts= -server -Xms40m -Xmx1024m -Djava.library.path=c:\dmdbms\bin
2.4.4 DEM 连接配置
  1. 解压 dem.war 包。

将 dem.war 包放置在 Tomcat 的 webapps 目录下,启动 Tomcat,会自动解压 war 包生成 DEM 目录。在 bin 目录下执行脚本启动 Tomcat。

[dmdba@localhost ~/apache-tomcat-7.0.75/bin]$ ./startup.sh
Using CATALINA_BASE:   /home/dmdba/apache-tomcat-7.0.75
Using CATALINA_HOME:   /home/dmdba/apache-tomcat-7.0.75
Using CATALINA_TMPDIR: /home/dmdba/apache-tomcat-7.0.75/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/dmdba/apache-tomcat-7.0.75/bin/bootstrap.jar:/home/
dmdba/apache-tomcat-7.0.75/bin/tomcat-juli.jar
Tomcat started.
  1. 配置后台数据库连接。

配置后台数据库的连接信息:ip、port、用户名、密码、连接池大小、SSL 登录信息等,在文件 dem/WEB-INF/db.xml 配置;

[root@localhost WEB-INF]# cat db.xml
<?xml version="1.0" encoding="UTF-8"?>
<ConnectPool>
        <Server>10.9.13.11</Server>
        <Port>5236</Port>
        <User>SYSDBA</User>
        <Password>SYSDBA</Password>
        <InitPoolSize>5</InitPoolSize>
        <CorePoolSize>10</CorePoolSize>
        <MaxPoolSize>50</MaxPoolSize>
        <KeepAliveTime>60</KeepAliveTime>
        <DbDriver></DbDriver>
        <DbTestStatement>select 1</DbTestStatement>
        <SSLDir>../sslDir/client_ssl/SYSDBA</SSLDir>
        <SSLPassword></SSLPassword>
</ConnectPool>

如果需要 SSL 安全方式连接后台数据库,则要配置 SSLDir 和 SSLPassword:默认在 WEB-INF/sslDir 目录存有密钥对,WEB-INF/db.xml 配置客户端连接使用的密钥文件(SSLDir)为 WEB-INF/sslDir/client_ssl/SYSDBA,密码 ( SSLPassword ) 为空,对应 WEB-INF/db.xml 配置的登录用户 SYSDBA,此时,只需拷贝 WEB-INF/sslDir/server_ssl 到后台数据库执行码目录。

db.xml 中 Password 和 SSLPassword 支持设置自定义加解密引擎对密码进行加解密处理,通过属性 engine 指定加解密引擎类路径。自定义加解密引擎需要实现 demsdk.jar 中提供的 com.dameng.dem.server.util.IEncryptEngine 接口。将自定义加解密引擎打包成 jar 文件放入 WEB-INF\lib 目录下。

demsdk.jar 提供了一个默认的加解密引擎:com.dameng.dem.server.util.DefaultEncryptEngine,使用默认加解密引擎配置如下:

<Password engine="com.dameng.dem.server.util.DefaultEncryptEngine" 通过 DefaultEncryptEngine 加密后的密码</Password>
  1. 配置 DEM 日志级别。

在 tomcat 的 webapps/dem/WEB-INF 目录下,log4j.xml 文件控制着日志级别。LOG_LEVEL 参数控制日志的显示信息,LOG_MAX_SIZE,LOG_MAX_COUNT,LOG_PRESERVE_DURATION 这 3 个参数动态组合控制日志量和日志保存的最大大小,超过这个最大大小的日志会被删除。

日志最大大小= LOG_MAX_SIZE × LOG_MAX_COUNT × LOG_PRESERVE_DURATION;

在 DEM 调试和查找问题时,LOG_LEVEL 可以使用 DEBUG 或者 ALL 参数,生产环境建议使用 ERROR 级别。根据项目的实际需要和磁盘的可用大小,调整 LOG_MAX_SIZE,LOG_MAX_COUNT,LOG_PRESERVE_DURATION 这 3 个参数的大小,避免出现磁盘爆盘的现象。此配置文件重启 Tomcat 之后才能生效。

在这里插入图片描述

  1. 重启生效。重新启动 Tomcat 使配置生效。
2.4.5 部署 dmagent

部署 dmagent 之前,需要确定服务器配置 JAVA 1.8 及以上版本的运行环境,运行 java –version 查看 JAVA 版本,核对 dmagent 机器和 dem 运行机器的时间一致。

  1. 获取 dmagent。dmagent 有两种获取方式:
    (1)达梦数据库安装目录的 tool 下存有 dmagent;
    (2)登录部署好的 DEM,在监控和告警模块下单击主机,打开主机面板,在工具栏选择: 更多-> 下载代理,下载 dmagent。
  2. 拷贝 dmagent 到要部署的机器上。
  3. 修改 dmagent 配置。配置 dmagent 目录下的 agent.ini:
##dem 所在机器的地址
center_url  =  http://192.168.104.72:8080/dem  
  1. 配置 dmagent 日志级别。同样修改 dmagent 目录下的 log4j.xml 文件,修改方法与 dem 端相同。
  2. 启动 dmagent。
Linux:bin/start.sh –d  agent.ini
Windows:start.bat –d  agent.ini
2.4.6 其他

客户端工具显示。若要求不显示 manager 客户端工具,则在 tomcat/bin/catalina.sh 文件中追加属性字段 JAVA_OPTS=”…… -Drun_mode=DMA”。配置成功后则不会显示实例连接。

在这里插入图片描述

2.5 工具使用

2.5.1 系统资源监控

1. 打开 DEM 工具

在浏览器输入 DEM 端 IP:端口 / DEM,默认用户和密码为 “admin/888888” ,登录到 DEM 页面中,如下图所示:

在这里插入图片描述

2. 功能介绍

点击【智能运维】->【资源监控】-> 主机选项,除了展示主机的 CPU、内存等的使用情况还可以看到监控下主机系统的信息大盘、负载统计、磁盘分析、自定义监控、进程监控和 Core 监控。此外,还有网络配置、升级代理、订阅、删除、查看属性等设置。

image.png

3. 负载统计

点击【负载统计】,页面中详细展示了当前系统的各项负载情况。用户可以查找 30 分钟到过去一周(也可自定义时间范围)的负载统计信息,以折线图的方式展示包括内存和虚拟内存使用率、CPU 使用率、磁盘读和写的速率、网络发送和接收的速率。

用户可以通过折线图的走势直观的监控到系统负载的统计,如下图所示:

image.png

4. 磁盘分析

分析页面展示出各磁盘路径下使用率、空间大小和总大小。其中磁盘使用率通过下方折线图以系统时间点为横轴展示。

在这里插入图片描述

5. 自定义监控

可以通过添加自定义监控,监控程序或者脚本的执行时间、执行状态、最近的执行结果和执行信息,以满足特殊化监控需求。

image.png

6. 进程监控

可通过设置名称和进程过滤条件,添加进程监控,实时监控进程运行情况。

image.png

7. Core 监控

通过设置进程路径、Core 文件位置和进程名设置对应进程的 Core 监控,及时掌握相关进程宕机情况。

image.png

2.5.2 数据库监控

1. 功能介绍

点击【智能运维】–>【资源监控】–>【数据库】选项,可添加、编辑、删除监控的数据库。此外,点击监控的数据库中【操作】选项,可进行数据库基本信息查看、AWR 报告查看、巡检报告查看、表空间分析、SQL 分析、登录锁定、死锁分析、会话分析、事件分析、自定义 SQL 分析、表数据监控、运行日志监控、事务日志监控、DM.INI 修改与查看等配置。

在这里插入图片描述

2. AWR 报告

可自定义选择任意时间段内的 AWR 报告,报告中涉及数据库和系统概述、资源、性能、会话、SQL、死锁和异常登录信息。各部分详细信息同样以折线图进行展示。

image.png3. 表空间分析

可选择任意时间段的表空间使用及配置情况,包括表空间使用率、空闲大小、总大小、最大大小、文件数、自动扩展、完整路径等信息。

image.png

4. SQL 分析

SQL 分析可监控数据库中指定时间段内,出现的慢 SQL、高频 SQL 和错误 SQL 情况。

image.png

2.5.3 告警配置

点击【告警配置】->【添加】,可额外设置监控告警选项,同时还可设置告警邮箱,当某项指标超出阈值点时,可将告警信息发送到指定邮箱,便于及时获取系统风险点,并采取应急措施。

若要启用邮件通知,需用管理员用户登录系统,在系统配置中完成系统邮箱的相关配置。若需要启用短信通知,则需要借助 WEB-INF/lib/demsdk.jar 文件,实现 com.dameng.dem.server.util.IPhoneNotify 接口,将依赖包及实现类打包放入到 WEB-INF/lib 下,重启 web 容器,并在系统配置中完成短信通知的相关配置即可。

本模块可根据系统具体要求添加告警,并设置告警策略。

image.png

邮件和短信提醒可以在系统管理系统配置中进行设置。

image.png

2.5.4 注意事项
  1. DEM 和 dmagent 版本需要保持一致,且两端系统时间也应一致,否则会出现无法显示主机信息等情况。
  2. 在生产环境中,建议不要使用 SYSDBA 用户连接,建议创建独立的 DEM 用户,给予相应表和视图的查询权限,并限制最大会话数和会话空闲期。监控用户不要配置 any 等过大权限。以 test 用户为例:
--授予DEM监控数据库最小连接权限:
create user "TEST" identified by "******" limit session_per_user 50, connect_idle_time 10;
grant "PUBLIC" to "TEST";
grant SELECT TABLE,SELECT VIEW,SELECT SEQUENCE to "TEST";
  1. 生产环境中建议根据实际情况进行监控项配置。数据库死锁、数据库事件、高频 SQL、出错 SQL、慢 SQL、表空间、用户锁等信息,请按需求进行监控设置。
  2. 历史数据清除。DEM 在运行一段时间后会产生历史数据,会占用磁盘空间,可通过以下两种方法可以定时清理历史数据,达到释放空间的效果。

方式一:通过 Web 页面进行设置定时清理。

image.png

方式二:通过设置数据库定时任务,定时清理历史数据。

在这里插入图片描述

image.png

相关定时任务 SQL 语句如下:

call SP_CREATE_JOB('DEL_DEM_HIS',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('DEL_DEM_HIS');
call SP_JOB_SET_EP_SEQNO('DEL_DEM_HIS', 0);
call SP_ADD_JOB_STEP('DEL_DEM_HIS', 'DEL_DEM_HIS', 0, 'truncate table "DEM"."DMA_DATABASE_SQL_COUNT";
truncate table "DEM"."DMA_DATABASE_SQL_COUNT_SQL_TEXT";
truncate table "DEM"."DMA_DATABASE_SESSION";
truncate table "DEM"."DMA_DATABASE_SQL_ERR";
truncate table "DEM"."DMA_DATABASE_SQL_SLOW";
truncate table "DEM"."DMA_DATABASE_USER";
truncate table "DEM"."DMA_MAINFRAME_DISK";', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('DEL_DEM_HIS', 'DEL_DEM_HIS', 1, 2, 1, 1, 0, '01:00:00', NULL, '2022-03-04 15:56:01', NULL, '');
call SP_JOB_CONFIG_COMMIT('DEL_DEM_HIS');

三、达梦 SQL 日志分析工具 DMLOG

3.1 工具介绍

实例级 SQL 日志分析工具,DMLOG 工具是一款简单易用的达梦数据库 SQL 日志分析工具,通过分析数据库的 SQL 日志文件(达梦数据库可通过开启 SVR_LOG 捕捉数据库中运行的所有 SQL,并生成 SQL 日志文件),来统计日志中最长执行时间和执行最高频次的 SQL 语句,直观地反映 SQL 执行情况,对于 SQL 的优化工作提供了极大的便利。

DMLOG 工具可实现如下功能:

  • 达梦数据库 SQL 日志分析功能,统计分析日志并根据执行时间和执行频次进行排序,生成 excel 文档。
  • 支持生成 echart 散点图,每个点上的 sql 可以显示和拷贝。
  • 支持生成 sql 统计图,根据执行次数和执行时间统计。

3.2 适用范围

  • DMLOG 工具不受操作系统平台限制,大小不超过 10M,在安装好 Java 环境后,可在各平台运行。
  • DMLOG 工具适用于各种版本的 DM7 数据库和 DM8 数据库。

3.3 工具下载

DMLOG 工具可自行在 在线服务平台 VIP 专区 下载或联系达梦技术服务人员获取。

3.4 工具使用

3.4.1 使用条件与限制
  1. 运行环境需预先安装 Java 环境,DMLOG 支持在 Liunx 和 Windows 系统运行。推荐使用 java1.8 版本,linux 最小化安装最少要安装打印服务组件,windows 下不支持 java1.6 版本。
  2. SQL 日志格式要求确保每条语句后紧跟 sql 语句时间,因此需确认日志生成的数据库的 sql trace 参数,建议使用默认参数。
  3. 由于程序运行需要在后台数据库建 log_commit 表,建表前会删除同名表,因此如果有同名表,请先做好备份。
  4. 待分析的 SQL 文件夹中请保证只有 SQL 日志,无其他文件。
  5. dmlog.properties 配置文件中 log 路径,注意 windows 下,使用”\”代替”\”、
  6. 由于一页 excel 最大行数为 65536,因此当待分析的日志量较大时,会提示超过限值警告,只取前 65535 记录。此时可以将日志切割或分批进行分析,或者分析执行时间比较长和执行时间比较高的 SQL,也可以不使用替换参数功能,减少输出结果。

警告

本工具只能在测试环境进行分析,切忌连接生产环境!!!

3.4.2 使用前准备

使用前需检查 Java 安装情况。

[root@localhost DMLOG8.3]# su - dmdba
Last login: Tue Oct 12 11:20:08 CST 2021 on pts/1
[dmdba@localhost ~]$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
3.4.3 使用方法和步骤
  1. 解压工具包并配置工具参数。
[root@localhost /]# unzip DMLOG8.*.zip
[root@localhost /]# cd DMLOG8.*/ 
[root@localhost DMLOG8.10]# vi dmlog.properties

注意

Windows 环境下,dmlog.properties 配置文件中 log 路径 sqlpath 参数,需使用”\”代替”\”,liunx 下填写正常路径即可。

image.png

  1. 执行 jar 包命令。
[root@localhost DMLOG8.10]# java -jar Dmlog_DM_8.10.jar

运行过程如下图所示,执行完成后会按当前时间生成对应 RESULT_$DATE 文件夹,并将所有统计信息都存放该目录中。

image.png

image.png

3.4.4 结果解读

生成的 RESULT_$DATE 结果文件夹下有根据配置的执行时间和执行次数上限值命名的 excel 文件(xls)、报错的 SQL 文件(txt)、长度超过 30000 的 SQL 文件 (txt),echart 散点图及 90% 平均次数和平均耗时的 SQL 统计图 (html)。

image.png

  1. more_than_0_ms_log_result.xls 工作表按照最大执行时间降序排序,如下图。

image.png

  1. more_than_0_times_log_result.xls 工作表按照执行次数降序排序,如下图。

image.png

  1. echarts_scatter_loading10.html 为 echart 散点图每个点的 SQL 信息可以显示和拷贝,如下图。

image.png

散点图支持以下功能:

(1)筛选 SEL/DDL/INS/CAL 等分类,只用点击去除或者选择对应类别,即可显示对应 sql 在图形上分布点;

(2)支持散点图区域放大功能,鼠标指定位置,进行滚轮缩放,可放大语句。

(3)点击每个点,可获得每个点的 SQL 详细信息。

(4)点击散点图右上角可以保存图片。

  1. echarts_scatter_Statistics.html 为散点图基础上生成的按照执行 90% 平均次数和平均耗时的 SQL 统计图。

image.png

  1. echarts_qps.html 为 QPS(Queries-per-second,即每秒查询率,在数据库中指每秒执行查询 sql 的次数)折线图。

image.png

四、开源性能监控工具 NMON(Linux)

4.1 工具介绍

nmon 是一种在 AIX 与各种 Linux 操作系统上广泛使用的监控与分析工具。相对于其它系统资源监控工具来说,nmon 所记录的信息较为全面,它能在系统运行过程中实时地捕捉系统资源使用情况,输出结果文件,并通过 nmon_analyzer 工具产生数据文件与图形化结果。一般 nmon 监控系统资源包括 cpu 占用率、内存使用情况、磁盘 I/O 速度、传输和读写比率、文件系统的使用率、网络 I/O 速度、传输和读写比率、错误统计率与传输包的大小、消耗资源最多的进程、计算机详细信息和资源等相关信息。

4.2 适用范围

该工具适用监控 Linux 系统资源使用情况。

4.3 工具下载

NMON 和 nmon_analyser 工具可在 NMON 官网下载。

4.4 NMON 部署

  1. 将 nmon 文件上传至 /home/dmdba/dm/dmdbms/tool 目录下,然后执行 ./nmon,出现以下界面说明当前环境可以正常运行。

image.png

  1. 设定定时计划实时监控系统资源。
##使用 root 用户执行
crontab -e

##添加以下脚本内容,实时监控系统资源并生成 NMON 日志文件。-s20 表示 20s 采集一次,-c4320 表示一天 24 小时采集 4320 次
0 0 * * * /home/dmdba/dm/dmdbms/tool/nmon -s20 -c4320 -fT -m /home/dmdba/dm/nmon_log > /dev/null 2>&1

##添加以下脚本内容,设定定时删除计划,保留某时间段内的日志,防止空间占满。+365 为保留时间,日志具保存时长,需根据系统实际情况而定
0 0 * * * find /home/dmdba/dm/nmon_log  -type f -mtime +365 -exec rm -f {} \;

4.5 工具使用

4.5.1 NMON 日志分析

NMON 工具部署完成后,即可对系统状态进行监控,生成监控日志文件。NMON_ANALYZER 工具通过 excel 的宏命令分析加载生成 excel 图表,展示资源占用的各项信息。使用过程中可通过图表信息直观地查看系统资源使用情况。

使用方法:打开 nmon analyser v66.xlsm,使用 analyze nmon data 打开所需要分析的 nmon 日志文件,分析完成后保存成 excel 文件,即可查询系统资源的图表信息。

image.png

4.5.2 结果解读

以下提供某系统中 NMON 监控一段时间后,利用 NMON_ANALYZER 工具分析生成的 Excel 报表,详细介绍该报表中多个子表的含义,以供参考。

1. 系统资源使用汇总

SYS_SUMM 子表显示了系统资源的总体使用情况,页面主要信息如下:

左纵轴为系统 cpu(user%+sys%)使用率,横轴为运行时长,右纵轴为系统磁盘传输(Disk xfers),蓝线表示系统 cpu 使用情况,粉红线表示系统 I/O 情况。坐标左下侧为统计信息,涉及系统 I/O 情况(一个采集间隔内的平均值、最大值、出现最大值的时间),系统 CPU 使用情况等。

image.png

2. 系统信息

AAA 子表显示了系统基本信息,主要包括:执行命令,主机 CPU 数,操作系统内核版本信息,主机名等内容。

在这里插入图片描述

3. 磁盘信息汇总

DISK_SUMM 子表为系统磁盘信息汇总。主要包含以下内容:

(1)Disk total KB/s 表示执行间隔时间列表;

(2)Disk Read KB/s 表示采集间隔内磁盘设备的读速率;

(3)Disk Write KB/s 表示采集间隔内磁盘设备的写速率;

(4)IO/sec 表示采集间隔内磁盘整体平均每秒 IO 数。

image.pngimage.png

4. CPU 整体情况

CPU_ALL 子表为 CPU 整体情况的统计。主要包含以下内容:

(1)CPU Total:执行间隔时间列表;

(2)User%:采集间隔内所有 CPU 在 User Mode 下的 Time 占比(Avg、Max);

(3)Sys%:采集间隔内所有 CPU 在 System Mode 下的 Time 占比(Avg、Max);

(4)Wait%:采集间隔内所有 CPU 处于空闲且等待 I/O 完成的时间比例(Avg、Max);

(5)Idel%:采集间隔内所有 CPU 处于空闲 Time 的占比(Avg、Max),此值和 User%,Sys%,Wait% 及 Steal% 之和等于 1;

(6)CPU%:CPU 总体占用情况,这个值通常等于 User%+Sys%;

(7)CPUs:操作系统的 CPU 核数。

image.png

5. 内存情况

MEM 子表统计了系统的内存使用情况。主要包含以下内容:

(1)memtotal:物理内存总大小,单位 MB;

(2)swaptotal:虚拟内存(即交换空间)的总大小;

(3)memfree:剩余物理内存大小;

(4)swapfree:剩余虚拟内存大小;

(5)cached:物理内存中被 cache 占用的缓存大小;

(6)active:在活跃使用中的内存大小;

(7)buffers:文件系统缓冲区的大小;

(8)swapcached:虚拟内存中被 cache 占用的缓存大小;

(9)inactive:不常使用的内存大小。

在这里插入图片描述

6. 系统网络情况

NET/NETPACKET 子表为系统网络情况汇总。反映系统的网络运行情况,系统各个网络适配器读写的数据包数;NET 页面显示系统中每个网络适配器的数据传输速率(千字节/秒)。

image.png

image.png

7. 磁盘繁忙度

DISKBUSY 子表显示了系统磁盘繁忙度信息。

(1)正常情况,如下图所示:

image.png

图中 dm2 对应磁盘 dbdata,dm1 对应 dbarch,dm0 对应 dbbak,从中我们可以看出在下班时间段,磁盘 IO 波动较大,但多数时间仍有空闲,上班时间段时磁盘 IO 几乎保持为 100% 繁忙状态,说明业务本身对数据库的读写压力就比较大。

(2)异常情况,如下图所示:

image.png

图中从 10 点 25 分开始,IO 繁忙度持续保持为 100% 状态,长时间的满繁忙度,会导致数据库读写变慢,阻塞应用的读写操作,使得应用读写变慢,从而导致相关问题;这种情况需要对应用业务和数据库的事务进行分析,也需要结合磁盘的读写速度进行分析,可能是磁盘读写性能下降导致此类问题,也可能是异常事务或者新上的业务导致数据库的读写压力过大。

五、开源运维监控工具 Prometheus

5.1 工具介绍

Prometheus 是由 SoundCloud 开发的开源监控报警系统和时序列数据库 (TSDB)。Prometheus 使用 Go 语言开发,是 Google BorgMon 监控系统的开源版本。Prometheus 的基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,任意组件只要提供对应的 HTTP 接口就可以接入监控。

Prometheus 适用于记录文本格式的时间序列,它既适用于以机器为中心的监控,也适用于高度动态的面向服务架构的监控。Prometheus 是专为提高系统可靠性而设计的,它可以在断电期间快速诊断问题,每个 Prometheus Server 都是相互独立的,不依赖于网络存储或其他远程服务。

DEM 为 Prometheus 提供了数据收集功能,通过在 dem 中配置监控资源,便可以生成 metrics 数据,供 Prometheus 平台使用。

5.2 适用范围

Prometheus 工具适用于监控 DM7 数据库和 DM8 数据库。

5.3 工具下载与安装

Prometheus 软件下载与安装详细内容见 Prometheus 官网

5.4 Prometheus 连接 DEM

DEM 为 Prometheus 提供了数据收集功能,通过在 dem 中配置监控资源,便可以生成 metrics 数据,供 Prometheus 平台使用。使用方法如下:

  1. 安装 DEM。DEM 部署详细步骤见 2.4 节 DEM 部署。
  2. 从 DEM-> 系统管理-> 其他功能->prometheus_metric_nodes,设置需要推送的数据库实例监控信息。
  3. 配置 prometheus.yml 文件,去 dem/metrics 获取监控数据,如下:
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
    - targets: ['192.168.142.217:9100']
      labels:
         group: 'client-node-exporter'
    - targets: ['192.168.142.217:9161']
      labels:
         group: 'dmdb-node-exporter'
  - job_name: 'dem'
    metrics_path: '/dem/metrics'
    static_configs:
    - targets: ['192.168.142.241:8080']
  1. Prometheus 获取到对应信息。

image.png

  1. 查看 Prometheus 获取到的数据,可以通过 console 来获取到 PromQL 查询语句。

image.png


links:
https://eco.dameng.com/document/dm/zh-cn/ops/tool-monitor

<think>我们正在处理关于Prometheus监控DISKBUSY的问题。根据用户需求,需要配置和使用DISKBUSY监控指标。首先,我们需要理解DISKBUSY是什么。在操作系统监控中,DISKBUSY通常表示磁盘的繁忙程度(使用率),即磁盘处于活动状态的时间百分比。在Prometheus中,我们通常使用node_exporter来收集主机指标,但node_exporter默认不直接提供名为"DISKBUSY"的指标。不过,我们可以通过已有的指标计算磁盘繁忙程度。常用的与磁盘相关的指标有:-node_disk_io_time_seconds_total:磁盘花费在I/O操作上的累计时间(秒)-node_disk_io_time_weighted_seconds_total:加权I/O时间(类似于平均队列长度乘以时间)但是,要计算磁盘繁忙百分比,我们可以使用`node_disk_io_time_seconds_total`指标。该指标记录了每个磁盘设备在I/O操作上花费的总时间(以秒为单位)。我们可以通过计算该指标在单位时间内的增量,然后除以时间间隔,从而得到在该时间间隔内磁盘处于繁忙状态的时间比例。公式:$$\text{DISKBUSY}=\frac{\Delta(\text{node\_disk\_io\_time\_seconds\_total})}{\text{时间间隔(秒)}}\times100\%$$其中,$\Delta$表示在时间间隔内的增量。因此,在Prometheus中我们可以这样写查询表达式(例如每5分钟磁盘繁忙百分比):```(rate(node_disk_io_time_seconds_total[5m])*100)```注意:`rate`函数计算的是每秒的速率,所以乘以100就得到百分比。但是,由于`node_disk_io_time_seconds_total`是多个设备的计数器,我们可能需要按设备进行区分。示例查询(针对特定设备,如sda):```(rate(node_disk_io_time_seconds_total{device="sda"}[5m])*100)```如果我们想要所有设备的总体繁忙程度,可以不加设备过滤。然而,需要注意的是,在有多块磁盘的情况下,我们可能希望分别查看每块磁盘的情况,或者计算所有磁盘的平均值等。配置步骤:1.确保已经安装并运行了node_exporter,并且Prometheus已经配置了抓取node_exporter的job。2.在Prometheus的配置文件中,应该已经包含了类似以下的job配置(如果没有,请添加):```yamlscrape_configs:-job_name:'node'static_configs:-targets:['node_exporter_ip:9100']```3.启动或重新加载Prometheus配置。4.使用上述PromQL表达式在Prometheus的Web界面中查询,或者配置到Grafana中展示。另外,我们也可以使用`irate`函数代替`rate`,`irate`计算的是瞬时速率,对短期变化更敏感。但是,用户可能需要一个直接的DISKBUSY指标,我们可以通过记录规则来预先计算并存储这个指标。创建记录规则(在Prometheus的规则文件中):```yamlgroups:-name:disk_busy_rulesrules:-record:instance:node_disk_busy:percentexpr:rate(node_disk_io_time_seconds_total[5m])*100labels:metric_type:disk_busy```这样,我们就可以直接使用`instance:node_disk_busy:percent`这个指标名来获取磁盘繁忙百分比。注意:记录规则中的时间窗口(这里是5m)可以根据实际需要调整。另外,node_exporter的指标名称和标签可能因版本而异,请根据实际情况调整。如果用户使用的是Windows系统,则可能需要使用wmi_exporter,对应的指标可能不同。但问题中未明确,我们默认使用node_exporter(Linux)。总结:在Prometheus中配置DISKBUSY监控,主要是通过node_exporter的`node_disk_io_time_seconds_total`指标,然后利用PromQL计算得出。相关问题:1.如何安装和配置node_exporter?2.如何验证Prometheus是否正确抓取了node_exporter的指标?3.除了磁盘繁忙程度,还有哪些重要的磁盘监控指标?4.如何将磁盘繁忙指标展示在Grafana中?</think>### Prometheus 中配置 DISKBUSY 监控指标指南 在 Prometheus监控磁盘繁忙度(DISKBUSY)主要通过以下步骤实现: #### 1. **部署 node_exporter** - 在目标服务器安装 [node_exporter](https://github.com/prometheus/node_exporter),这是采集主机指标的标准工具: ```bash # 下载并解压 wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz tar xvfz node_exporter-*.tar.gz cd node_exporter-* # 启动服务 ./node_exporter ``` - 默认监听端口 `9100`,提供 `/metrics` 端点。 #### 2. **配置 Prometheus 抓取任务** 修改 `prometheus.yml` 添加抓取配置: ```yaml scrape_configs: - job_name: 'node' static_configs: - targets: ['192.168.1.100:9100'] # 替换为实际 node_exporter IP ``` 重启 Prometheus 使配置生效。 #### 3. **使用 DISKBUSY 相关指标** node_exporter 提供以下关键磁盘指标: - **磁盘利用率(繁忙百分比)**: ```promql 100 * rate(node_disk_io_time_seconds_total{device="sda"}[5m]) ``` `sda` 需替换为实际磁盘设备名,结果表示过去 5 分钟磁盘繁忙时间占比。 - **加权 I/O 时间**(反映队列负载): ```promql rate(node_disk_io_time_weighted_seconds_total[5m]) ``` #### 4. **配置告警规则** 在 Prometheus 规则文件(如 `rules.yml`)中添加: ```yaml groups: - name: disk_alerts rules: - alert: HighDiskBusy expr: 100 * rate(node_disk_io_time_seconds_total{device=~"sd.*|nvme.*"}[5m]) > 90 for: 10m labels: severity: critical annotations: summary: "磁盘 {{ $labels.device }} 繁忙度超过 90% (当前值: {{ $value }}%)" ``` 当磁盘繁忙度持续 10 分钟 >90% 时触发告警。 #### 5. **Grafana 可视化** 导入官方 [Node Exporter Dashboard](https://grafana.com/grafana/dashboards/1860): - 包含 **Disk Busy%** 面板 - 直接使用查询: ```promql 100 * rate(node_disk_io_time_seconds_total{instance=~"$node", device=~"$disk"}[$interval]) ``` > **关键说明**: > 1. `node_disk_io_time_seconds_total` 本质是磁盘处理 I/O 的累计时间(秒),通过 `rate()` 计算时间窗口内的繁忙比例。 > 2. 不同操作系统设备名不同(Linux: `sda`, `nvme0n1`;Windows 需用 `wmi_exporter`)。 > 3. 建议结合 `node_disk_read_time_seconds_total` 和 `node_disk_write_time_seconds_total` 分析读写占比。 [^1] --- ### 相关问题 1. 如何区分物理磁盘和逻辑卷的 DISKBUSY 监控? 2. 当 `node_disk_io_time_seconds_total` 指标缺失时如何排查? 3. 如何优化 Prometheus 的磁盘指标采集频率以平衡性能? 4. DISKBUSY 与磁盘 I/O 等待时间(await)有何区别?如何关联分析? [^1]: 达梦数据库DM8教程运维监控工具DEMDMLOG日志工具NMONPrometheus)。Prometheus 适用于记录文本格式的时间序列,它既适用于以机器为中心的监控,也适用于高度动态的面向服务架构的监控Prometheus 是专为提高系统可靠性而设计的,它可以在断电期间快速诊断问题,每个 Prometheus Server 都是相互独立的,不依赖于网络存储或其他远程服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学亮编程手记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值