在日常生活中,我们会遇到搭建达梦数据库内网监控程序agent以接入网监平台kafuka,这篇文章讲解有关agent监控的搭建:
说明:
1、HA环境下将agent部署在两台数据库服务器中,部署完成后将monitor_kafka.sh加入到计划任务,由monitor_kafka.sh脚本控制并判断判断数据库是否切机并在脚本中调用dm_kafka.sh脚本启动agent服务。
数据库监控部署操作步骤
将数据库监控程序拷贝到HA环境中的两台数据库服务器中,并调整程序文件的用户与组,与现场部署的应用用户一致(dmdba.dinstall)。查看java运行环境,及java安装
注意事项:
1.先查看现场JAVA本版本,如果低于1.8需要安装java1.8环境;
Java1.8安装步骤:
(1).将java1.8压缩包jdk1.8.0_121.zip解压到服务器/usr/java/下
(2)配置环境变量,现场使用xhell远程连接root修改/etc/profile文件source生效后,开启新窗口使用root执行java -version可能存在为调用不成功的情况,显示还是调用的老版本1.6,解决办法:使用普通用户dmdba修改家目录下.bashrc文件source生效后再打开新窗口使用dmdba用户执行java -version调用成功。(可以去官网下载jdk1.8)
/etc/profile和.bashrc添加内容:
export JAVA_HOME=/usr/java/jdk1.8.0_121
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
2.需要在dm监控程序的运行机器的/etc/hosts下加上网监平台kafka机器的主机名和IP
3.需要使用root用户给dmdba用户添加crontab,每分钟执行一次检测dmserverd和agent的在线情况
添加命令:
crontab -u dmdba -e
*/1 * * * * sh /home/dmdba/dm/dm_jk/monitor_kafka.sh
4.版本包分为两个
DM7数据库安全监视软件v2.1-release-20200923.zip、达梦数据库安全监视软件-v2.1-launchKey
解压DM7数据库安全监视软件v2.1-release-20200923.zip后会出现两个目录:DM7KafkaInspector和DMKafkaIniCreater需要将DM7KafkaInspector下lib里的jar包cp到DMKafkaIniCreater中,将launch.key文件cp到DMKafkaIniCreater中。
2、编辑监控程序的配置文件init_conf.txt ,将“目标数据库基本配置项目”和“kafka集群连接配置”进行配置,相关告警信息的参数与用户沟通后,根据实际现场情况进行设置;dm7配置项目如下:
##全部配置项目格式为 key=value,“#”号后面内容为注释;<<<<<<和>>>>>>对所包围的文字起保护作用,避免#及其后的字符被忽略
##安全校验
CHECK_FILE = ./DM7KafkaInspector.jar #Linux环境中./DM7KafkaInspector.jar;Windows环境中.\DM7KafkaInspector.jar
CHECK_CODE = 校验码 #DM7KafkaInspector.jar的检验编码(md5值)
##目标数据库基本配置项目
#SVC_SERVER_NAME = 测试 #主备数据库系统服务名(单机版须注释掉)
SERVER_IP = 测试 #数据库IP地址(请酌情设置)
SERVER_PORT = 测试 #数据库端口号(请酌情设置)
LOGIN_NAME = SYSDBA #数据库登陆用户名(请酌情设置)
<<<<<< LOGIN_PASSWORD = SYSDBA >>>>>> #数据库登陆密码(请酌情设置)
##kafka集群连接配置
KAFKA_TOPIC = pf_database #kafka消息主题topic配置(请酌情设置)
KAFKA_BROKER_LIST=测试:9092 #kafka集群代理IP端口号列表(请酌情设置 格式为ip:port,ip:port)
##kafka消息本地打印配置
LOCAL_PRINT_MESSAGE = yes #是否在本地打印发送的kafka消息(调试时使用,请酌情设置,值为yes或no)
LOCAL_LOG_MESSAGE = yes #是否在日志中记录详细运行信息(调试时使用,请酌情设置,值为yes或no)
##运行信息配置("开关"项控制是否监控该项指标)
#1.数据库CPU使用率监控 运行信息配置
PERIOD_CPU = 1分钟 #数据库CPU使用率监控上报周期(单位:小时、分钟)
THRESHOLD_CPU = 0% #数据库CPU使用率监控上报阈值(单位: %)
ENABLE_CPU = 是 #开关(是、否)
#2.数据库内存使用率监控 运行信息配置
PERIOD_MEMORY = 1分钟 #数据库内存使用率监控上报周期(单位:小时、分钟)
THRESHOLD_MEMORY = 10% #数据库内存使用率监控上报阈值(单位: %)
ENABLE_MEMORY = 是 #开关(是、否)
#3.数据库磁盘信息-数据文件监控 运行信息配置
PERIOD_DATA_FILE = 1分钟 #数据文件监控上报周期(单位:小时、分钟)
THRESHOLD_DATA_FILE = 15G #数据文件监控上报阈值(单位: T、G;所在磁盘free空间低于该值时发送告警)
THRESHOLD_DATA_FILE_RATIO = 30% #数据库文件使用率监控上报阈值(单位: %)
ENABLE_DATA_FILE = 是 #开关(是、否)
#4.数据库磁盘信息-归档文件监控 运行信息配置
PERIOD_ARCHIVE_FILE = 1分钟 #归档文件监控上报周期(单位:小时、分钟)
THRESHOLD_ARCHIVE_FILE = 15G #归档文件监控上报阈值(单位: T、G;所在磁盘free空间低于该值时发送告警)
THRESHOLD_ARCHIVE_FILE_RATIO = 30% #归档文件使用率监控上报阈值(单位: %)
ENABLE_ARCHIVE_FILE = 是 #开关(是、否)
#5.数据库磁盘信息-备份文件监控 运行信息配置
PERIOD_BACKUP_FILE = 1分钟 #备份文件监控上报周期(单位:小时、分钟)
THRESHOLD_BACKUP_FILE = 15G #备份文件监控上报阈值(单位: T、G;所在磁盘free空间低于该值时发送告警)
THRESHOLD_BACKUP_FILE_RATIO = 30% #备份文件使用率监控上报阈值(单位: %)
LIST_BACKUP_PATH = /dbbak/dmbak #备份文件根目录列表(分号隔开,标准路径格式)
ENABLE_BACKUP_FILE = 是 #开关(是、否)
#6.数据库表空间使用情况监控 运行信息配置
PERIOD_TABLESPACE = 1分钟 #数据库表空间使用情况监控上报周期(单位:小时、分钟)
THRESHOLD_TABLESPACE = 15G #数据库表空间使用情况监控上报阈值(单位: T、G)
ENABLE_TABLESPACE = 是 #开关(是、否)
#7.数据库连接使用情况监控 运行信息配置
PERIOD_CONNECTION_STATUS = 1分钟 #数据库连接使用情况监控上报周期(单位:小时、分钟)
NUMBER_CONNECTION_STATUS_LOGIN_NAME = 20 #数据库连接使用情况监控上报连接最多的用户名个数
ENABLE_CONNECTION_STATUS = 是 #开关(是、否)
#8.数据库运行时长监控 运行信息配置
PERIOD_DATABASE_RUNTIME = 1分钟 #数据库运行时长监控上报周期(单位:小时、分钟)
ENABLE_DATABASE_RUNTIME = 是 #开关(是、否)
#9.数据库状态监控 运行信息配置
PERIOD_DATABASE_STATUS = 1分钟 #数据库状态监控上报周期(单位:小时、分钟)
ENABLE_DATABASE_STATUS = 是 #开关(是、否)
#10.数据库操作信息监控 运行信息配置
ENABLE_DATABASE_ACTION = 是 #开关(是、否)
#11.数据库用户信息变更信息监控 运行信息配置
ENABLE_USER_PRIORITY_ACTION = 是 #开关(是、否)
#12.数据库非法访问-非授权IP访问数据库 运行信息配置
PERIOD_UNAUTHORIZED_IP_ACCESS = 1分钟 #非授权IP访问数据库监控上报周期(单位:小时、分钟)
NUMBER_WHITE_IP = 1个 #IP白名单个数
WHITE_IP_1 = 127.0.0.1
ENABLE_UNAUTHORIZED_IP_ACCESS = 是 #开关(是、否)
#13.数据库总表数量 运行信息配置
PERIOD_TABLE_NUMBER = 1分钟 #数据库总表数量监控上报周期(单位:小时、分钟)
THRESHOLD_TABLE_NUMBER = 100 #数据库总表数量监控上报阈值(单位: 个)
ENABLE_TABLE_NUMBER = 是 #开关(是、否)
#14.数据库非法用户-非授权用户访问数据库 运行信息配置
PERIOD_UNAUTHORIZED_USER_ACCESS = 1分钟 #非授权用户访问数据库监控上报周期(单位:小时、分钟)
NUMBER_WHITE_USER = 1个 #USER白名单个数
WHITE_USER_1 = SYSDBA
ENABLE_UNAUTHORIZED_USER_ACCESS = 是 #开关(是、否)
#15.数据库非法访问-无效SQL 运行信息配置
PERIOD_SQL_ERROR = 1分钟 #无效SQL监控上报周期(单位:小时、分钟)
ENABLE_SQL_ERROR = 是 #开关(是、否)
#16.危险操作-DROP DDL操作信息监控 运行信息配置
PERIOD_DROP_ACTION = 1分钟 #DROP DDL操作信息监控上报周期(单位:小时、分钟)
ENABLE_DROP_ACTION = 是 #开关(是、否)
#17.危险操作-DELETE DML操作信息监控 运行信息配置
PERIOD_DELETE_ACTION = 1分钟 #DELETE DDL操作信息监控上报周期(单位:小时、分钟)
NUMBER_BLACK_TABLE = 1个 #TABLE黑名单个数
BLACK_TABLE_1 = TABLE_SAMPLE #核心表名
ENABLE_DELETE_ACTION = 是 #开关(是、否)
#18.危险操作-疑似CC攻击监控 运行信息配置
PERIOD_SQL_CC = 1分钟 #疑似CC攻击监控上报周期(单位:小时、分钟)
THRESHOLD_SQL_CC_CPU = 0% #疑似CC攻击监控上报-CPU使用率阈值(单位: %)
THRESHOLD_SQL_CC_MEMORY = 0% #疑似CC攻击监控上报-MEMORY使用率阈值(单位: %)
ENABLE_SQL_CC = 是 #开关(是、否)
##安全信息配置
#1.数据库用户连续登录失败监控 安全信息配置
TIMESPAN_USER_LOGIN = 1分钟 #在该配置的一段时间内用户连续登陆失败将产生告警(单位:小时、分钟)
NUMBER_USER_LOGIN_FAILURE = 2 #用户连续登陆失败达到配置次数将产生告警
ENABLE_USER_LOGIN = 是 #开关(是、否)
#2.sql语句长时间未提交 安全信息配置
TIMESPAN_SQL_SUBMIT = 1分钟 #经过该配置的一段时间后尚未提交的SQL将被告警上报(单位:小时、分钟)
ENABLE_SQL_SUBMIT = 是 #开关(是、否)
#3.数据计划任务执行失败 安全信息配置(无配置项)
ENABLE_JOB_FAILURE = 是 #开关(是、否)
#4.sql语句执行时间异常 安全信息配置
TIMESPAN_SQL_EXECUTION = 30秒 #经过该配置的一段时间后尚未执行完毕的SQL将被告警上报(单位:分钟、秒)
ENABLE_SQL_EXECUTION = 是 #开关(是、否)
#5.数据库脏页面占比情况监控 安全信息配置
PERIOD_DIRTY_PAGE = 1分钟 #数据库脏页面占比情况监控上报周期(单位:小时、分钟)
THRESHOLD_DIRTY_PAGE = 20% #数据库表空间使用情况监控上报阈值(单位:%)
ENABLE_DIRTY_PAGE = 是 #开关(是、否)
##数据库配置项核查交互配置
ENABLE_CONF_CHECK = 否 #开关(是、否)(数据库配置项核查)
#下述两项对应发送指令的IP、端口、topic
KAFKA_TOPIC_CONSUMMER = pf_database #kafka消息主题topic配置(请酌情设置)
KAFKA_BROKER_LIST_CONSUMER = 测试:9092 #kafka集群代理IP端口号列表(请酌情设置 格式为ip:port,ip:port)
#下述两项对应接收核查结果的IP、端口、topic
KAFKA_TOPIC_PRODUCER = pf_database #kafka消息主题topic配置(请酌情设置)
KAFKA_BROKER_LIST_PRODUCER = 测试:9092 #kafka集群代理IP端口号列表(请酌情设置 格式为ip:port,ip:port)
#读取核查指令周期
PERIOD_DB_CONF_CHECK = 5秒 #读取核查指令周期(单位:分钟、秒)
##日志管理参数配置
TIMESPAN_LOG_RETAIN = 2 #日志保留时长,过期日志自动删除(单位:天)
THRESHOLD_LOG_DIR_SIZE = 1 #日志文件夹占用磁盘空间大小上限,超过此上限,停止更新日志(单位:G)
3、用manager管理工具,连接到被监控的数据库,执行捕获ddl操作的脚本。(脚本在安装包中自带)
4、按照实际情况修改配置文件后,需计算运行文件的MD5值,将md5值配置到配置文件中,然后将配置文件进行加密,加密成功后,执行信息监控命令,具体命令如下:
DM7:
--Linux下执行命令参考
1. 计算校验编码
java -Djava.ext.dirs=./:./lib -cp DMKafkaIniCreater.jar creater.IniCreater md5-7
2. 加密配置文件
java -Djava.ext.dirs=./:./lib -cp DMKafkaIniCreater.jar creater.IniCreater t2k-7
3. 解密配置文件
java -Djava.ext.dirs=./:./lib -cp DMKafkaIniCreater.jar creater.IniCreater k2t-7
4. 执行信息监控
java -Djava.ext.dirs=./:./lib -cp DM7KafkaInspector.jar com.dm7.kafka.Launcher
启动完成后,查看安装目录下的log文件夹中的日志内容,如果日志中开始记录告警信息,则部署成功,与平台工作人员进行确认告警信息收发情况,若能正常收取,则调试完成。
5、后台启动。前台启动调试完成后,执行如下命令,进行后台启动,查看告警信息采集情况。
setsid java -Djava.ext.dirs=./:./lib -cp DM7KafkaInspector.jar com.dm7.kafka.Launcher
三、影响范围
在进行部署数据库监控程序时,只需在数据库下创建一张表两个触发器,不用对数据库进行其他操作,不影响数据库的正常运行。
脚本内容:
dm_kafka.sh:
#! /bin/bash
cd /home/dmdba/dm/dm_jk/DMKafkaIniCreater
nohup java -Djava.ext.dirs=./:./lib -cp DM7KafkaInspector.jar com.dm7.kafka.Launcher >/dev/null &
#setsid java -Djava.ext.dirs=./:./lib -cp DMK7afkaInspector.jar com.dm7.kafka.Launcher
monitor_kafka.sh
#!/bin/bash
#监控kafka监控进程是否在线
pidcount=`ps cax -o pid,command | grep -w dmserver | grep -c dmserver`
if [ $pidcount -eq 1 ];
then
kpidcount=`ps -ef|grep kafka|grep -c Xmx129M`
if [ $kpidcount -eq 0 ];
then
sleep 5
echo `date` "start kafka $1" >>/home/dmdba/dm/dm_jk/DMKafkaIniCreater/monitor_kafka.log
cd /home/dmdba/dm/dm_jk
./dm_kafka.sh
#sh /home/dmdba/dm/dm_jk/dm_kafka.sh
fi
fi
pidcount=`ps cax -o pid,command | grep -w dmserver | grep -c dmserver`
if [ $pidcount -eq 0 ];
then
kpidcount=`ps -ef|grep kafka|grep -c Xmx129M`
if [ $kpidcount -eq 1 ];
then
sleep 5
echo `date` "kill kafka $1" >>/home/dmdba/dm/dm_jk/DMKafkaIniCreater/monitor_kafka.log
kafkapid=`ps -ef|grep kafka|grep Xmx129M|head -n 1|awk '{print $2}'`
kill -9 $kafkapid
fi
fi
评论已关闭