监控系列(六)prometheus监控DMHS操作步骤

news/2024/5/18 22:22:04 标签: prometheus, 服务器, 网络

一、监控的操作逻辑

  1. 给操作系统安装expect命令
  2. expect脚本执行dmhs_console脚本执行 cpt / exec 命令
  3. 用脚本进行过滤字符串过滤
  4. dm_export读取脚本与当前日期作比较,然后返回差值

二、安装步骤

1. linux中Expect工具的安装及使用方法

https://blog.csdn.net/wangtaoking1/article/details/78268574

# wget https://sourceforge.net/projects/tcl/files/Tcl/8.4.19/tcl8.4.19-src.tar.gz
# tar zxvf tcl8.4.19-src.tar.gz
# cd tcl8.4.19/unix && ./configure
# make
# make install

# 回退到基目录下在执行一下操作

# wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz
# tar zxvf expect5.45.tar.gz
# cd expect5.45
# ./configure --with-tcl=/usr/local/lib --with-tclinclude=../tcl8.4.19/generic
# make
# make install
# ln -s /usr/local/bin/expect /usr/bin/expect

# 安装完成之后运行expect命令,查看是否安装成功。
# expect
expect1.1> 

2. dm_exporter工具配置文件

调整application.yml

新增dmhs的相关属性,注意enableType类型 需要区分源端以及目的端

[root@p4-oakdmdb02 dm_exporter]# vi application.yml 

spring:
  application:
    name: dm-prometheus
server:
  port: 9200
  ##ip识别错误时使用
  ip:
  ##主机的hostname
  hostname:
  ##告警保留时间(分钟)
  alarmSaveTime: 5
  ##大key的保留时间(表空间使用 分组)
  bigKeySaveTime: 720
  ##会话等待的检测时间(分钟) 检测会话等待值 sql传参
  waitingSessionTime: 5
  ##是否屏蔽特殊项 0 不屏蔽 1屏蔽 (屏蔽定时任务、sql超时)
  specialCheck: 1
dmdbms:
  jdbcUrl:  jdbc:dm://127.0.0.1:5236
  username: SYSDBA
  password: SYSDBA
dmhs:
  ## 0 不启动  1 cpt源端 2 目的端
  enableType: 0
  installBinPath: /home/dmdba/dmhs/bin
management:

  endpoints:
    # 关闭所有的检查项
    enabled-by-default: false
    web:
      exposure:
        # 暴露监控接口,*为全部接口
        include: 'prometheus'
        # 不暴露接口
  #        exclude: 'info'
      base-path: "/"
  # 对外暴露prometheus接口并擦好看更多健康信息
  endpoint:
    prometheus:
      enabled: true
    health:
      show-details: always

  ## 关闭内置的检查项
  metrics:
    enable:
      jvm: false
      logback: false
      files: false
      tomcat: false
      executor: false
      disk: false
      uptime: false
      integration: false
  trace:
    http:
      enabled: false
logging:
  config: classpath:log4j2.xml

生成脚本(get_hs_console_info.sh)

工具自动生成,此脚本做参考

#!/usr/bin/env bash
  
/usr/bin/expect << EOF
set timeout 3
spawn /home/dmdba/dmhs_new_20230925/bin/dmhs_console
send "cpt\r"
send "exit\r"
expect eof
EOF

生成脚本(get_hs_console_result_info.sh)

工具自动生成,此脚本做参考

#!/usr/bin/env bash
HS_BIN_DIR=/home/dmdba/dmhs_new_20230925/bin
SCRIPT_DIR=/prometheus/dm_exporter/export_script
LOG_FILE=$SCRIPT_DIR/hs_console.txt
RESULT_FILE=$SCRIPT_DIR/hs_console_result.txt
cd $HS_BIN_DIR
sh $SCRIPT_DIR/get_hs_console_info.sh >$LOG_FILE
sed -i 's/\x1B\[[0-9;]*m//g; s/\x0D$//g; s/\^M\$//g' $LOG_FILE
CheckPointTime=`cat $LOG_FILE |grep "checkpoint time"|awk -F " : " '{print $3}'|awk -F " " '{print $1,$2}'|awk 'NR==1{print}'`
echo 'CheckPointTime='$CheckPointTime'' > $RESULT_FILE
CurrentLogTime=`cat $LOG_FILE |grep "current log time"|awk -F " : " '{print $2}'|awk -F " " '{print $1,$2}'|awk 'NR==1{print}'`
echo 'CurrentLogTime='$CurrentLogTime'' >> $RESULT_FILE

[root@p4-oa15dmdb01 export_script]# cat hs_console_result.txt 
CheckPointTime=2023-10-13 11:41:21
CurrentLogTime=2023-10-13 13:28:10

三、调整promehteus配置文件

prometheusyml_134">1. 添加主机配置 prometheus.yml

[root@Zabbbix prometheus-2.35.0]# vim prometheus.yml

# my global config
global:
  scrape_interval: 1m # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 1m # Evaluate rules every 15 seconds. The default is every 1 minute.
  scrape_timeout: 1m # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - 127.0.0.1:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
   - "rules/*.yml"
     # - "rules/*_alerts.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
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"]
  - job_name: "dmdbms_bgoak_dw"
    metrics_path: "/prometheus"
    static_configs:
      - targets: ["192.63.97.93:9200","192.63.97.94:9200"]
        labels:
          cluster_name: '办公OAK'

