prometheus+grafana 企业监控应用实战笔记
使用环境
操作系统,CentOS Linux 7 (Core) hostnamectl
prometheus+grafana+alertmanager
prometheus
Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。
- promethus ,使用docker安装;
docker run --restart=always --name prometheus -d -p 9090:9090 \
-v /docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /docker/prometheus/node_exporter_rules.yml:/etc/prometheus/node_exporter_rules.yml \
prom/prometheus
2.prometheus.yml 配置文件;
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.0.133:9093
rule_files:
- "/etc/prometheus/node_exporter_rules.yml"
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'Liunx'
static_configs:
- targets: ['192.168.0.111:9100','192.168.0.133:9100']
- job_name: 'docker'
static_configs:
- targets: ['192.168.0.133:9200','192.168.0.111:9200']
- node_exporter_rules.yml 监控主机 配置文件
# 服务器资源告警策略
groups:
- name: "服务器资源监控"
rules:
- alert: "内存使用率过高"
expr: (node_memory_Buffers_bytes+node_memory_Cached_bytes+node_memory_MemFree_bytes)/node_memory_MemTotal_bytes*100 > 30
for: 1m # 告警持续时间,超过这个时间才会发送给alertmanager
labels:
severity: "critical"
annotations:
summary: "{{ $labels.instance }} 内存使用率过高,请尽快处理!"
description: "{{ $labels.instance }}内存使用率超过30%,当前使用率{{ $value }}%."
安装grafana
Grafana 官方是这么介绍 Grafana 的:grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。
Grafana 官方还对 Grafana 的适用场景以及基本特征作了介绍:
grafana最常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。
grafana有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、InfluxDB、OpenTSDB、Elasticsearch。
docker安装grafana
docker run -d --restart=always --name=grafana -p 3000:3000 grafana/grafana
访问地址:http://$ip:3000
初始 用户名密码 admin admin
设置新密码 123456
node_exporter 主机 仪表盘id: 8919 || 9276
google/cadvisor 窗器 仪表盘id: 193
安装主机采集器 node_exporter
https://prometheus.io 去下载 node_exporter-1.5.0.linux-amd64.tar.gz
tar zxvf node_exporter-1.5.0.linux-amd64.tar.gz
# vi /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
[Service]
ExecStart=/safe/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[install]
WanteBy-multi=user.target
设置 node_exporter开机启动
systemctl daemon-reload -- 加载系统配置
systemctl start node_exporter
systemctl enable node_exporter
安装窗口采集器 cadvisor
docker run \
-v=/:/rootfs:ro \
-v=/var/run:/var/run:rw \
-v=/sys:/sys:ro \
-v=/var/lib/docker/:/var/lib/docker:ro \
-v=/dev/disk/:/dev/disk:ro \
-p=9200:8080 \
--detach=true \
--name=cadvisor \
--restart=always \
google/cadvisor
安装告警 alertmanager
# vi /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=alertmanager
[Service]
ExecStart=/safe/alertmanager/alertmanager --storage.path="/safe/alertmanager/data/" --config.file=/safe/alertmanager/alertmanager.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[install]
WanteBy-multi=user.target
alertmanager.yml
global:
resolve_timeout: 5m #每5分钟检测一次是否恢复
# smtp配置
smtp_from: "945389565@qq.com" # 发送邮件主题
smtp_smarthost: 'smtp.qq.com:25' # 邮箱服务器的SMTP主机配置
smtp_auth_username: "945389565@qq.com" # 登录用户名
smtp_auth_password: "hxvpujmyivafbegb" # 此处的auth password是邮箱的第三方登录授权密码,而非用户密码,尽量用QQ来测试。
smtp_require_tls: false # 有些邮箱需要开启此配置,这里使用的是163邮箱,仅做测试,不需要开启此功能。
route:
group_by: ['alertname']
group_wait: 5s
group_interval: 5s
repeat_interval: 24h
receiver: 'email'
receivers:
- name: 'email'
email_configs:
- to: '857423357@qq.com'
send_resolved: true
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
访问地址 http://ip:9093
设置alertmanager 开机启动
systemctl daemon-reload -- 加载系统配置
systemctl start alertmanager
systemctl enable alertmanager
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
Prometheus常用告警规则rules.yml
https://blog.51cto.com/u_64214/6080565