本文档详细介绍DM数据库监控系统搭建的方法和技巧,包括监控概念、监控类型、监控的重要性、监控规划、监控工具、监控最佳实践、监控实施、监控配置、监控维护等内容,风哥教程参考DM官方文档《DM8监控指南》手册,适合DBA人员进行DM数据库的监控工作。
Part01-基础概念与理论知识
1.1 DM数据库监控概念
DM数据库监控是指对数据库的运行状态、性能指标、资源使用等进行实时监控和分析,及时发现和解决问题,确保数据库的稳定运行。
监控的目标:
- 实时监控:实时监控数据库的运行状态
- 性能分析:分析数据库的性能指标
- 问题发现:及时发现数据库的问题
- 趋势分析:分析数据库的发展趋势
1.2 DM数据库监控类型
DM数据库监控类型:
# 监控类型
#
# 1. 状态监控
– 定义:监控数据库的运行状态
– 监控内容:数据库状态、实例状态、会话状态等
– 优势:及时了解数据库的运行状态
– 劣势:无法深入分析性能问题
– 适用场景:日常监控
#
# 2. 性能监控
– 定义:监控数据库的性能指标
– 监控内容:CPU使用率、内存使用率、磁盘IO、网络IO等
– 优势:深入分析性能问题
– 劣势:需要一定的技术基础
– 适用场景:性能优化
#
# 3. 资源监控
– 定义:监控数据库的资源使用情况
– 监控内容:CPU、内存、磁盘、网络等资源
– 优势:全面了解资源使用情况
– 劣势:无法直接反映数据库性能
– 适用场景:资源管理
#
# 4. 业务监控
– 定义:监控数据库的业务指标
– 监控内容:业务量、响应时间、错误率等
– 优势:直接反映业务情况
– 劣势:需要与业务系统结合
– 适用场景:业务运维
#
# 5. 日志监控
– 定义:监控数据库的日志信息
– 监控内容:错误日志、警告日志、审计日志等
– 优势:及时发现问题和异常
– 劣势:日志量大,分析复杂
– 适用场景:问题诊断
#
# 1. 状态监控
– 定义:监控数据库的运行状态
– 监控内容:数据库状态、实例状态、会话状态等
– 优势:及时了解数据库的运行状态
– 劣势:无法深入分析性能问题
– 适用场景:日常监控
#
# 2. 性能监控
– 定义:监控数据库的性能指标
– 监控内容:CPU使用率、内存使用率、磁盘IO、网络IO等
– 优势:深入分析性能问题
– 劣势:需要一定的技术基础
– 适用场景:性能优化
#
# 3. 资源监控
– 定义:监控数据库的资源使用情况
– 监控内容:CPU、内存、磁盘、网络等资源
– 优势:全面了解资源使用情况
– 劣势:无法直接反映数据库性能
– 适用场景:资源管理
#
# 4. 业务监控
– 定义:监控数据库的业务指标
– 监控内容:业务量、响应时间、错误率等
– 优势:直接反映业务情况
– 劣势:需要与业务系统结合
– 适用场景:业务运维
#
# 5. 日志监控
– 定义:监控数据库的日志信息
– 监控内容:错误日志、警告日志、审计日志等
– 优势:及时发现问题和异常
– 劣势:日志量大,分析复杂
– 适用场景:问题诊断
1.3 DM数据库监控的重要性
风哥提示:
DM数据库监控的重要性:
- 实时监控:实时监控数据库的运行状态,及时发现和解决问题
- 性能优化:通过监控分析性能瓶颈,优化数据库性能
- 问题预防:通过监控预测潜在问题,提前预防
- 容量规划:通过监控分析资源使用情况,进行容量规划
- 决策支持:通过监控提供数据支持,辅助决策
- 合规要求:满足行业和法规的合规性要求
- 成本优化:通过监控优化资源使用,降低成本
- 服务质量:提高数据库服务质量,提升用户体验
风哥提示:数据库监控是数据库运维的重要组成部分,通过有效的监控,可以实时了解数据库的运行状态,及时发现和解决问题,确保数据库的稳定运行。
Part02-生产环境规划与建议
2.1 DM数据库监控规划
生产环境DM数据库监控规划:
# 监控规划
#
# 1. 监控需求分析
– 业务需求:根据业务特点确定监控需求
– 技术需求:根据技术要求确定监控方案
– 时间要求:确定监控的时间要求
– 成本预算:确定监控的预算
#
# 2. 监控目标设定
– 实时性:确定监控的实时性要求
– 准确性:确定监控的准确性要求
– 完整性:确定监控的完整性要求
– 可用性:确定监控的可用性要求
#
# 3. 监控方案选择 学习交流加群风哥微信: itpux-com
– 状态监控:监控数据库的运行状态
– 性能监控:监控数据库的性能指标
– 资源监控:监控数据库的资源使用
– 业务监控:监控数据库的业务指标
– 日志监控:监控数据库的日志信息
#
# 4. 监控技术选型
– Zabbix:开源监控系统
– Prometheus:开源监控系统
– Grafana:开源可视化工具
– DM自带的监控工具:DM自带的监控工具
#
# 5. 监控资源规划
– 硬件资源:监控服务器、存储、网络等
– 软件资源:监控软件、数据库等
– 人力资源:监控实施和维护人员
– 时间资源:监控实施和维护时间
#
# 6. 监控流程设计
– 监控采集:采集监控数据
– 监控分析:分析监控数据
– 监控告警:发送监控告警
– 监控处理:处理监控告警
#
# 7. 监控风险控制
– 风险识别:识别监控过程中的风险
– 风险评估:评估风险的影响和可能性
– 风险应对:制定风险应对措施
– 应急预案:制定应急预案
#
# 8. 监控文档与培训
– 监控文档:监控方案、操作手册等
– 人员培训:对相关人员进行培训
– 演练计划:定期进行监控演练
#
# 1. 监控需求分析
– 业务需求:根据业务特点确定监控需求
– 技术需求:根据技术要求确定监控方案
– 时间要求:确定监控的时间要求
– 成本预算:确定监控的预算
#
# 2. 监控目标设定
– 实时性:确定监控的实时性要求
– 准确性:确定监控的准确性要求
– 完整性:确定监控的完整性要求
– 可用性:确定监控的可用性要求
#
# 3. 监控方案选择 学习交流加群风哥微信: itpux-com
– 状态监控:监控数据库的运行状态
– 性能监控:监控数据库的性能指标
– 资源监控:监控数据库的资源使用
– 业务监控:监控数据库的业务指标
– 日志监控:监控数据库的日志信息
#
# 4. 监控技术选型
– Zabbix:开源监控系统
– Prometheus:开源监控系统
– Grafana:开源可视化工具
– DM自带的监控工具:DM自带的监控工具
#
# 5. 监控资源规划
– 硬件资源:监控服务器、存储、网络等
– 软件资源:监控软件、数据库等
– 人力资源:监控实施和维护人员
– 时间资源:监控实施和维护时间
#
# 6. 监控流程设计
– 监控采集:采集监控数据
– 监控分析:分析监控数据
– 监控告警:发送监控告警
– 监控处理:处理监控告警
#
# 7. 监控风险控制
– 风险识别:识别监控过程中的风险
– 风险评估:评估风险的影响和可能性
– 风险应对:制定风险应对措施
– 应急预案:制定应急预案
#
# 8. 监控文档与培训
– 监控文档:监控方案、操作手册等
– 人员培训:对相关人员进行培训
– 演练计划:定期进行监控演练
2.2 DM数据库监控工具
DM数据库监控工具:
监控工具类型:
- Zabbix:开源监控系统,功能强大
- Prometheus:开源监控系统,适合云原生环境
- Grafana:开源可视化工具,支持多种数据源
- DM自带的监控工具:DM自带的监控工具,简单易用
学习交流加群风哥QQ113257174
2.3 DM数据库监控最佳实践
DM数据库监控最佳实践:
# 监控最佳实践
#
# 1. 监控准备
– 详细评估:详细评估监控需求
– 工具选择:选择合适的监控工具
– 环境准备:准备监控环境和工具
– 文档准备:准备监控文档
#
# 2. 监控实施
– 分步实施:采用分步实施的策略
– 数据验证:每步完成后验证数据
– 日志记录:详细记录监控过程
– 监控进度:实时监控监控进度
#
# 3. 监控测试
– 全面测试:全面测试监控功能
– 性能测试:测试监控性能
– 功能测试:测试监控功能
– 数据测试:测试监控数据
#
# 4. 监控告警
– 告警配置:配置监控告警
– 告警测试:测试监控告警
– 告警验证:验证监控告警
– 告警优化:优化监控告警
#
# 5. 监控优化
– 性能优化:优化监控性能
– 参数优化:优化监控参数
– 索引优化:优化监控索引
– 查询优化:优化监控查询
#
# 6. 监控维护
– 监控维护:监控监控系统的运行
– 问题处理:及时处理监控问题
– 性能调优:持续优化监控性能
– 文档更新:更新监控文档
#
# 7. 监控管理
– 责任明确:明确监控管理的责任
– 流程规范:建立规范的监控管理流程
– 持续改进:根据实际情况持续改进
– 经验总结:总结监控管理的经验 更多视频教程www.fgedu.net.cn
#
# 1. 监控准备
– 详细评估:详细评估监控需求
– 工具选择:选择合适的监控工具
– 环境准备:准备监控环境和工具
– 文档准备:准备监控文档
#
# 2. 监控实施
– 分步实施:采用分步实施的策略
– 数据验证:每步完成后验证数据
– 日志记录:详细记录监控过程
– 监控进度:实时监控监控进度
#
# 3. 监控测试
– 全面测试:全面测试监控功能
– 性能测试:测试监控性能
– 功能测试:测试监控功能
– 数据测试:测试监控数据
#
# 4. 监控告警
– 告警配置:配置监控告警
– 告警测试:测试监控告警
– 告警验证:验证监控告警
– 告警优化:优化监控告警
#
# 5. 监控优化
– 性能优化:优化监控性能
– 参数优化:优化监控参数
– 索引优化:优化监控索引
– 查询优化:优化监控查询
#
# 6. 监控维护
– 监控维护:监控监控系统的运行
– 问题处理:及时处理监控问题
– 性能调优:持续优化监控性能
– 文档更新:更新监控文档
#
# 7. 监控管理
– 责任明确:明确监控管理的责任
– 流程规范:建立规范的监控管理流程
– 持续改进:根据实际情况持续改进
– 经验总结:总结监控管理的经验 更多视频教程www.fgedu.net.cn
Part03-生产环境项目实施方案
3.1 DM数据库监控实施
3.1.1 Zabbix监控实施
# Zabbix监控实施
#
# 1. 环境准备
##
# 监控服务器环境
– 主机名:fgedu-zabbix
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 数据库:MySQL 8.0
##
# 被监控服务器环境
– 主机名:fgedu-db
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 数据库:DM8
#
# 2. 安装Zabbix服务器
##
# 安装Zabbix仓库
$ rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
$ yum clean all
##
# 安装Zabbix服务器
$ yum install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-sender
zabbix-agent -y
##
# 安装MySQL数据库
$ yum install mysql-server -y
$ systemctl start mysqld
$ systemctl enable mysqld
##
# 创建Zabbix数据库
$ mysql -u root -p
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@fgedu.localhost identified by ‘Zabbix123’;
mysql> grant all privileges on zabbix.* to zabbix@fgedu.localhost;
mysql> flush privileges;
mysql> exit;
##
# 导入Zabbix数据库
$ zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql –default-character-set=utf8mb4 -uzabbix -p
zabbix
##
# 配置Zabbix服务器
$ vi /etc/zabbix/zabbix_server.conf 更多学习教程公众号风哥教程itpux_com
DBHost=fgedu.localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix123
##
# 启动Zabbix服务器
$ systemctl start zabbix-server
$ systemctl enable zabbix-server
$ systemctl start httpd
$ systemctl enable httpd
$ systemctl start zabbix-agent
$ systemctl enable zabbix-agent
##
# 访问Zabbix Web界面
http://192.168.1.100/zabbix
# 默认用户名:Admin
# 默认密码:zabbix
#
# 3. 安装Zabbix Agent
##
# 安装Zabbix Agent
$ yum install zabbix-agent -y
##
# 配置Zabbix Agent
$ vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=fgedu-db
##
# 启动Zabbix Agent
$ systemctl start zabbix-agent
$ systemctl enable zabbix-agent
#
# 4. 配置DM数据库监控
##
# 创建监控用户
$ disql SYSDBA/SYSDBA
SQL> create user zabbix identified by “Zabbix123”; from DB视频:www.itpux.com
SQL> grant resource, public, vt_i to zabbix;
##
# 创建监控脚本
#!/bin/bash
# dm_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
case $1 in
status)
disql zabbix/Zabbix123 << EOF set echo off set heading off select status from v\$instance; EOF ;; sessions) disql zabbix/Zabbix123 << EOF set echo off set heading off select count(*) from v\$sessions; EOF ;; cpu) disql zabbix/Zabbix123 << EOF set echo off set heading off select value from v\$sysstat where name='CPU TIME' ; EOF ;; memory) disql zabbix/Zabbix123 << EOF set echo off set heading off select value from v\$sysstat where name='MEMORY USAGE' ; EOF ;; *) echo "Usage: $0 {status|sessions|cpu|memory}" exit 1 esac ## # 配置Zabbix Agent自定义监控 $ vi /etc/zabbix/zabbix_agentd.conf UserParameter=dm.status[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.sessions[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.cpu[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.memory[*],/dm/scripts/dm_monitor.sh $1 ## # 重启Zabbix Agent $ systemctl restart zabbix-agent ## 5. 配置Zabbix监控项 ### 添加主机 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - 创建主机 # 步骤2:主机名称:fgedu-db # 步骤3:可见名称:fgedu-db # 步骤4:群组:Linux servers # 步骤5:IP地址:192.168.1.200 # 步骤6:端口:10050 # 步骤7:添加 - 完成 ## # 添加监控项 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - fgedu-db - 监控项 - 创建监控项 # 步骤2:名称:DM数据库状态 # 步骤3:键值:dm.status # 步骤4:信息类型:文本 # 步骤5:更新间隔:1m # 步骤6:添加 - 完成 ### 添加触发器 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - fgedu-db - 触发器 - 创建触发器 # 步骤2:名称:DM数据库状态异常 # 步骤3:表达式:last(/fgedu-db/dm.status)<>OPEN
# 步骤4:严重性:严重
# 步骤5:添加 – 完成
##
# 添加图形
# Zabbix Web界面操作:
# 步骤1:配置 – 主机 – fgedu-db – 图形 – 创建图形
# 步骤2:名称:DM数据库监控
# 步骤3:监控项:DM数据库状态、会话数、CPU使用率、内存使用率
# 步骤4:添加 – 完成
#
# 6. 验证监控
##
# 查看监控数据
# Zabbix Web界面操作:
# 监控 – 最新数据 – fgedu-db
##
# 查看监控图形
# Zabbix Web界面操作:
# 监控 – 图形 – fgedu-db – DM数据库监控
##
# 测试告警
# Zabbix Web界面操作:
# 停止DM数据库服务
# 查看告警信息
# 启动DM数据库服务
#
# 1. 环境准备
##
# 监控服务器环境
– 主机名:fgedu-zabbix
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 数据库:MySQL 8.0
##
# 被监控服务器环境
– 主机名:fgedu-db
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 数据库:DM8
#
# 2. 安装Zabbix服务器
##
# 安装Zabbix仓库
$ rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
$ yum clean all
##
# 安装Zabbix服务器
$ yum install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-sender
zabbix-agent -y
##
# 安装MySQL数据库
$ yum install mysql-server -y
$ systemctl start mysqld
$ systemctl enable mysqld
##
# 创建Zabbix数据库
$ mysql -u root -p
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@fgedu.localhost identified by ‘Zabbix123’;
mysql> grant all privileges on zabbix.* to zabbix@fgedu.localhost;
mysql> flush privileges;
mysql> exit;
##
# 导入Zabbix数据库
$ zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql –default-character-set=utf8mb4 -uzabbix -p
zabbix
##
# 配置Zabbix服务器
$ vi /etc/zabbix/zabbix_server.conf 更多学习教程公众号风哥教程itpux_com
DBHost=fgedu.localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix123
##
# 启动Zabbix服务器
$ systemctl start zabbix-server
$ systemctl enable zabbix-server
$ systemctl start httpd
$ systemctl enable httpd
$ systemctl start zabbix-agent
$ systemctl enable zabbix-agent
##
# 访问Zabbix Web界面
http://192.168.1.100/zabbix
# 默认用户名:Admin
# 默认密码:zabbix
#
# 3. 安装Zabbix Agent
##
# 安装Zabbix Agent
$ yum install zabbix-agent -y
##
# 配置Zabbix Agent
$ vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=fgedu-db
##
# 启动Zabbix Agent
$ systemctl start zabbix-agent
$ systemctl enable zabbix-agent
#
# 4. 配置DM数据库监控
##
# 创建监控用户
$ disql SYSDBA/SYSDBA
SQL> create user zabbix identified by “Zabbix123”; from DB视频:www.itpux.com
SQL> grant resource, public, vt_i to zabbix;
##
# 创建监控脚本
#!/bin/bash
# dm_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
case $1 in
status)
disql zabbix/Zabbix123 << EOF set echo off set heading off select status from v\$instance; EOF ;; sessions) disql zabbix/Zabbix123 << EOF set echo off set heading off select count(*) from v\$sessions; EOF ;; cpu) disql zabbix/Zabbix123 << EOF set echo off set heading off select value from v\$sysstat where name='CPU TIME' ; EOF ;; memory) disql zabbix/Zabbix123 << EOF set echo off set heading off select value from v\$sysstat where name='MEMORY USAGE' ; EOF ;; *) echo "Usage: $0 {status|sessions|cpu|memory}" exit 1 esac ## # 配置Zabbix Agent自定义监控 $ vi /etc/zabbix/zabbix_agentd.conf UserParameter=dm.status[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.sessions[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.cpu[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.memory[*],/dm/scripts/dm_monitor.sh $1 ## # 重启Zabbix Agent $ systemctl restart zabbix-agent ## 5. 配置Zabbix监控项 ### 添加主机 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - 创建主机 # 步骤2:主机名称:fgedu-db # 步骤3:可见名称:fgedu-db # 步骤4:群组:Linux servers # 步骤5:IP地址:192.168.1.200 # 步骤6:端口:10050 # 步骤7:添加 - 完成 ## # 添加监控项 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - fgedu-db - 监控项 - 创建监控项 # 步骤2:名称:DM数据库状态 # 步骤3:键值:dm.status # 步骤4:信息类型:文本 # 步骤5:更新间隔:1m # 步骤6:添加 - 完成 ### 添加触发器 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - fgedu-db - 触发器 - 创建触发器 # 步骤2:名称:DM数据库状态异常 # 步骤3:表达式:last(/fgedu-db/dm.status)<>OPEN
# 步骤4:严重性:严重
# 步骤5:添加 – 完成
##
# 添加图形
# Zabbix Web界面操作:
# 步骤1:配置 – 主机 – fgedu-db – 图形 – 创建图形
# 步骤2:名称:DM数据库监控
# 步骤3:监控项:DM数据库状态、会话数、CPU使用率、内存使用率
# 步骤4:添加 – 完成
#
# 6. 验证监控
##
# 查看监控数据
# Zabbix Web界面操作:
# 监控 – 最新数据 – fgedu-db
##
# 查看监控图形
# Zabbix Web界面操作:
# 监控 – 图形 – fgedu-db – DM数据库监控
##
# 测试告警
# Zabbix Web界面操作:
# 停止DM数据库服务
# 查看告警信息
# 启动DM数据库服务
3.1.2 Prometheus监控实施
# Prometheus监控实施
#
# 1. 环境准备
##
# 监控服务器环境
– 主机名:fgedu-prometheus
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
##
# 被监控服务器环境
– 主机名:fgedu-db
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 数据库:DM8
#
# 2. 安装Prometheus
##
# 下载Prometheus
$ cd /tmp
$ wget
https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
$ tar -xzf prometheus-2.45.0.linux-amd64.tar.gz
$ mv prometheus-2.45.0.linux-amd64 /opt/prometheus
##
# 配置Prometheus
$ vi /opt/prometheus/prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
– job_name: ‘dm_database’
static_configs:
– targets: [‘192.168.1.200:9100’]
##
# 创建Prometheus服务
$ vi /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/opt/prometheus/prometheus –config.file=/opt/prometheus/prometheus.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
##
# 启动Prometheus
$ useradd prometheus
$ chown -R prometheus:prometheus /opt/prometheus
$ systemctl daemon-reload
$ systemctl start prometheus
$ systemctl enable prometheus
##
# 访问Prometheus Web界面
http://192.168.1.100:9090
#
# 3. 安装Node Exporter
##
# 下载Node Exporter
$ cd /tmp
$ wget
https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
$ tar -xzf node_exporter-1.6.1.linux-amd64.tar.gz
$ mv node_exporter-1.6.1.linux-amd64 /opt/node_exporter
##
# 创建Node Exporter服务
$ vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
Type=simple
User=node_exporter
ExecStart=/opt/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
##
# 启动Node Exporter
$ useradd node_exporter
$ chown -R node_exporter:node_exporter /opt/node_exporter
$ systemctl daemon-reload
$ systemctl start node_exporter
$ systemctl enable node_exporter
#
# 4. 配置DM数据库监控
##
# 创建监控用户
$ disql SYSDBA/SYSDBA
SQL> create user prometheus identified by “Prometheus123”;
SQL> grant resource, public, vt_i to prometheus;
##
# 创建监控脚本
#!/bin/bash
# dm_exporter.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
# 数据库状态
STATUS=$(disql prometheus/Prometheus123 << EOF set echo off set heading off select status from v\$instance; EOF ) echo "dm_status{$1=\" $1\"} $STATUS" # 会话数 SESSIONS= $(disql prometheus/Prometheus123 << EOF set echo off set heading off select count(*) from v\$sessions; EOF ) echo "dm_sessions{$1=\" $1\"} $SESSIONS" # CPU使用率 CPU= $(disql prometheus/Prometheus123 << EOF set echo off set heading off select value from v\$sysstat where name='CPU TIME' ; EOF ) echo "dm_cpu{$1=\" $1\"} $CPU" # 内存使用率 MEMORY=$(disql prometheus/Prometheus123 << EOF set echo off set heading off select value from v\$sysstat where name='MEMORY USAGE' ; EOF ) echo "dm_memory{$1=\" $1\"} $MEMORY" ## # 创建DM Exporter服务 $ vi /etc/systemd/system/dm_exporter.service [Unit] Description=DM Exporter After=network.target [Service] Type=simple User=prometheus ExecStart=/dm/scripts/dm_exporter.sh Restart=on-failure [Install] WantedBy=multi-user.target ## # 启动DM Exporter $ systemctl daemon-reload $ systemctl start dm_exporter $ systemctl enable dm_exporter ## 5. 安装Grafana ## # 下载Grafana $ cd /tmp $ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-10.2.2-1.x86_64.rpm $ yum install grafana-enterprise-10.2.2-1.x86_64.rpm -y ## # 启动Grafana $ systemctl start grafana-server $ systemctl enable grafana-server ### 访问Grafana Web界面 http://192.168.1.100:3000 # 默认用户名:admin # 默认密码:admin ## # 配置Grafana数据源 # Grafana Web界面操作: # 步骤1:Configuration - Data Sources - Add data source # 步骤2:选择Prometheus # 步骤3:URL:http://192.168.1.100:9090 # 步骤4:Save & Test ### 配置Grafana仪表板 # Grafana Web界面操作: # 步骤1:Dashboards - New dashboard # 步骤2:Add visualization # 步骤3:选择Prometheus数据源 # 步骤4:配置查询 # 步骤5:保存仪表板 # # 6. 验证监控 ### 查看Prometheus数据 # Prometheus Web界面操作: # http://192.168.1.100:9090 # 查询:dm_status ## # 查看Grafana仪表板 # Grafana Web界面操作: # http://192.168.1.100:3000 # 查看DM数据库监控仪表板
#
# 1. 环境准备
##
# 监控服务器环境
– 主机名:fgedu-prometheus
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
##
# 被监控服务器环境
– 主机名:fgedu-db
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 数据库:DM8
#
# 2. 安装Prometheus
##
# 下载Prometheus
$ cd /tmp
$ wget
https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
$ tar -xzf prometheus-2.45.0.linux-amd64.tar.gz
$ mv prometheus-2.45.0.linux-amd64 /opt/prometheus
##
# 配置Prometheus
$ vi /opt/prometheus/prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
– job_name: ‘dm_database’
static_configs:
– targets: [‘192.168.1.200:9100’]
##
# 创建Prometheus服务
$ vi /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/opt/prometheus/prometheus –config.file=/opt/prometheus/prometheus.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
##
# 启动Prometheus
$ useradd prometheus
$ chown -R prometheus:prometheus /opt/prometheus
$ systemctl daemon-reload
$ systemctl start prometheus
$ systemctl enable prometheus
##
# 访问Prometheus Web界面
http://192.168.1.100:9090
#
# 3. 安装Node Exporter
##
# 下载Node Exporter
$ cd /tmp
$ wget
https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
$ tar -xzf node_exporter-1.6.1.linux-amd64.tar.gz
$ mv node_exporter-1.6.1.linux-amd64 /opt/node_exporter
##
# 创建Node Exporter服务
$ vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
Type=simple
User=node_exporter
ExecStart=/opt/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
##
# 启动Node Exporter
$ useradd node_exporter
$ chown -R node_exporter:node_exporter /opt/node_exporter
$ systemctl daemon-reload
$ systemctl start node_exporter
$ systemctl enable node_exporter
#
# 4. 配置DM数据库监控
##
# 创建监控用户
$ disql SYSDBA/SYSDBA
SQL> create user prometheus identified by “Prometheus123”;
SQL> grant resource, public, vt_i to prometheus;
##
# 创建监控脚本
#!/bin/bash
# dm_exporter.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
# 数据库状态
STATUS=$(disql prometheus/Prometheus123 << EOF set echo off set heading off select status from v\$instance; EOF ) echo "dm_status{$1=\" $1\"} $STATUS" # 会话数 SESSIONS= $(disql prometheus/Prometheus123 << EOF set echo off set heading off select count(*) from v\$sessions; EOF ) echo "dm_sessions{$1=\" $1\"} $SESSIONS" # CPU使用率 CPU= $(disql prometheus/Prometheus123 << EOF set echo off set heading off select value from v\$sysstat where name='CPU TIME' ; EOF ) echo "dm_cpu{$1=\" $1\"} $CPU" # 内存使用率 MEMORY=$(disql prometheus/Prometheus123 << EOF set echo off set heading off select value from v\$sysstat where name='MEMORY USAGE' ; EOF ) echo "dm_memory{$1=\" $1\"} $MEMORY" ## # 创建DM Exporter服务 $ vi /etc/systemd/system/dm_exporter.service [Unit] Description=DM Exporter After=network.target [Service] Type=simple User=prometheus ExecStart=/dm/scripts/dm_exporter.sh Restart=on-failure [Install] WantedBy=multi-user.target ## # 启动DM Exporter $ systemctl daemon-reload $ systemctl start dm_exporter $ systemctl enable dm_exporter ## 5. 安装Grafana ## # 下载Grafana $ cd /tmp $ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-10.2.2-1.x86_64.rpm $ yum install grafana-enterprise-10.2.2-1.x86_64.rpm -y ## # 启动Grafana $ systemctl start grafana-server $ systemctl enable grafana-server ### 访问Grafana Web界面 http://192.168.1.100:3000 # 默认用户名:admin # 默认密码:admin ## # 配置Grafana数据源 # Grafana Web界面操作: # 步骤1:Configuration - Data Sources - Add data source # 步骤2:选择Prometheus # 步骤3:URL:http://192.168.1.100:9090 # 步骤4:Save & Test ### 配置Grafana仪表板 # Grafana Web界面操作: # 步骤1:Dashboards - New dashboard # 步骤2:Add visualization # 步骤3:选择Prometheus数据源 # 步骤4:配置查询 # 步骤5:保存仪表板 # # 6. 验证监控 ### 查看Prometheus数据 # Prometheus Web界面操作: # http://192.168.1.100:9090 # 查询:dm_status ## # 查看Grafana仪表板 # Grafana Web界面操作: # http://192.168.1.100:3000 # 查看DM数据库监控仪表板
3.2 DM数据库监控配置
3.2.1 监控指标配置
# 监控指标配置
#
# 1. 状态监控指标
##
# 数据库状态
– 指标名称:dm_status
– 指标类型:文本
– 指标值:OPEN、MOUNT、SUSPEND
– 更新频率:1分钟
– 告警阈值:状态不等于OPEN
##
# 实例状态
– 指标名称:dm_instance_status
– 指标类型:文本
– 指标值:OPEN、MOUNT、SUSPEND
– 更新频率:1分钟
– 告警阈值:状态不等于OPEN
##
# 会话状态
– 指标名称:dm_session_status
– 指标类型:数值
– 指标值:会话数
– 更新频率:1分钟
– 告警阈值:会话数>1000
#
# 2. 性能监控指标
##
# CPU使用率
– 指标名称:dm_cpu_usage
– 指标类型:百分比
– 指标值:CPU使用率
– 更新频率:1分钟
– 告警阈值:CPU使用率>80%
##
# 内存使用率
– 指标名称:dm_memory_usage
– 指标类型:百分比
– 指标值:内存使用率
– 更新频率:1分钟
– 告警阈值:内存使用率>80%
##
# 磁盘IO
– 指标名称:dm_disk_io
– 指标类型:数值
– 指标值:磁盘IO
– 更新频率:1分钟
– 告警阈值:磁盘IO>10000
##
# 网络IO
– 指标名称:dm_network_io
– 指标类型:数值
– 指标值:网络IO
– 更新频率:1分钟
– 告警阈值:网络IO>10000
#
# 3. 资源监控指标
##
# 表空间使用率
– 指标名称:dm_tablespace_usage
– 指标类型:百分比
– 指标值:表空间使用率
– 更新频率:5分钟
– 告警阈值:表空间使用率>80%
##
# 数据文件大小
– 指标名称:dm_datafile_size
– 指标类型:数值
– 指标值:数据文件大小
– 更新频率:5分钟
– 告警阈值:数据文件大小>100GB
##
# 日志文件大小
– 指标名称:dm_logfile_size
– 指标类型:数值
– 指标值:日志文件大小
– 更新频率:5分钟
– 告警阈值:日志文件大小>10GB
#
# 4. 业务监控指标
##
# 业务量
– 指标名称:dm_business_volume
– 指标类型:数值
– 指标值:业务量
– 更新频率:1分钟
– 告警阈值:业务量>10000
##
# 响应时间
– 指标名称:dm_response_time
– 指标类型:数值
– 指标值:响应时间
– 更新频率:1分钟
– 告警阈值:响应时间>1秒
##
# 错误率
– 指标名称:dm_error_rate
– 指标类型:百分比
– 指标值:错误率
– 更新频率:1分钟
– 告警阈值:错误率>1%
#
# 5. 日志监控指标
##
# 错误日志
– 指标名称:dm_error_log
– 指标类型:文本
– 指标值:错误日志
– 更新频率:1分钟
– 告警阈值:错误日志不为空
##
# 警告日志
– 指标名称:dm_warning_log
– 指标类型:文本
– 指标值:警告日志
– 更新频率:1分钟
– 告警阈值:警告日志不为空
##
# 审计日志
– 指标名称:dm_audit_log
– 指标类型:文本
– 指标值:审计日志
– 更新频率:1分钟
– 告警阈值:审计日志不为空
#
# 1. 状态监控指标
##
# 数据库状态
– 指标名称:dm_status
– 指标类型:文本
– 指标值:OPEN、MOUNT、SUSPEND
– 更新频率:1分钟
– 告警阈值:状态不等于OPEN
##
# 实例状态
– 指标名称:dm_instance_status
– 指标类型:文本
– 指标值:OPEN、MOUNT、SUSPEND
– 更新频率:1分钟
– 告警阈值:状态不等于OPEN
##
# 会话状态
– 指标名称:dm_session_status
– 指标类型:数值
– 指标值:会话数
– 更新频率:1分钟
– 告警阈值:会话数>1000
#
# 2. 性能监控指标
##
# CPU使用率
– 指标名称:dm_cpu_usage
– 指标类型:百分比
– 指标值:CPU使用率
– 更新频率:1分钟
– 告警阈值:CPU使用率>80%
##
# 内存使用率
– 指标名称:dm_memory_usage
– 指标类型:百分比
– 指标值:内存使用率
– 更新频率:1分钟
– 告警阈值:内存使用率>80%
##
# 磁盘IO
– 指标名称:dm_disk_io
– 指标类型:数值
– 指标值:磁盘IO
– 更新频率:1分钟
– 告警阈值:磁盘IO>10000
##
# 网络IO
– 指标名称:dm_network_io
– 指标类型:数值
– 指标值:网络IO
– 更新频率:1分钟
– 告警阈值:网络IO>10000
#
# 3. 资源监控指标
##
# 表空间使用率
– 指标名称:dm_tablespace_usage
– 指标类型:百分比
– 指标值:表空间使用率
– 更新频率:5分钟
– 告警阈值:表空间使用率>80%
##
# 数据文件大小
– 指标名称:dm_datafile_size
– 指标类型:数值
– 指标值:数据文件大小
– 更新频率:5分钟
– 告警阈值:数据文件大小>100GB
##
# 日志文件大小
– 指标名称:dm_logfile_size
– 指标类型:数值
– 指标值:日志文件大小
– 更新频率:5分钟
– 告警阈值:日志文件大小>10GB
#
# 4. 业务监控指标
##
# 业务量
– 指标名称:dm_business_volume
– 指标类型:数值
– 指标值:业务量
– 更新频率:1分钟
– 告警阈值:业务量>10000
##
# 响应时间
– 指标名称:dm_response_time
– 指标类型:数值
– 指标值:响应时间
– 更新频率:1分钟
– 告警阈值:响应时间>1秒
##
# 错误率
– 指标名称:dm_error_rate
– 指标类型:百分比
– 指标值:错误率
– 更新频率:1分钟
– 告警阈值:错误率>1%
#
# 5. 日志监控指标
##
# 错误日志
– 指标名称:dm_error_log
– 指标类型:文本
– 指标值:错误日志
– 更新频率:1分钟
– 告警阈值:错误日志不为空
##
# 警告日志
– 指标名称:dm_warning_log
– 指标类型:文本
– 指标值:警告日志
– 更新频率:1分钟
– 告警阈值:警告日志不为空
##
# 审计日志
– 指标名称:dm_audit_log
– 指标类型:文本
– 指标值:审计日志
– 更新频率:1分钟
– 告警阈值:审计日志不为空
3.2.2 监控告警配置
# 监控告警配置
#
# 1. 告警规则配置
##
# 数据库状态告警
– 告警名称:DM数据库状态异常
– 告警条件:dm_status<>OPEN
– 告警级别:严重
– 告警方式:邮件、短信、微信
– 告警频率:每5分钟
##
# CPU使用率告警
– 告警名称:DM数据库CPU使用率过高
– 告警条件:dm_cpu_usage>80%
– 告警级别:警告
– 告警方式:邮件、短信
– 告警频率:每10分钟
##
# 内存使用率告警
– 告警名称:DM数据库内存使用率过高
– 告警条件:dm_memory_usage>80%
– 告警级别:警告
– 告警方式:邮件、短信
– 告警频率:每10分钟
##
# 表空间使用率告警
– 告警名称:DM数据库表空间使用率过高
– 告警条件:dm_tablespace_usage>80%
– 告警级别:警告
– 告警方式:邮件、短信
– 告警频率:每10分钟
##
# 响应时间告警
– 告警名称:DM数据库响应时间过长
– 告警条件:dm_response_time>1秒
– 告警级别:警告
– 告警方式:邮件、短信
– 告警频率:每10分钟
#
# 2. 告警通知配置
##
# 邮件通知
– SMTP服务器:smtp.fgedu.net.cn
– SMTP端口:587
– 发件人:monitor@fgedu.net.cn
– 收件人:dba@fgedu.net.cn
– 认证方式:TLS
##
# 短信通知
– 短信网关:sms.fgedu.net.cn
– API接口:http://sms.fgedu.net.cn/api/send
– 接收人:13800138000
– 认证方式:API Key
##
# 微信通知
– 微信企业号:wx1234567890
– 应用ID:123456
– 接收人:fengge
– 认证方式:Secret
#
# 3. 告警处理流程
##
# 告警接收
– 接收告警信息
– 记录告警时间
– 记录告警内容
– 记录告警级别
##
# 告警分析
– 分析告警原因
– 评估告警影响
– 制定处理方案
– 分配处理人员
##
# 告警处理
– 执行处理方案
– 记录处理过程
– 验证处理结果
– 关闭告警
##
# 告警总结
– 总结告警原因
– 总结处理过程
– 总结处理结果
– 提出改进建议
#
# 1. 告警规则配置
##
# 数据库状态告警
– 告警名称:DM数据库状态异常
– 告警条件:dm_status<>OPEN
– 告警级别:严重
– 告警方式:邮件、短信、微信
– 告警频率:每5分钟
##
# CPU使用率告警
– 告警名称:DM数据库CPU使用率过高
– 告警条件:dm_cpu_usage>80%
– 告警级别:警告
– 告警方式:邮件、短信
– 告警频率:每10分钟
##
# 内存使用率告警
– 告警名称:DM数据库内存使用率过高
– 告警条件:dm_memory_usage>80%
– 告警级别:警告
– 告警方式:邮件、短信
– 告警频率:每10分钟
##
# 表空间使用率告警
– 告警名称:DM数据库表空间使用率过高
– 告警条件:dm_tablespace_usage>80%
– 告警级别:警告
– 告警方式:邮件、短信
– 告警频率:每10分钟
##
# 响应时间告警
– 告警名称:DM数据库响应时间过长
– 告警条件:dm_response_time>1秒
– 告警级别:警告
– 告警方式:邮件、短信
– 告警频率:每10分钟
#
# 2. 告警通知配置
##
# 邮件通知
– SMTP服务器:smtp.fgedu.net.cn
– SMTP端口:587
– 发件人:monitor@fgedu.net.cn
– 收件人:dba@fgedu.net.cn
– 认证方式:TLS
##
# 短信通知
– 短信网关:sms.fgedu.net.cn
– API接口:http://sms.fgedu.net.cn/api/send
– 接收人:13800138000
– 认证方式:API Key
##
# 微信通知
– 微信企业号:wx1234567890
– 应用ID:123456
– 接收人:fengge
– 认证方式:Secret
#
# 3. 告警处理流程
##
# 告警接收
– 接收告警信息
– 记录告警时间
– 记录告警内容
– 记录告警级别
##
# 告警分析
– 分析告警原因
– 评估告警影响
– 制定处理方案
– 分配处理人员
##
# 告警处理
– 执行处理方案
– 记录处理过程
– 验证处理结果
– 关闭告警
##
# 告警总结
– 总结告警原因
– 总结处理过程
– 总结处理结果
– 提出改进建议
3.3 DM数据库监控维护
3.3.1 监控维护计划
# 监控维护计划
#
# 1. 日常维护
– 监控检查:检查监控系统运行状态
– 数据检查:检查监控数据完整性
– 告警检查:检查告警信息
– 性能检查:检查监控系统性能
#
# 2. 定期维护
– 系统更新:定期更新监控系统
– 数据清理:定期清理监控数据
– 配置优化:定期优化监控配置
– 性能优化:定期优化监控系统性能
#
# 3. 维护任务
##
# 监控系统维护
– 系统检查:检查监控系统运行状态
– 数据备份:备份监控数据
– 系统更新:更新监控系统
– 性能优化:优化监控系统性能
##
# 监控数据维护
– 数据检查:检查监控数据完整性
– 数据清理:清理过期数据
– 数据归档:归档历史数据
– 数据分析:分析监控数据
##
# 监控告警维护
– 告警检查:检查告警信息
– 告警优化:优化告警规则
– 告警测试:测试告警功能
– 告警总结:总结告警情况
##
# 监控配置维护
– 配置检查:检查监控配置
– 配置优化:优化监控配置
– 配置测试:测试监控配置
– 配置更新:更新监控配置
#
# 4. 维护工具
– 监控工具:监控监控系统状态
– 备份工具:备份监控数据
– 分析工具:分析监控数据
– 优化工具:优化监控系统
#
# 5. 维护文档
– 维护计划:制定详细的维护计划
– 维护记录:记录维护过程和结果
– 问题记录:记录维护中发现的问题
– 改进措施:记录改进措施
#
# 1. 日常维护
– 监控检查:检查监控系统运行状态
– 数据检查:检查监控数据完整性
– 告警检查:检查告警信息
– 性能检查:检查监控系统性能
#
# 2. 定期维护
– 系统更新:定期更新监控系统
– 数据清理:定期清理监控数据
– 配置优化:定期优化监控配置
– 性能优化:定期优化监控系统性能
#
# 3. 维护任务
##
# 监控系统维护
– 系统检查:检查监控系统运行状态
– 数据备份:备份监控数据
– 系统更新:更新监控系统
– 性能优化:优化监控系统性能
##
# 监控数据维护
– 数据检查:检查监控数据完整性
– 数据清理:清理过期数据
– 数据归档:归档历史数据
– 数据分析:分析监控数据
##
# 监控告警维护
– 告警检查:检查告警信息
– 告警优化:优化告警规则
– 告警测试:测试告警功能
– 告警总结:总结告警情况
##
# 监控配置维护
– 配置检查:检查监控配置
– 配置优化:优化监控配置
– 配置测试:测试监控配置
– 配置更新:更新监控配置
#
# 4. 维护工具
– 监控工具:监控监控系统状态
– 备份工具:备份监控数据
– 分析工具:分析监控数据
– 优化工具:优化监控系统
#
# 5. 维护文档
– 维护计划:制定详细的维护计划
– 维护记录:记录维护过程和结果
– 问题记录:记录维护中发现的问题
– 改进措施:记录改进措施
3.3.2 监控维护执行
# 监控维护执行
#
# 1. 日常维护
##
# 监控检查
$ /dm/scripts/check_monitoring.sh
##
# 数据检查
$ /dm/scripts/check_monitoring_data.sh
##
# 告警检查
$ /dm/scripts/check_monitoring_alert.sh
##
# 性能检查
$ /dm/scripts/check_monitoring_performance.sh
#
# 2. 定期维护
##
# 系统更新
$ yum update zabbix-server-mysql zabbix-web-mysql zabbix-agent -y
$ systemctl restart zabbix-server
$ systemctl restart zabbix-agent
##
# 数据清理
#!/bin/bash
# clean_monitoring_data.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
DATE=$(date +%Y%m%d)
BACKUP_DIR=/dm/backup/monitoring
mkdir -p $BACKUP_DIR
# 备份监控数据
mysqldump -u zabbix -p zabbix > $BACKUP_DIR/zabbix_backup_$DATE.sql
# 清理30天前的数据
mysql -u zabbix -p zabbix << EOF delete from history where clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); delete from history_uint where clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); delete from history_str where clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); delete from history_text where clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); delete from history_log where clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); EOF echo "监控数据清理完成" ## # 配置优化 $ vi /etc/zabbix/zabbix_server.conf # 优化参数 StartPollers=10 StartPingers=5 StartTrappers=5 StartDiscoverers=5 ## # 性能优化 $ systemctl restart zabbix-server # # 3. 监控系统维护 ## # 系统检查 $ systemctl status zabbix-server $ systemctl status zabbix-agent $ systemctl status httpd ## # 数据备份 $ /dm/scripts/backup_monitoring_data.sh ## # 系统更新 $ yum update zabbix-server-mysql zabbix-web-mysql zabbix-agent -y ## # 性能优化 $ vi /etc/zabbix/zabbix_server.conf # 优化参数 CacheSize=256M HistoryCacheSize=64M HistoryIndexCacheSize=16M TrendCacheSize=64M ValueCacheSize=64M ## 4. 监控数据维护 ## # 数据检查 $ mysql -u zabbix -p zabbix << EOF select count(*) from history; select count(*) from history_uint; select count(*) from history_str; EOF ## # 数据清理 $ /dm/scripts/clean_monitoring_data.sh ## # 数据归档 #!/bin/bash # archive_monitoring_data.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: `http://www.fgedu.net.cn` DATE=$(date +%Y%m%d) ARCHIVE_DIR=/dm/archive/monitoring mkdir -p $ARCHIVE_DIR # 归档监控数据 mysqldump -u zabbix -p zabbix history>
$ARCHIVE_DIR/history_$DATE.sql
mysqldump -u zabbix -p zabbix history_uint > $ARCHIVE_DIR/history_uint_$DATE.sql
mysqldump -u zabbix -p zabbix history_str > $ARCHIVE_DIR/history_str_$DATE.sql
echo “监控数据归档完成”
##
# 数据分析
$ /dm/scripts/analyze_monitoring_data.sh
#
# 5. 监控告警维护
##
# 告警检查
$ mysql -u zabbix -p zabbix << EOF select * from triggers where status=0 and value=1; EOF ## # 告警优化 # Zabbix Web界面操作: # 配置 - 触发器 - 优化告警规则 ### 告警测试 # Zabbix Web界面操作: # 监控 - 最新数据 - 测试告警 ## # 告警总结 $ /dm/scripts/summarize_monitoring_alert.sh ## 6. 监控配置维护 ## # 配置检查 $ vi /etc/zabbix/zabbix_server.conf $ vi /etc/zabbix/zabbix_agentd.conf ## # 配置优化 $ vi /etc/zabbix/zabbix_server.conf # 优化参数 Timeout=10 LogFileSize=100 ## # 配置测试 $ zabbix_server -R config_cache_reload ## # 配置更新 $ systemctl restart zabbix-server $ systemctl restart zabbix-agent ## 7. 维护文档 ## # 维护计划 $ vi /dm/docs/monitoring_maintenance_plan.md ## # 维护记录 $ vi /dm/docs/monitoring_maintenance_log.md ## # 问题记录 $ vi /dm/docs/monitoring_issue_log.md ## # 改进措施 $ vi /dm/docs/monitoring_improvement_plan.md
#
# 1. 日常维护
##
# 监控检查
$ /dm/scripts/check_monitoring.sh
##
# 数据检查
$ /dm/scripts/check_monitoring_data.sh
##
# 告警检查
$ /dm/scripts/check_monitoring_alert.sh
##
# 性能检查
$ /dm/scripts/check_monitoring_performance.sh
#
# 2. 定期维护
##
# 系统更新
$ yum update zabbix-server-mysql zabbix-web-mysql zabbix-agent -y
$ systemctl restart zabbix-server
$ systemctl restart zabbix-agent
##
# 数据清理
#!/bin/bash
# clean_monitoring_data.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
DATE=$(date +%Y%m%d)
BACKUP_DIR=/dm/backup/monitoring
mkdir -p $BACKUP_DIR
# 备份监控数据
mysqldump -u zabbix -p zabbix > $BACKUP_DIR/zabbix_backup_$DATE.sql
# 清理30天前的数据
mysql -u zabbix -p zabbix << EOF delete from history where clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); delete from history_uint where clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); delete from history_str where clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); delete from history_text where clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); delete from history_log where clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); EOF echo "监控数据清理完成" ## # 配置优化 $ vi /etc/zabbix/zabbix_server.conf # 优化参数 StartPollers=10 StartPingers=5 StartTrappers=5 StartDiscoverers=5 ## # 性能优化 $ systemctl restart zabbix-server # # 3. 监控系统维护 ## # 系统检查 $ systemctl status zabbix-server $ systemctl status zabbix-agent $ systemctl status httpd ## # 数据备份 $ /dm/scripts/backup_monitoring_data.sh ## # 系统更新 $ yum update zabbix-server-mysql zabbix-web-mysql zabbix-agent -y ## # 性能优化 $ vi /etc/zabbix/zabbix_server.conf # 优化参数 CacheSize=256M HistoryCacheSize=64M HistoryIndexCacheSize=16M TrendCacheSize=64M ValueCacheSize=64M ## 4. 监控数据维护 ## # 数据检查 $ mysql -u zabbix -p zabbix << EOF select count(*) from history; select count(*) from history_uint; select count(*) from history_str; EOF ## # 数据清理 $ /dm/scripts/clean_monitoring_data.sh ## # 数据归档 #!/bin/bash # archive_monitoring_data.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: `http://www.fgedu.net.cn` DATE=$(date +%Y%m%d) ARCHIVE_DIR=/dm/archive/monitoring mkdir -p $ARCHIVE_DIR # 归档监控数据 mysqldump -u zabbix -p zabbix history>
$ARCHIVE_DIR/history_$DATE.sql
mysqldump -u zabbix -p zabbix history_uint > $ARCHIVE_DIR/history_uint_$DATE.sql
mysqldump -u zabbix -p zabbix history_str > $ARCHIVE_DIR/history_str_$DATE.sql
echo “监控数据归档完成”
##
# 数据分析
$ /dm/scripts/analyze_monitoring_data.sh
#
# 5. 监控告警维护
##
# 告警检查
$ mysql -u zabbix -p zabbix << EOF select * from triggers where status=0 and value=1; EOF ## # 告警优化 # Zabbix Web界面操作: # 配置 - 触发器 - 优化告警规则 ### 告警测试 # Zabbix Web界面操作: # 监控 - 最新数据 - 测试告警 ## # 告警总结 $ /dm/scripts/summarize_monitoring_alert.sh ## 6. 监控配置维护 ## # 配置检查 $ vi /etc/zabbix/zabbix_server.conf $ vi /etc/zabbix/zabbix_agentd.conf ## # 配置优化 $ vi /etc/zabbix/zabbix_server.conf # 优化参数 Timeout=10 LogFileSize=100 ## # 配置测试 $ zabbix_server -R config_cache_reload ## # 配置更新 $ systemctl restart zabbix-server $ systemctl restart zabbix-agent ## 7. 维护文档 ## # 维护计划 $ vi /dm/docs/monitoring_maintenance_plan.md ## # 维护记录 $ vi /dm/docs/monitoring_maintenance_log.md ## # 问题记录 $ vi /dm/docs/monitoring_issue_log.md ## # 改进措施 $ vi /dm/docs/monitoring_improvement_plan.md
Part04-生产案例与实战讲解
4.1 DM数据库Zabbix监控案例
以下是一个Zabbix监控的案例:
#
# Zabbix监控案例
##
# 场景描述
某企业需要为DM数据库搭建Zabbix监控系统,实现对数据库的实时监控和告警。
##
# 实施步骤
# 1. 环境准备
#
# 监控服务器环境
– 主机名:fgedu-zabbix
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 数据库:MySQL 8.0
– 内存:8GB
– CPU:4核
– 磁盘:100GB
#
# 被监控服务器环境
– 主机名:fgedu-db
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 数据库:DM8
– 内存:64GB
– CPU:16核
– 磁盘:1TB
# 2. 安装Zabbix服务器
##
# 安装Zabbix仓库
$ rpm -Uvh
https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
$ yum clean all
##
# 安装Zabbix服务器
$ yum install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts
zabbix-sender zabbix-agent -y
##
# 安装MySQL数据库
$ yum install mysql-server -y
$ systemctl start mysqld
$ systemctl enable mysqld
##
# 创建Zabbix数据库
$ mysql -u root -p
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@fgedu.localhost identified by ‘Zabbix123’;
mysql> grant all privileges on zabbix.* to zabbix@fgedu.localhost;
mysql> flush privileges;
mysql> exit;
##
# 导入Zabbix数据库
$ zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql
–default-character-set=utf8mb4 -uzabbix -p zabbix
##
# 配置Zabbix服务器
$ vi /etc/zabbix/zabbix_server.conf
DBHost=fgedu.localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix123
CacheSize=256M
HistoryCacheSize=64M
HistoryIndexCacheSize=16M
TrendCacheSize=64M
ValueCacheSize=64M
StartPollers=10
StartPingers=5
StartTrappers=5
StartDiscoverers=5
##
# 启动Zabbix服务器
$ systemctl start zabbix-server
$ systemctl enable zabbix-server
$ systemctl start httpd
$ systemctl enable httpd
$ systemctl start zabbix-agent
$ systemctl enable zabbix-agent
##
# 访问Zabbix Web界面
http://192.168.1.100/zabbix
# 默认用户名:Admin
# 默认密码:zabbix
# 3. 安装Zabbix Agent
##
# 安装Zabbix Agent
$ yum install zabbix-agent -y
##
# 配置Zabbix Agent
$ vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=fgedu-db
Timeout=10
LogFileSize=100
##
# 启动Zabbix Agent
$ systemctl start zabbix-agent
$ systemctl enable zabbix-agent
# 4. 配置DM数据库监控
##
# 创建监控用户
$ disql SYSDBA/SYSDBA
SQL> create user zabbix identified by “Zabbix123”;
SQL> grant resource, public, vt_i to zabbix;
##
# 创建监控脚本
#!/bin/bash
# dm_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
case $1 in
status)
disql zabbix/Zabbix123 << EOF set echo off set heading off select status from v\$instance; EOF ;; sessions) disql zabbix/Zabbix123 << EOF set echo off set heading off select count(*) from v\$sessions; EOF ;; cpu) disql zabbix/Zabbix123 << EOF set echo off set heading off select value from v\$sysstat where name='CPU TIME' ; EOF ;; memory) disql zabbix/Zabbix123 << EOF set echo off set heading off select value from v\$sysstat where name='MEMORY USAGE' ; EOF ;; tablespace) disql zabbix/Zabbix123 << EOF set echo off set heading off select tablespace_name, round(sum(bytes)/1024/1024/1024, 2) size_gb from dba_data_files group by tablespace_name; EOF ;; *) echo "Usage: $0 {status|sessions|cpu|memory|tablespace}" exit 1 esac ## # 配置Zabbix Agent自定义监控 $ vi /etc/zabbix/zabbix_agentd.conf UserParameter=dm.status[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.sessions[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.cpu[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.memory[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.tablespace[*],/dm/scripts/dm_monitor.sh $1 ## # 重启Zabbix Agent $ systemctl restart zabbix-agent # 5. 配置Zabbix监控项 ### 添加主机 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - 创建主机 # 步骤2:主机名称:fgedu-db # 步骤3:可见名称:fgedu-db # 步骤4:群组:Linux servers # 步骤5:IP地址:192.168.1.200 # 步骤6:端口:10050 # 步骤7:添加 - 完成 ### 添加监控项 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - fgedu-db - 监控项 - 创建监控项 # 步骤2:名称:DM数据库状态 # 步骤3:键值:dm.status # 步骤4:信息类型:文本 # 步骤5:更新间隔:1m # 步骤6:添加 - 完成 ### 添加触发器 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - fgedu-db - 触发器 - 创建触发器 # 步骤2:名称:DM数据库状态异常 # 步骤3:表达式:last(/fgedu-db/dm.status)<>OPEN
# 步骤4:严重性:严重
# 步骤5:添加 – 完成
##
# 添加图形
# Zabbix Web界面操作:
# 步骤1:配置 – 主机 – fgedu-db – 图形 – 创建图形
# 步骤2:名称:DM数据库监控
# 步骤3:监控项:DM数据库状态、会话数、CPU使用率、内存使用率
# 步骤4:添加 – 完成
# 6. 配置Zabbix告警
##
# 配置邮件告警
# Zabbix Web界面操作:
# 步骤1:管理 – 报警媒介类型 – Email
# 步骤2:SMTP服务器:smtp.fgedu.net.cn
# 步骤3:SMTP端口:587
# 步骤4:SMTP HELO:fgedu.net.cn
# 步骤5:SMTP邮箱:monitor@fgedu.net.cn
# 步骤6:认证:TLS
# 步骤7:用户名:monitor@fgedu.net.cn
# 步骤8:密码:******
# 步骤9:更新
##
# 配置用户告警
# Zabbix Web界面操作:
# 步骤1:管理 – 用户 – Admin – 报警媒介
# 步骤2:类型:Email
# 步骤3:收件人:dba@fgedu.net.cn
# 步骤4:当发送时:所有严重性
# 步骤5:添加 – 更新
##
# 配置动作
# Zabbix Web界面操作:
# 步骤1:配置 – 动作 – 触发器动作 – 创建动作
# 步骤2:名称:DM数据库告警
# 步骤3:条件:触发器=DM数据库状态异常
# 步骤4:操作:发送消息到用户
# 步骤5:添加 – 更新
# 7. 验证监控
##
# 查看监控数据
# Zabbix Web界面操作:
# 监控 – 最新数据 – fgedu-db
##
# 查看监控图形
# Zabbix Web界面操作:
# 监控 – 图形 – fgedu-db – DM数据库监控
##
# 测试告警
# Zabbix Web界面操作:
# 停止DM数据库服务
# 查看告警信息
# 启动DM数据库服务
# 8. 效果评估
##
# 监控效果
– 监控系统正常运行
– 监控数据准确完整
– 监控实时性良好
##
# 告警效果
– 告警及时发送
– 告警内容准确
– 告警处理及时
##
# 性能效果
– 监控系统性能良好
– 监控数据采集及时
– 监控图形显示正常
# Zabbix监控案例
##
# 场景描述
某企业需要为DM数据库搭建Zabbix监控系统,实现对数据库的实时监控和告警。
##
# 实施步骤
# 1. 环境准备
#
# 监控服务器环境
– 主机名:fgedu-zabbix
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 数据库:MySQL 8.0
– 内存:8GB
– CPU:4核
– 磁盘:100GB
#
# 被监控服务器环境
– 主机名:fgedu-db
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 数据库:DM8
– 内存:64GB
– CPU:16核
– 磁盘:1TB
# 2. 安装Zabbix服务器
##
# 安装Zabbix仓库
$ rpm -Uvh
https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
$ yum clean all
##
# 安装Zabbix服务器
$ yum install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts
zabbix-sender zabbix-agent -y
##
# 安装MySQL数据库
$ yum install mysql-server -y
$ systemctl start mysqld
$ systemctl enable mysqld
##
# 创建Zabbix数据库
$ mysql -u root -p
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@fgedu.localhost identified by ‘Zabbix123’;
mysql> grant all privileges on zabbix.* to zabbix@fgedu.localhost;
mysql> flush privileges;
mysql> exit;
##
# 导入Zabbix数据库
$ zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql
–default-character-set=utf8mb4 -uzabbix -p zabbix
##
# 配置Zabbix服务器
$ vi /etc/zabbix/zabbix_server.conf
DBHost=fgedu.localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix123
CacheSize=256M
HistoryCacheSize=64M
HistoryIndexCacheSize=16M
TrendCacheSize=64M
ValueCacheSize=64M
StartPollers=10
StartPingers=5
StartTrappers=5
StartDiscoverers=5
##
# 启动Zabbix服务器
$ systemctl start zabbix-server
$ systemctl enable zabbix-server
$ systemctl start httpd
$ systemctl enable httpd
$ systemctl start zabbix-agent
$ systemctl enable zabbix-agent
##
# 访问Zabbix Web界面
http://192.168.1.100/zabbix
# 默认用户名:Admin
# 默认密码:zabbix
# 3. 安装Zabbix Agent
##
# 安装Zabbix Agent
$ yum install zabbix-agent -y
##
# 配置Zabbix Agent
$ vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=fgedu-db
Timeout=10
LogFileSize=100
##
# 启动Zabbix Agent
$ systemctl start zabbix-agent
$ systemctl enable zabbix-agent
# 4. 配置DM数据库监控
##
# 创建监控用户
$ disql SYSDBA/SYSDBA
SQL> create user zabbix identified by “Zabbix123”;
SQL> grant resource, public, vt_i to zabbix;
##
# 创建监控脚本
#!/bin/bash
# dm_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
case $1 in
status)
disql zabbix/Zabbix123 << EOF set echo off set heading off select status from v\$instance; EOF ;; sessions) disql zabbix/Zabbix123 << EOF set echo off set heading off select count(*) from v\$sessions; EOF ;; cpu) disql zabbix/Zabbix123 << EOF set echo off set heading off select value from v\$sysstat where name='CPU TIME' ; EOF ;; memory) disql zabbix/Zabbix123 << EOF set echo off set heading off select value from v\$sysstat where name='MEMORY USAGE' ; EOF ;; tablespace) disql zabbix/Zabbix123 << EOF set echo off set heading off select tablespace_name, round(sum(bytes)/1024/1024/1024, 2) size_gb from dba_data_files group by tablespace_name; EOF ;; *) echo "Usage: $0 {status|sessions|cpu|memory|tablespace}" exit 1 esac ## # 配置Zabbix Agent自定义监控 $ vi /etc/zabbix/zabbix_agentd.conf UserParameter=dm.status[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.sessions[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.cpu[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.memory[*],/dm/scripts/dm_monitor.sh $1 UserParameter=dm.tablespace[*],/dm/scripts/dm_monitor.sh $1 ## # 重启Zabbix Agent $ systemctl restart zabbix-agent # 5. 配置Zabbix监控项 ### 添加主机 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - 创建主机 # 步骤2:主机名称:fgedu-db # 步骤3:可见名称:fgedu-db # 步骤4:群组:Linux servers # 步骤5:IP地址:192.168.1.200 # 步骤6:端口:10050 # 步骤7:添加 - 完成 ### 添加监控项 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - fgedu-db - 监控项 - 创建监控项 # 步骤2:名称:DM数据库状态 # 步骤3:键值:dm.status # 步骤4:信息类型:文本 # 步骤5:更新间隔:1m # 步骤6:添加 - 完成 ### 添加触发器 # Zabbix Web界面操作: # 步骤1:配置 - 主机 - fgedu-db - 触发器 - 创建触发器 # 步骤2:名称:DM数据库状态异常 # 步骤3:表达式:last(/fgedu-db/dm.status)<>OPEN
# 步骤4:严重性:严重
# 步骤5:添加 – 完成
##
# 添加图形
# Zabbix Web界面操作:
# 步骤1:配置 – 主机 – fgedu-db – 图形 – 创建图形
# 步骤2:名称:DM数据库监控
# 步骤3:监控项:DM数据库状态、会话数、CPU使用率、内存使用率
# 步骤4:添加 – 完成
# 6. 配置Zabbix告警
##
# 配置邮件告警
# Zabbix Web界面操作:
# 步骤1:管理 – 报警媒介类型 – Email
# 步骤2:SMTP服务器:smtp.fgedu.net.cn
# 步骤3:SMTP端口:587
# 步骤4:SMTP HELO:fgedu.net.cn
# 步骤5:SMTP邮箱:monitor@fgedu.net.cn
# 步骤6:认证:TLS
# 步骤7:用户名:monitor@fgedu.net.cn
# 步骤8:密码:******
# 步骤9:更新
##
# 配置用户告警
# Zabbix Web界面操作:
# 步骤1:管理 – 用户 – Admin – 报警媒介
# 步骤2:类型:Email
# 步骤3:收件人:dba@fgedu.net.cn
# 步骤4:当发送时:所有严重性
# 步骤5:添加 – 更新
##
# 配置动作
# Zabbix Web界面操作:
# 步骤1:配置 – 动作 – 触发器动作 – 创建动作
# 步骤2:名称:DM数据库告警
# 步骤3:条件:触发器=DM数据库状态异常
# 步骤4:操作:发送消息到用户
# 步骤5:添加 – 更新
# 7. 验证监控
##
# 查看监控数据
# Zabbix Web界面操作:
# 监控 – 最新数据 – fgedu-db
##
# 查看监控图形
# Zabbix Web界面操作:
# 监控 – 图形 – fgedu-db – DM数据库监控
##
# 测试告警
# Zabbix Web界面操作:
# 停止DM数据库服务
# 查看告警信息
# 启动DM数据库服务
# 8. 效果评估
##
# 监控效果
– 监控系统正常运行
– 监控数据准确完整
– 监控实时性良好
##
# 告警效果
– 告警及时发送
– 告警内容准确
– 告警处理及时
##
# 性能效果
– 监控系统性能良好
– 监控数据采集及时
– 监控图形显示正常
4.2 DM数据库Prometheus监控案例
以下是一个Prometheus监控的案例:
#
# Prometheus监控案例
##
# 场景描述
某企业需要为DM数据库搭建Prometheus监控系统,实现对数据库的实时监控和可视化。
##
# 实施步骤
# 1. 环境准备
#
# 监控服务器环境
– 主机名:fgedu-prometheus
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 内存:8GB
– CPU:4核
– 磁盘:100GB
#
# 被监控服务器环境
– 主机名:fgedu-db
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 数据库:DM8
– 内存:64GB
– CPU:16核
– 磁盘:1TB
# 2. 安装Prometheus
##
# 下载Prometheus
$ cd /tmp
$ wget
https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
$ tar -xzf prometheus-2.45.0.linux-amd64.tar.gz
$ mv prometheus-2.45.0.linux-amd64 /opt/prometheus
##
# 配置Prometheus
$ vi /opt/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
– job_name: ‘dm_database’
static_configs:
– targets: [‘192.168.1.200:9100’]
labels:
instance: ‘fgedu-db’
– job_name: ‘node_exporter’
static_configs:
– targets: [‘192.168.1.200:9100’]
labels:
instance: ‘fgedu-db’
##
# 创建Prometheus服务
$ vi /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/opt/prometheus/prometheus –config.file=/opt/prometheus/prometheus.yml
–storage.tsdb.path=/opt/prometheus/data
–web.console.templates=/opt/prometheus/consoles
–web.console.libraries=/opt/prometheus/console_libraries
Restart=on-failure
[Install]
WantedBy=multi-user.target
##
# 启动Prometheus
$ useradd prometheus
$ chown -R prometheus:prometheus /opt/prometheus
$ systemctl daemon-reload
$ systemctl start prometheus
$ systemctl enable prometheus
##
# 访问Prometheus Web界面
http://192.168.1.100:9090
# 3. 安装Node Exporter
##
# 下载Node Exporter
$ cd /tmp
$ wget
https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
$ tar -xzf node_exporter-1.6.1.linux-amd64.tar.gz
$ mv node_exporter-1.6.1.linux-amd64 /opt/node_exporter
##
# 创建Node Exporter服务
$ vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
Type=simple
User=node_exporter
ExecStart=/opt/node_exporter/node_exporter –web.listen-address=:9100
Restart=on-failure
[Install]
WantedBy=multi-user.target
##
# 启动Node Exporter
$ useradd node_exporter
$ chown -R node_exporter:node_exporter /opt/node_exporter
# Prometheus监控案例
##
# 场景描述
某企业需要为DM数据库搭建Prometheus监控系统,实现对数据库的实时监控和可视化。
##
# 实施步骤
# 1. 环境准备
#
# 监控服务器环境
– 主机名:fgedu-prometheus
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 内存:8GB
– CPU:4核
– 磁盘:100GB
#
# 被监控服务器环境
– 主机名:fgedu-db
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 数据库:DM8
– 内存:64GB
– CPU:16核
– 磁盘:1TB
# 2. 安装Prometheus
##
# 下载Prometheus
$ cd /tmp
$ wget
https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
$ tar -xzf prometheus-2.45.0.linux-amd64.tar.gz
$ mv prometheus-2.45.0.linux-amd64 /opt/prometheus
##
# 配置Prometheus
$ vi /opt/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
– job_name: ‘dm_database’
static_configs:
– targets: [‘192.168.1.200:9100’]
labels:
instance: ‘fgedu-db’
– job_name: ‘node_exporter’
static_configs:
– targets: [‘192.168.1.200:9100’]
labels:
instance: ‘fgedu-db’
##
# 创建Prometheus服务
$ vi /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/opt/prometheus/prometheus –config.file=/opt/prometheus/prometheus.yml
–storage.tsdb.path=/opt/prometheus/data
–web.console.templates=/opt/prometheus/consoles
–web.console.libraries=/opt/prometheus/console_libraries
Restart=on-failure
[Install]
WantedBy=multi-user.target
##
# 启动Prometheus
$ useradd prometheus
$ chown -R prometheus:prometheus /opt/prometheus
$ systemctl daemon-reload
$ systemctl start prometheus
$ systemctl enable prometheus
##
# 访问Prometheus Web界面
http://192.168.1.100:9090
# 3. 安装Node Exporter
##
# 下载Node Exporter
$ cd /tmp
$ wget
https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
$ tar -xzf node_exporter-1.6.1.linux-amd64.tar.gz
$ mv node_exporter-1.6.1.linux-amd64 /opt/node_exporter
##
# 创建Node Exporter服务
$ vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
Type=simple
User=node_exporter
ExecStart=/opt/node_exporter/node_exporter –web.listen-address=:9100
Restart=on-failure
[Install]
WantedBy=multi-user.target
##
# 启动Node Exporter
$ useradd node_exporter
$ chown -R node_exporter:node_exporter /opt/node_exporter
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