2. 添加告警规则vim custom_test.yml

 [root@Zabbbix rules]# vim custom_test.yml
   - alert: 备库重做日志内存堆积过高
    expr: dmdbms_rapply_sys_task_mem_used >= 512000000
    for: 15s
    labels:
      severity: 警告
    annotations:
      description: "主机:{{ $labels.instance }} 备库重做日志内存堆积过高"
      summary: "主机:{{ $labels.instance }}:备库重做日志内存堆积过高,请确认是否正常"
  - alert: 备库重做日志线程数
    expr: dmdbms_rapply_sys_task_num >= 2048
    for: 15s
    labels:
      severity: 警告
    annotations:
      description: "主机:{{ $labels.instance }} 备库重做日志线程数过高"
      summary: "主机:{{ $labels.instance }}:备库重做日志线程数过高,请确认是否正常"
  - alert: HS的进程连接异常
    expr: dmdbms_dmhs_process_is_exit == 0
    for: 15s
    labels:
      severity: 警告
    annotations:
      description: "主机:{{ $labels.instance }} HS的进程连接异常"
      summary: "主机:{{ $labels.instance }}:HS的进程连接异常,请确认是否正常"
  - alert: HS的checkPointTime超过8h
    expr: dmdbms_dmhs_check_point_delay >=0 and dmdbms_dmhs_check_point_delay > 60*60*8
    for: 15s
    labels:
      severity: 警告
    annotations:
      description: "主机:{{ $labels.instance }} HS的checkPointTime超过8h"
      summary: "主机:{{ $labels.instance }}:HS的checkPointTime超过8h,请确认是否正常"

四、修改grafana图表

效果如下:
在这里插入图片描述

在这里插入图片描述

image.png

五、报错

安装expect报错 no acceptable cc found in $PATH

image.png

# 安装gcc的依赖环境
yum install gcc-c++

http://www.niftyadmin.cn/n/5085914.html

相关文章

配电房监测系统:智能化电力管理的关键

随着社会的发展和科技的进步&#xff0c;电力设施的重要性日益凸显。其中&#xff0c;配电房作为电能分配的核心设施&#xff0c;其运行状态直接影响到电力系统的稳定性和可靠性。为了确保配电房的高效运行&#xff0c;采用配电房监测系统成为关键。此类系统利用先进的智能电力…

Kubernetes核心组件Services

1. Kubernetes Service概念 Service是kubernetes最核心的概念&#xff0c;通过创建Service&#xff0c;可以为一组具有相同功能的POD&#xff08;容器&#xff09;应用提供统一的访问入口&#xff0c;并且将请求进行负载分发到后端的各个容器应用上。 在Kubernetes中&#xf…

SpringBootCMS漏洞复现分析

SpringBootCMS&#xff0c;极速开发&#xff0c;动态添加字段&#xff0c;自定义标签&#xff0c;动态创建数据库表并crud数据&#xff0c;数据库备份、还原&#xff0c;动态添加站点(多站点功能)&#xff0c;一键生成模板代码&#xff0c;让您轻松打造自己的独立网站&#xff…

工业异常检测顶会论文及源码合集,含2023最新

在实际的工业质量检测工作中&#xff0c;如何快速发现产品的异常区域是业内人士需要关注的重点&#xff0c;而在这一领域&#xff0c;目标检测发挥着重要的作用。 为了更高效地解决工业场景中的这一问题&#xff0c;近年来工业异常检测出现了许多值得一看的突破性成果&#xf…

LeetCode【73】矩阵置零

题目&#xff1a; 思路&#xff1a; 1、从题目看&#xff0c;在遍历数组的同时&#xff0c;如果遍历到0&#xff0c;回溯i&#xff0c;j&#xff0c;将其对应的行列变为0。不能变更后面的&#xff0c;后面遍历整个数组都将变成0. 2、需要额外的空间存储要变0的标记位&#xf…

AN基础工具——动画人物上色

【AN基础工具——动画人物上色】 基本操作滴管工具填充工具画笔工具流畅画笔工具 实例&#xff0c;给多啦A梦上色注意事项 本篇内容&#xff1a;动画人物绘制基础 重点内容&#xff1a;滴管工具&#xff0c;画笔工具&#xff0c;填充工具 工 具&#xff1a;Adobe Animate 2022 …

软件测试基础知识详解

1、软件测试定义 软件测试是指在规定的条件下对程序进行操作&#xff0c;以发现程序错误&#xff0c;衡量软件质量&#xff0c;并对其是否能满足设计要求进行评估的过程。 2、软件的分类 软件 程序 数据 文档。 按照功能划分&#xff1a; 系统软件&#xff1a;如操作系统…

软件测试/测试开发丨Postman实战练习 学习笔记

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/27801 一、Postman 完成接口测试 保存 har 导入 postman创建测试集创建接口测试用例 二、数据驱动 准备数据&#xff1a;JSON 或者 CSV 格式修改参数设…