docker手把手搭建prometheus+grafana+alertmanager做服务监控/告警系统

简介

node-exporter:服务信息exporter,暴露一个http接口,输出服务器信息
prometheus:为时间序列数据库,常用于存储与时间相关的指标数据,并且提供告警功能,可以用于监控系统
grafana:提供仪表板,方便观测数据

三者结合:
node-exporter将数据提供给prometheus做持久化,prometheus将数据提供给grafana做数据看板,数据指标分析。

ps:注意,本案例使用的服务器IP为10.14.8.157,若下列见到相关的ip,可以替换为你们自己的服务器信息。

安装镜像包(最新)

docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana

启动node-exporter

创建node-exporter容器并启动

docker run -d -p 9100:9100 \
  --name node-exporter \
  -v "/proc:/host/proc:ro" \
  -v "/sys:/host/sys:ro" \
  -v "/:/rootfs:ro" \
  --net="host" \
  prom/node-exporter

在浏览器访问,检查服务是否可用

http://10.14.8.157:9100/metrics

若出现以下界面,则表示node-exploer已启动完毕,该程序将暴露服务的信息和健康状态
在这里插入图片描述

启动prometheus

启动prometheus时需要制定配置文件,先准备好配置文件

mkdir /opt/prometheus
cd /opt/prometheus/
vim prometheus.yml

prometheus.yml内容如下

global:
  scrape_interval:     60s
  evaluation_interval: 60s
 
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus
 
  - job_name: node-exporter
    static_configs:
      - targets: ['localhost:9100']
        labels:
          instance: localhost

其中,localhost为该服务器的ip地址,大家自行替换

启动prometheus

docker run  -d \
  --name prometheus \
  -p 9090:9090 \
  -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \
  --network="host" \
  prom/prometheus

在浏览器访问一下地址

http://10.14.8.157:9090/targers

若出现以下界面,表示prometheus启动成功
在这里插入图片描述

启动grafana

创建存储数据目录

mkdir /opt/grafana-storage
# 因为grafana会自己写数据进来,所以设置一下权限
chmod 777 -R /opt/grafana-storage

启动服务

docker run -d \
  -p 3000:3000 \
  --name=grafana \
  -v /opt/grafana-storage:/var/lib/grafana \
  grafana/grafana

在浏览器访问以下地址

http://10.14.8.157:3000/

若出现以下界面则表示启动成功
在这里插入图片描述

初始化用户密码: admin/admin
首次登录后,会要求变更密码,大家可以体验一下。

altermanager告警

实现了数据看板、观测后。自然地,当服务指标发生异常现象时,我们应当立即知晓并紧急修复问题,这个时候就需要借助告警系统了。
prometheus天生支持altermanager告警,因此我们来学习下告警是如何配置,如何使用的。

拉取altermanager资源

docker pull prom/alertmanager

配置文件

创建配置目录以及文件

mkdir -p /opt/alertmanager
cd /opt/alertmanager
#创建配置文件
vi alertmanager.yml

alertmanager内容如下:

global:
  resolve_timeout: 5m
  smtp_from: 'winnie@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: 'winnie@qq.com'
  smtp_auth_password: 'xxxxxx'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: 'winnie@qq.com'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

启动服务

docker run -d \
    --name alertmanager \
    -p 9093:9093 \
    -v /opt/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
    --network "host" \
    prom/alertmanager

浏览器访问,检查服务是否已启动

http://10.14.8.157:9093/

若出现下图表示alertmanager成功启动
在这里插入图片描述

配置告警规则rules

创建告警规则路径

mkdir -p /opt/alertmanager/rules
cd /opt/alertmanager/rules
#创建规则
vi node-up.rules

node-up.yml内容如下:

groups:
- name: node-up
  rules:
  - alert: node-up
    expr: up{job="node-exporter"} == 0
    for: 15s
    labels:
      severity: 1
      team: node
    annotations:
      summary: "{{ $labels.instance }} 已停止运行超过 15s!"

expr:up{job=“node-exporter”} == 0表示 服务下线
for:15s 表示持续15s
annotations.summary 表示提示语

上述配置表示job(node-exporter)下线持续15s,则启动告警

配置prometheus配置文件,指定告警路由和规则

prometheus.yml

...
# Altermanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 10.14.8.157:9093
rule_files:
  - "/usr/local/alertmanager/rules/*.yml"

注意:rule_files为容器内路径,所以启动promethus时,还需要将rules文件挂载到prometheus容器中

修改prometheus启动参数

docker run  -d \
  --name prometheus \
  -p 9090:9090 \
  -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \
  -v /opt/alertmanager/rules/:/usr/local/alertmanager/rules/ \
  --network="host" \
  prom/prometheus

访问prometheus-rules webui界面

http://10.14.8.157:9090/rules

若出现以下界面则表示prometheus配置alertmanager成功
在这里插入图片描述

测试邮件告警

关闭node-exporter节点进行测试

docker stop node-exporter

在prometheus 的WEBUI界面可以看到产品告警信息
在这里插入图片描述

过一会会受到邮件告警,告警频率是根据route.repeat_interval配置决定的,当前是1分钟一次
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值