Prometheus监控YashanDB

首页    学习-第三方工具对接    三方PC端    Prometheus监控YashanDB

Prometheus监控YashanDB

 

Prometheus是一个开源的监控和警报工具,专门用于收集和分析实时的时间序列数据。它能够解决系统性能监控、故障检测、容量规划和运营效率等问题,通过提供强大的数据收集、灵活的查询语言、实时告警和可视化集成,帮助用户及时发现和响应潜在的系统问题,从而提高系统的稳定性和可靠性。

 

接下来,这篇文章将详细展开如何使用Prometheus监控YashanDB(附实操视频及相关代码)~

 

目录

       Prometheus架构

       演示环境介绍

       配置主机

       配置YashanDB-exporter

       配置Prometheus

       配置Alertmanager

       配置Grafana

 

Prometheus架构

 

Prometheus架构图

 

Prometheus生态系统主要包含以下组件:

       普罗米修斯,用于抓取和存储时间序列数据。

       应用程序exporter,用于收集应用状态数据,并提供给普罗米修斯,比如 YashanDB exporter。

       告警组件alertmanager,用于处理告警。

       其他组件,如Grafana,用于数据可视化展示。

 

 

监控效果图

 

 

Prometheus监控YashanDB操作步骤

 

1. 演示环境介绍

IP地址

主机名称

端口

用途

配置

OS版本

192.168.166.201

dbhost01

1688,1689

崖山数据库-主库

X86 4C 8G

CentOS 7.9

192.168.166.202

dbhost02

1688,1689

崖山数据库-备库

X86 4C 8G

CentOS 7.9

192.168.166.211

exporter

9064

yashandb-exporter

X86 4C 8G

CentOS 7.9

192.168.166.221

prometheus

9090

Prometheus

X86 4C 8G

CentOS 7.9

192.168.166.231

grafana

9093

Grafana

X86 4C 8G

CentOS 7.9

192.168.166.232

alertmanager

3000

Alertmanager

X86 4C 8G

CentOS 7.9

介质准备:

img3

 

2. 配置主机

所有主机必须时区设置正确,时间设置正确。检查与配置命令:

 

3. 配置yashandb-exporter

 

主要内容:准备配置文件,准备数据库用户,准备环境变量,启动exporter并验证监控数据。

 

3.1 数据库监控用户配置


-- 创建监控用户以及设置密码
create user YASOM identified by "Cod-jUi45e3v";
-- 设置适当权限
grant connect to YASOM ;
grant dba to YASOM ;
grant SELECT_CATALOG_ROLE to yasom;

 

3.2 exporter主机设置


useradd exporter
su - exporter

cd ~
tar -zxf /tmp/yashandb_exporter-v0.1.1-103-gc4c22f6-linux-amd64.tar.gz
cd yashandb_exporter/
pwd

# 配置 exporter的库文件地址,监控用户以及密码(配置的信息与数据库用户配置对应)
export LD_LIBRARY_PATH=/home/exporter/yashandb_exporter/lib:$LD_LIBRARY_PATH
export YAS_EXPORTER_TARGETS_PASSWORD="Cod-jUi45e3v"
export YAS_EXPORTER_TARGETS_USER=yasom

对应关系

 

 

3.3 监控指标配置与监控对象配置



# 从模板复制监控配置,这里我们使用默认的监控项目进行演示
cp yashandb-metrics.yml yasexporter.metrics.yml


# 监控对象配置:
vi yasexporter.targets.yml
targets:
    - type: SE
      name: test_export
      pkgVersion: 23.2.5.100
      nodes:
        - id: 1-1
          type: yasdn
          group: "1"
          name: instance1
          connection:
            ip: 192.168.166.201
            port: 1688
        - id: 1-2
          type: yasdn
          group: "1"
          name: instance2
          connection:
            ip: 192.168.166.202
            port: 1688

 

监控对象配置文件如何填写


# 监控对象配置:
vi yasexporter.targets.yml
targets:
    - type: SE # 指定架构,主备高可用架构或者单实例,指定为 SE
      name: test_export # 名称,根据需要进行指定,一个exporter下,名称唯一即可。
      pkgVersion: 23.2.5.100 # 数据库版本,根据实际版本指定
      nodes:
        - id: 1-1
          type: yasdn # 主备高可用架构下,所有实例均指定为 yasdn
          group: "1"
          name: instance1 # 实例名称,建议按照 “instance + 数字” 格式指定。
          connection: # 数据库连接信息,按实际地址指定。
            ip: 192.168.166.201
            port: 1688
        - id: 1-2
          type: yasdn
          group: "1"
          name: instance2
          connection:
            ip: 192.168.166.202
            port: 1688

另可参考此图片来编辑替换监控对象模板文件:

 

 

3.4 启动exporter



# 指定监控的端口,监控项配置文件和监控对象配置文件启动exporter,并观察本机的9064端口,如果可以看到有监控数据,则正常启动
/home/exporter/yashandb_exporter/yashandb_exporter --web.listen-address=:9064 --yashandb.metrics=/home/exporter/yashandb_exporter/yasexporter.metrics.yml --yashandb.targets=/home/exporter/yashandb_exporter/yasexporter.targets.yml > ./run.log 2>&1 &

访问:
http://192.168.166.211:9064/

浏览器能访问到监控数据,exporter抓取成功。

 

 

4. 配置Prometheus

 

编辑 Prometheus配置,启动Prometheus,并验证yashandb-exporter数据。


useradd prome
su - prome

