Docker は prometheus+grafana+alertmanager+dingtalk をデプロイして DingTalk アラートを実装します


コンセプトについては話さず、そのまま操作してみましょう……

ドッカーのインストール

prometheusを使ってDingTalkアラームを実現するのはコンテナで実現しているので、dockerのインストール方法は前回の記事dockerのインストールと起動 – centos7       にあります
       以下のような結果が出れば成功です

[root@iZbp16vhn64fpaj6qmsum0Z ~]# docker --version
Docker version 24.0.2, build cb74dfc

       次のステップは、インストールして開始することです。前の記事を読んでください。

準備

画像プル

       使用する必要がある画像を取得します

docker pull prom/node-exporter
docker pull grafana/grafana 
docker pull prom/prometheus 
docker pull prom/alertmanager 
docker pull timonwong/prometheus-webhook-dingtalk 


ここに画像の説明を挿入します
       以下に       示すように
prom/node-exporter、ホスト システムの情報とインジケータを収集するために使用されます。

grafana/grafana: 監視メトリクスを視覚化および分析するためのオープンソース プラットフォームです。

prom/prometheus: 時系列データを収集および保存し、データベースのクエリ、アラーム、および視覚化機能を提供するために使用されるオープンソースの監視システムです。

prom/alertmanager: これは Prometheus のアラーム マネージャーであり、Prometheus サーバーからのアラーム通知を処理およびルーティングするために使用されます。

timonwong/prometheus-webhook-dingtalk: Prometheus アラーム通知を DingTalk に送信するために使用される Webhook であり、サードパーティのオープン ソース ソフトウェアです。

コンテナの起動

ノードエクスポーターを開始する

 docker run -d -p 9100:9100 -v /proc:/host/proc:ro -v /sys:/host/sys:ro -v /:/rootfs:ro prom/node-exporter

訪問を見る
ここに画像の説明を挿入します

プロメテウスを起動する

       prometheus を開始する前に、prometheus.yml ファイルを自分で作成し、ボリュームを使用してそれをコンテナー内にマウントできます。

# 创建挂载目录
mkdir /opt/prometheus
cd /opt/prometheus/
# 编写该文件
vim prometheus.yml

prometheus.yml ファイル

global:
  scrape_interval:     60s
  evaluation_interval: 60s
# Alertmanager配置
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['121.43.108.111:9090'] # 采取prometheus指标数据
        labels:
          instance: prometheus
  - job_name: linux
    static_configs:
      - targets: ['121.43.108.111:9100'] # 采取本地指标数据
        labels:
          instance: localhost

起動する

docker run  -d -p 9090:9090 -v /opt/prometheus:/etc/prometheus prom/prometheus

訪問を見る
ここに画像の説明を挿入します

グラファナを開始する

docker run -d -p 3000:3000 --name=grafana grafana/grafana

訪問を見る
ここに画像の説明を挿入します

Webhook-prometheus-dingtalk を開始する

まず、 DingTalk アラーム ロボットをwebhook token
ここに画像の説明を挿入します
起動します。
注: ここを --ding.profile="webhook1= 自己复制的webhook"に変更します。

 docker run -d --restart always -p 8060:8060 timonwong/prometheus-webhook-dingtalk:v0.3.0 --ding.profile="webhook1=复制的webhook"

アラートマネージャーを開始する

       alertmanager を開始する前に、alertmanager.yml ファイルを自分で作成し、ボリュームを使用してそれをコンテナー内にマウントできます。

# 创建挂载目录
mkdir /opt/alertmanager
cd /opt/alertmanager/
# 编写该文件
vim alertmanager.yml

アラートマネージャー.yml

global:
  resolve_timeout: 5m

route: # 告警路由配置,定义如何处理和发送告警
  receiver: webhook
  group_wait: 30s
  group_interval: 1m
  repeat_interval: 4h
  group_by: [alertname]
  routes:
  - receiver: webhook
    group_wait: 10s

receivers: # 告警接收者配置,定义如何处理和发送告警
- name: webhook
  webhook_configs:
  - url: http://121.43.108.111:8060/dingtalk/webhook1/send  # 告警 Webhook URL
    send_resolved: true # 是否发送已解决的告警。如果设置为 true,则在告警解决时发送通知

