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
|
介质准备:

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配置,监控数据接入,仪表板设置以及监控数据可视化方法的讲解。(详见视频)