cd ~
tar -zxf /tmp/prometheus-2.54.1-linux-amd64.tar.gz
cd prometheus/

# 编辑示例配置文件,修改后如下:
vi prometheus.yml
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

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

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
   - "rules.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: "yashan-abc"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      #- targets: ["localhost:9090"]
      - targets: ["192.168.166.211:9064"]

 



# 与模板文件比对,
# 主要修改位置有3个:1,alertmanagers配置用来推送告警;2,rules.yml用来配置何时产生告警;3,targets xx:9064 用来配置要监控的数据库EXPORTER。

# 启动Prometheus后,访问主机的 9090 端口观察:1,页面能否正常打开;2,查询yashan相关监控指标是否正常。
./prometheus --config.file=prometheus.yml > ./run.log 2>&1 &

# 访问并查找监控指标
http://192.168.166.221:9090

普罗米修斯中可以查询到对应指标,说明普罗米修斯成功获取到exporter的监控数据。

 

5. 配置alertmanager

5.1 生成邮箱授权码


这里我们演示下如何申请授权码(以163邮箱为例)。

点击 【设置】 , 【POP3/SMTP/IMAP】,

在 【IMAP/SMTP服务】 中 选择 【开启】,【继续开启】。

使用注册手机号扫描二维码,发送短信后,点击 【我已发送】,获取邮箱授权码。

sics_mail@163.com

授权码为:

TMeZi36uAkC7vm4f
 

 

5.2 配置启动 alertmanager


useradd alert
su - alert
cd ~
tar -zxf /tmp/alertmanager-0.28.0-rc.0.linux-amd64.tar.gz
cd alertmanager-0.28.0-rc.0.linux-amd64

# 准备 alertmanager.yml 以及 email.default.html 两个自定义配置文件


vi alertmanager.yml
# 内容见介质 alertmanager.yml email.default.html (已配置可用邮箱)


# 启动并观察Prometheus推送过来的告警是否能正常发出邮件。由于测试环境没有太多异常告警,这里增加一个自定义的监控项目来演示告警触发与解除
./alertmanager --config.file=alertmanager.yml > ./run.log 2>&1 &

# 访问并检查活动的告警
http://192.168.166.232:9093/

 

5.3 配置示例告警项(自定义监控项与告警项)

 


# 编辑exporter配置并重启exporter
vi yasexporter.metrics.yml
# 编辑此配置文件,增加以下部分(无业务意义,用来做告警示例):
  - name: random_val
    query: select trunc(20*random()) as random_val from dual
    sub_metrics:
      - col: random_val
        type: gauge
        description: a random value between 0 ~ 20

# 重启exporter生效
ps -ef|grep yashandb_exporter
kill -9 <pid>
# 启动exporter
export LD_LIBRARY_PATH=/home/exporter/yashandb_exporter/lib:$LD_LIBRARY_PATH
export YAS_EXPORTER_TARGETS_PASSWORD="Cod-jUi45e3v"
export YAS_EXPORTER_TARGETS_USER=yasom
/home/exporter/yashandb_exporter/yashandb_exporter --web.listen-address=:9064 --yashandb.metrics=/home/exporter/yashandb_exporter/yasexporter.metrics.yml --yashandb.targets=/home/exporter/yashandb_exporter/yasexporter.targets.yml > ./run.log 2>&1 &


# 编辑普罗米修斯告警规则并重启普罗米修斯
vi rules.yml
# 编辑此配置文件,增加以下部分(无业务意义,用来做告警示例):
# 自定义
      - alert: YashanDB随机值超过3
        expr: yashandb_random_val > 3
        for: 60s
        labels:
          ruleType: yasdb
          ruleName: YashanDB随机值超过3
          ruleNameEN: yashandb_random_val_bigger_than_3
        annotations:
          groupNameEN: yashandb_exporter
          alertEN: yashandb_random_val_bigger_than_3-Critical
          severity: "critical"
          unit: ""
          opt: ">"
          threshold: 1
          exprStr: yashandb_random_val
          summary: "检测到YashanDB随机值超过3: {{ $labels.instance }}-{{ $labels.nodeId }}"
          summaryEN: "yashandb_random_val_bigger_than_3: {{ $labels.instance }}-{{ $labels.nodeId }}"
          suggestion: "建议检查随机值生成逻辑"
          eventLabel: "important"
          value: "{{$value}}"

# 重启 普罗米修斯
ps -ef|grep prometheus
kill -s SIGHUP <pid>
 

 

上面我们增加了一个自定义监控项与告警项,稍等一会,就可以看到触发的告警并接收到告警邮件了。

当默认监控项目不能满足业务需求,我们可以自行增加监控项和告警项,来更好的服务业务需求。

 

5.4 告警抑制

通过alertmanager的silence功能进行告警抑制,详见视频。

 

6. 配置Grafana

 


useradd grafana
su - grafana
cd ~
tar -zxf /tmp/grafana-enterprise-11.3.0.linux-amd64.tar.gz
cd grafana-v11.3.0/


./bin/grafana server > ./run.log 2>&1 &

# 启动,使用浏览器访问,进行图形化配置
http://192.168.166.231:3000

# 配置数据源:普罗米修斯数据源地址
http://192.168.166.221:9090

浏览器访问 192.168.166.231:3000 ,并使用默认用户名密码admin/admin 登录(示例中,修改新密码为Yasdb_123)。

 

包含 grafana配置,监控数据接入,仪表板设置以及监控数据可视化方法的讲解。(详见视频)