起動する

docker run -d -p 9093:9093 -v /opt/alertmanager/:/etc/alertmanager/ --name alertmanager prom/alertmanager

訪問を見る
ここに画像の説明を挿入します

すべてのコンテナは次のように正常に起動されます。

ここに画像の説明を挿入します

プロメテウスをアラートマネージャーに関連付ける

prometheus ディレクトリの rules.yml ファイルにアラーム ルールを作成します。

[root@iZbp16vhn64fpaj6qmsum0Z prometheus]# pwd
/opt/prometheus
[root@iZbp16vhn64fpaj6qmsum0Z prometheus]# cat rules.yml 
groups:
  - name: host_monitoring
    rules:
    - alert: 内存报警
      expr: netdata_system_ram_MiB_average{
    
    chart="system.ram",dimension="free",family="ram"} < 800
      for: 2m
      labels:
        team: node
      annotations:
        Alert_type: 内存报警
        Server: '{
    
    {$labels.instance}}'
        #summary: "{
    
    {$labels.instance}}: High Memory usage detected"
        explain: "内存使用量超过90%,目前剩余量为:{
    
    { $value }}M"
        #description: "{
    
    {$labels.instance}}: Memory usage is above 80% (current value is: {
    
    { $value }})"    - alert: CPU报警
      expr: netdata_system_cpu_percentage_average{
    
    chart="system.cpu",dimension="idle",family="cpu"} < 20      for: 2m
      labels:
        team: node
      annotations:
        Alert_type: CPU报警
        Server: '{
    
    {$labels.instance}}'
        explain: "CPU使用量超过80%,目前剩余量为:{
    
    { $value }}"
        #summary: "{
    
    {$labels.instance}}: High CPU usage detected"
        #description: "{
    
    {$labels.instance}}: CPU usage is above 80% (current value is: {
    
    { $value }})"
    - alert: 磁盘报警
      expr: netdata_disk_space_GiB_average{
    
    chart="disk_space._",dimension="avail",family="/"} < 4
      for: 2m
      labels:
        team: node
      annotations:
        Alert_type: 磁盘报警
        Server: '{
    
    {$labels.instance}}'
        explain: "磁盘使用量超过90%,目前剩余量为:{
    
    { $value }}G"
    - alert: 服务告警
      expr: up == 0
      for: 2m
      labels:
        team: node
      annotations:
        Alert_type: 服务报警
        Server: '{
    
    {$labels.instance}}'
        explain: "netdata服务已关闭"

prometheus.yml ファイルを変更して関連付けます

[root@iZbp16vhn64fpaj6qmsum0Z prometheus]# pwd
/opt/prometheus
[root@iZbp16vhn64fpaj6qmsum0Z prometheus]# cat prometheus.yml 
global:
  scrape_interval:     60s
  evaluation_interval: 60s
# Alertmanager配置
alerting:
  alertmanagers:
    - static_configs:
        - targets: ["121.43.108.111:9093"]
# rule配置
rule_files:
  - "/etc/prometheus/rules.yml"
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['121.43.108.111:9090']
        labels:
          instance: prometheus
  - job_name: linux
    static_configs:
      - targets: ['121.43.108.111:9100']
        labels:
          instance: localhost

注: マウントを使用して構成ファイルをコンテナーに投影するため、対応するファイル パスも変更する必要があります。
例:rule_files のパス: ["/etc/prometheus/rules.yml"] には、ファイルがコンテナーに保存されているパスを入力する必要があります。

プロメテウスを再起動する

docker restart prometheus的容器id

ビュー表示

ここに画像の説明を挿入します

テスト

容器を所定の位置で止めてnode-exporter効果を確認してください。

docker stop node-exporter所在的容器id

ノードエクスポーター
ここに画像の説明を挿入します
アラートマネージャー
ここに画像の説明を挿入します
ここに画像の説明を挿入します

DingTalk でアラートを表示する

ここに画像の説明を挿入します

コンテナが配置されている場所でコンテナを再起動してnode-exporter、効果を確認します。

docker restart node-exporter所在的容器id

DingTalk で見る
ここに画像の説明を挿入します

仕上げる

参考記事:こちら

おすすめ

転載: blog.csdn.net/qq_52589631/article/details/131152150
おすすめ