Prometheus+Grafana+Altermanager部署篇
概述Prometheus
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。
https://prometheus.io
https://github.com/prometheus
Prometheus 特点:
- 多维数据模型:由度量名称和键值对标识的时间序列数据
- PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询
- 不依赖分布式存储,单个服务器节点可直接工作
- 基于HTTP的pull方式采集时间序列数据
- 推送时间序列数据通过PushGateway组件支持
- 通过服务发现或静态配置发现目标
- 多种图形模式及仪表盘支持(grafana)
Prometheus 组成及架构:
- Prometheus Server:收集指标和存储时间序列数据,并提供查询接口
- ClientLibrary:客户端库
- Push Gateway:短期存储指标数据。主要用于临时性的任务
- Exporters:采集已有的第三方服务监控指标并暴露metrics
- Alertmanager:告警
- Web UI:简单的Web控制
部署Prometheus
- Prometheus 安装在/data/prometheus 目录下,数据存储目录在/data/prometheus/data,并开启热加载,开启日志输出在/var/log/message
mkdir -p /data
wget https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz -O /data/prometheus-2.23.0.linux-amd64.tar.gz
tar -xvf /data/prometheus-2.23.0.linux-amd64.tar.gz -C /data/
mv /data/prometheus-2.23.0.linux-amd64 /data/prometheus
/data/prometheus/promtool check config /data/prometheus/prometheus.yml
cat > /usr/lib/systemd/system/prometheus.service <<EOF
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/data/prometheus/prometheus --web.enable-lifecycle --config.file=/data/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus/data --log.level=info --log.format=logfmt
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl restart prometheus
systemctl enable prometheus
部署node_exporter
- 安装收集Linux 主机的node_exporter服务
wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
tar zxf node_exporter-1.0.1.linux-amd64.tar.gz
mv node_exporter-1.0.1.linux-amd64 /usr/local/node_exporter
cat <<EOF >/usr/lib/systemd/system/node_exporter.service
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/node_exporter/node_exporter --web.listen-address=:19100
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable node_exporter
systemctl restart node_exporter
Docker部署cAdvisor 监控主机的docker容器
docker run -d \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--restart=awlays \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
部署grafana
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-6.7.2-1.x86_64.rpm
yum install grafana-enterprise-6.7.2-1.x86_64.rpm -y
systemctl daemon-reload
systemctl restart grafana-server.service
systemctl enable grafana-server.service
- Linux 主机监控模板:9276
- Docker 容器监控模板:193
安装Altermanager
- 实现prometheus的告警,需要通过altermanager这个组件;在prometheus服务端写告警规则,在altermanager组件配置邮箱、企业微信、webhook等
Alertmanager与Prometheus是相互分离的两个组件。Prometheus服务器根据报警规则将警报发送给Alertmanager,然后Alertmanager将silencing、inhibition、aggregation等消息通过电子邮件、dingtalk和HipChat发送通知。
Alertmanager处理由例如Prometheus服务器等客户端发来的警报。它负责删除重复数据、分组,并将警报通过路由发送到正确的接收器,比如电子邮件、Slack、dingtalk等。Alertmanager还支持groups,silencing和警报抑制的机制。
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz -O /data/alertmanager-0.21.0.linux-amd64.tar.gz
tar xvf /data/alertmanager-0.21.0.linux-amd64.tar.gz -C /data
mv /data/alertmanager-0.21.0.linux-amd64 /data/alertmanager
cat > /usr/lib/systemd/system/alertmanager.service << EOF
[Unit]
Description=https://alertmanager.io
[Service]
Restart=on-failure
ExecStart=/data/alertmanager/alertmanager --config.file=/data/alertmanager/alertmanager.yml --log.format=logfmt --log.level=info --storage.path=/data/alertmanager/data
[Install]
WantedBy=multi-user.target
EOF
/data/alertmanager/amtool check-config /data/alertmanager/alertmanager.yml
systemctl daemon-reload
systemctl restart alertmanager.service
systemctl enable alertmanager.service