通过docker部署prometheus、node-exporter、alertmanager和grafana。prometheus最新版本:2.19.2
- 主机说明:
系统 | ip | 角色 | cpu | 内存 | hostname |
---|---|---|---|---|---|
CentOS 7.8 | 192.168.30.135 | prometheus、node1 | >=2 | >=2G | prometheus |
CentOS 7.8 | 192.168.30.136 | altermanager、node2 | >=2 | >=2G | altermanager |
CentOS 7.8 | 192.168.30.137 | grafana、node3 | >=2 | >=2G | grafana |
- 全部关闭防火墙和selinux:
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config && setenforce 0
- 安装docker:
curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo
yum makecache fast
yum install -y docker-ce
systemctl start docker && systemctl enable docker
- node-exporter:
docker pull prom/node-exporter:latest
docker run -d -p 9100:9100 --name node-exporter prom/node-exporter:latest
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
95252704e558 prom/node-exporter:latest "/bin/node_exporter" 3 seconds ago Up 2 seconds 0.0.0.0:9100->9100/tcp node-exporter
netstat -lntp |grep docker
tcp6 0 0 :::9100 :::* LISTEN 9076/docker-proxy
- alertmanager:
mkdir /home/prom && cd /home/prom
docker pull prom/alertmanager:latest
docker pull timonwong/prometheus-webhook-dingtalk #钉钉告警
vim config.yml
targets:
webhook:
url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx #修改为钉钉机器人的webhook
mention:
all: true
vim alertmanager.yml
global:
resolve_timeout: 5m
smtp_smarthost: 'smtp.163.com:465' #邮箱smtp服务器代理,启用SSL发信, 端口一般是465
smtp_from: 'alert@163.com' #发送邮箱名称
smtp_auth_username: 'alert@163.com' #邮箱名称
smtp_auth_password: 'password' #邮箱密码或授权码
smtp_require_tls: false
route:
receiver: 'default'
group_wait: 10s
group_interval: 1m
repeat_interval: 1h
group_by: ['alertname']
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'instance']
receivers:
- name: 'default'
email_configs:
- to: 'receiver@163.com'
send_resolved: true
webhook_configs:
- url: 'http://192.168.30.136:8060/dingtalk/webhook/send'
send_resolved: true
docker run -d -p 8060:8060 -v /home/prom/config.yml:/etc/prometheus-webhook-dingtalk/config.yml --name alertdingtalk timonwong/prometheus-webhook-dingtalk
docker run -d -p 9093:9093 -p 9094:9094 -v /home/prom/alertmanager.yml:/etc/alertmanager/alertmanager.yml --name alertmanager prom/alertmanager:latest
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bed08b1b251d prom/alertmanager:latest "/bin/alertmanager -…" 3 seconds ago Up 2 seconds 0.0.0.0:9093-9094->9093-9094/tcp alertmanager
1449d7d0a445 timonwong/prometheus-webhook-dingtalk "/bin/prometheus-web…" 21 seconds ago Up 20 seconds 0.0.0.0:8060->8060/tcp alertdingtalk
cf90ea931188 prom/node-exporter:latest "/bin/node_exporter" 23 minutes ago Up 23 minutes 0.0.0.0:9100->9100/tcp node-exporter
netstat -lntp |grep docker
tcp6 0 0 :::9100 :::* LISTEN 14970/docker-proxy
tcp6 0 0 :::8060 :::* LISTEN 17666/docker-proxy
tcp6 0 0 :::9093 :::* LISTEN 17808/docker-proxy
tcp6 0 0 :::9094 :::* LISTEN 17794/docker-proxy
- prometheus:
mkdir -p /home/prom/data && chmod 777 /home/prom/data && cd /home/prom
docker pull prom/prometheus:latest
vim alert-rules.yml
groups:
- name: node-alert
rules:
- alert: NodeDown
expr: up{
job="node"} == 0
for: 5m
labels:
severity: critical
instance: "{
{ $labels.instance }}"
annotations:
summary: "instance: {
{
$labels.instance }} down"
description: "