在Docker环境中,使用Alertmanager将警报发送到Slack

本文中要做的事情

使用docker-compose启动Prometheus和alertmanager容器,并确认Slack接收到的警报。

Screen Shot 2020-12-24 at 8.11.31.png

环境

在Docker环境中,创建一个可以运行以下应用程序的容器:
– Prometheus版本:2.23.0
– alertmanager版本:0.21.0

环境配置

本文将使用docker-compose来构建Prometheus和alertmanager。首先,按照以下方式创建文件结构。

docker-compose.yaml
prometheus
-- prometheus.yaml
-- alert_rules.yaml
alertmanager
-- alertmanager.yaml

接下来,使用命令docker network create –subnet=172.19.0.0/19 prom_net来创建docker网络。在设置文件和docker网络构建完成后,使用以下的docker-compose.yaml来构建docker环境。

version: '2.2'
# define services
services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    volumes: 
       - ./prometheus:/etc/prometheus
    command: "--config.file=/etc/prometheus/prometheus.yaml --storage.tsdb.retention.time=10m"
    ports: 
      - 9090:9090      
    restart: "no"
  alertmanager:
    image: prom/alertmanager
    container_name: alertmanager
    volumes:
      - ./alertmanager:/etc/alertmanager
    command: "--config.file=/etc/alertmanager/alertmanager.yaml"
    ports:
      - 9093:9093
    restart: "no"

# define network
networks:  
  default:
    external:
      name: prom_net

普羅米修斯的配置

Prometheus的配置文件如下。请在slack_api_url: ‘< Your channel on Slack >’处输入您创建的任意Slack的Webhook URL。

global:
  slack_api_url: '< Your channel on Slack >'

route:
  receiver: slack
  routes:
  - match:
      receiver: 'slack'


receivers:
  - name: slack
    slack_configs:
    - channel: '< Channel Name >'
      text: '< Optional Text>'

以下是 Prometheus 针对 Metric 发送警报的配置。关于发送警报的条件,您可以选择任意适当的指标,来进行自定义的选择。

groups:
- name: prometheus_build
  rules:
  - alert: test
    expr: prometheus_build_info == 1
    for: 10s
    labels:
      severity: notice
    annotations:
      text: testsing alert

考试

最后,启动每个应用程序的容器,并确认由Prometheus和Slack发送的警报。顺便说一下,以下是由docker-compose组成的容器启动和停止命令。
docker-compose up
docker-compose down

普罗米修斯

Screen Shot 2020-12-24 at 7.47.22.png

松弛

Screen Shot 2020-12-24 at 7.40.55.png

感受

我使用Prometheus和alertmanager在Slack上确认了警告是否能够接收。未来,我希望能够将警报发送到Elasticsearch,并在Kibana上查看日志。在本文中,为了确认是否能够发送警报,我使用了Slack的频道。

bannerAds