prometheus监控mongodb#
1 mongodb_exporter部署#
1.1 安装#
1
2
3
4
| wget
https://github.com/percona/mongodb_exporter/releases/download/v0.11.2/mongodb_exporter-0.11.2.linux-amd64.tar.gz
tar xf mongodb_exporter-0.11.2.linux-amd64.tar.gz -C /opt/
cd /opt &&mv mongodb_exporter-0.11.2.linux-amd64.tar.gz mongodb_exporter
|
1.2 启动#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #无密码
/opt/mongodb_exporter/mongodb_exporter --mongodb.uri=mongodb://172.16.0.9:27017
#有密码
/opt/mongodb_exporter/mongodb_exporter --mongodb.uri=mongodb://user:password@172.16.0.9:27017
cat <<EOF >/usr/lib/systemd/system/mongodb_exporter.service
[Unit]
Description=MongoDB Exporter
User=root
[Service]
Type=simple
Restart=always
ExecStart=/opt/mongodb_exporter/mongodb_exporter --
mongodb.uri=mongodb://172.16.0.9:27017
[Install]
WantedBy=multi-user.target
EOF
systemctl start mongodb_exporter&&systemctl enable mongodb_exporter
|
mongodb_exporter暴露的endpoint端口默认为9216
1
| curl http://172.16.0.9:9216/metrics
|
2 配置prometheus连接mongodb_exporter#
1
2
3
4
5
| - job_name: 'elasticsearch_exporter'
scrape_interval: 10s
metrics_path: "/metrics"
static_configs:
- targets: ['172.16.0.9:9216']
|
3 Grafana dashboard#
导入mongodb监控模板,dashboard Id:2583 12079
4 添加mongodb监控告警#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| groups:
- name: mongodb
rules:
- alert: MongodbDown
expr: mongodb_up == 0
for: 0m
labels:
severity: critical
annotations:
summary: MongoDB Down (instance {{ $labels.instance }})
description: "MongoDB instance is down\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
- alert: MongodbReplicationLag
expr: mongodb_mongod_replset_member_optime_date{state="PRIMARY"} - ON (set) mongodb_mongod_replset_member_optime_date{state="SECONDARY"} > 10
for: 0m
labels:
severity: critical
annotations:
summary: MongoDB replication lag (instance {{ $labels.instance }})
description: "Mongodb replication lag is more than 10s\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
- alert: MongodbReplicationHeadroom
expr: (avg(mongodb_mongod_replset_oplog_tail_timestamp - mongodb_mongod_replset_oplog_head_timestamp) - (avg(mongodb_mongod_replset_member_optime_date{state="PRIMARY"}) - avg(mongodb_mongod_replset_member_optime_date{state="SECONDARY"}))) <= 0
for: 0m
labels:
severity: critical
annotations:
summary: MongoDB replication headroom (instance {{ $labels.instance }})
description: "MongoDB replication headroom is <= 0\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
- alert: MongodbTooManyConnections
expr: avg by(instance) (rate(mongodb_connections{state="current"}[1m])) / avg by(instance) (sum (mongodb_connections) by (instance)) * 100 > 80
for: 2m
labels:
severity: warning
annotations:
summary: MongoDB too many connections (instance {{ $labels.instance }})
description: "Too many connections (> 80%)\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
|