Prometheus 监控报警系统 AlertManager 之邮件告警

转载自:https://cloud.tencent.com/developer/article/1486483

文章目录 1、Prometheus & AlertManager 介绍

Prometheus 是一套开源的系统监控、报警、时间序列数据库的组合,最初有 SoundCloud 开发的,后来随着越来越多公司使用,于是便独立成开源项目。Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,例如邮件、微信、钉钉、Slack 等常用沟通工具,而且很容易做到告警信息进行去重,降噪,分组等,是一款很好用的告警通知系统。

2、环境、软件准备

本次演示环境,我是在本机 MAC OS 上操作,以下是安装的软件及版本:

Docker: 18.06.3-ce

Oracle VirtualBox: 6.0.8 r130520 (Qt5.6.3)

Linux: 7.6.1810

Prometheus: v2.11.1

Alertmanager: v0.18.0

Node-Exporter: v0.18.1

注意:这里为了快速方便启动 Prometheus、Alertmanager、Node-Exporter 服务,我使用 Docker 方式启动,所以本机需要安装好 Docker 环境,这里忽略 Docker 的安装过程,着重介绍一下如何启动并配置 Prometheus 监控报警系统 集成 AlertManager,并配置 Email 发送告警信息。

3、启动并配置 Prometheus 3.1、Docker 启动 Prometheus

启动 Prometheus 很简单,这里为了方便,我采用 Docker 方式启动,最简单的启动命令如下:

$ docker run --name prometheus -d -p 9090:9090 prom/prometheus:latest

这里默认 Prometheus 开放 9090 端口,我们使用最新版官方镜像,当前最新版本为 v2.11.1,启动完成后,浏览器访问 <IP>:9090 即可看到默认 UI 页面。

img

Prometheus 默认配置文件 prometheus.yml 在容器内路径为 /etc/prometheus/prometheus.yml,我们可以进入到容器内查看一下。

$ docker exec -it prometheus /bin/sh /prometheus $ cat /etc/prometheus/prometheus.yml # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \'evaluation_interval\'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it\'s Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: \'prometheus\' # metrics_path defaults to \'/metrics\' # scheme defaults to \'http\'. static_configs: - targets: [\'localhost:9090\']

从默认配置可以看到 Alertmanager 配置、rule 报警规则、监听目标端点配置等,每一项的配置我就不一一解释了,下边具体使用中,会分别讲到。现在 Prometheus 已经启动起来了,我们需要启动一个 exporter 来供 Prometheus 监控获取指标值,这里以一个常用的 node-exproter 为例,它是最基本的节点监控客户端,负责监控机器的各个指标,包括节点存活、CPU、Mem、Network、IO 等等,方便后边演示 Alertmanager 报警时的触发条件,例如配置节点存活检测,当机器 Down 时,触发报警控制,那么就可以通过停止 node-exporter 来模拟实现了。

3.2、Docker 启动 node-exporter

同样采用 Docker 方式启动 node-exporter 服务,最简单的启动命令如下:

$ docker run --name node-exporter -d -p 9100:9100 prom/node-exporter:latest

这里 node-exporter 默认启动端口为 9100,当前镜像最新版本为 v0.18.0。启动完成后,浏览器访问 <IP>:9100/metrics 可以看到提供的监控指标项列表了。

img

3.3、Prometheus 配置 node-exproter

接下来,我们需要将 node-exporter 信息配置到 Prometheus 中,来让 Prometheus 定期获取 exporter 采集的信息,那么就需要修改 prometheus.yml 配置文件,在 scrape_configs 下新增一个 job,配置如下:

$ mkdir -p /root/prometheus && cd /root/prometheus $ vim prometheus.yml global: scrape_interval: 15s evaluation_interval: 15s # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \'evaluation_interval\'. rule_files: # - "first_rules.yml" # - "second_rules.yml" scrape_configs: - job_name: \'prometheus\' static_configs: - targets: [\'192.168.1.124:9090\'] labels: instance: prometheus service: prometheus-service - job_name: \'node-exporter\' static_configs: - targets: [\'192.168.1.124:9100\'] labels: instance: vm-192.168.1.124 service: node-service

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfzsz.html