第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁 慕課教程 Docker 入門教程 Docker 入門教程 搭建容器監(jiān)控平臺(tái)

搭建容器監(jiān)控平臺(tái)

本節(jié),我們上手搭建容器監(jiān)控平臺(tái)。我們監(jiān)控 Docker 主機(jī)上運(yùn)行的容器狀態(tài),并監(jiān)控 cAdvisor 容器,如果此容器關(guān)閉,會(huì)觸發(fā)郵件告警。

1. 實(shí)戰(zhàn)

1.1. 新建目錄

創(chuàng)建如下目錄結(jié)構(gòu)。
圖片描述

1.2 編寫 prometheus 的配置文件 prometheus.yml

# 全局配置
global:
    # 每5s收集一次數(shù)據(jù)
    scrape_interval: 5s
    # 每5s執(zhí)行一次告警規(guī)則檢測(cè)
    evaluation_interval: 5s
    # 標(biāo)記標(biāo)簽
    external_labels:
        monitor: 'monitor'
# 告警配置
alerting:
    alertmanagers:
        - static_configs:
            - targets: ['alertmanager:9093']
# 指定規(guī)則配置文件
rule_files:
    - rules/*.yml
# 數(shù)據(jù)抓取配置
scrape_configs:
    - job_name: 'prometheus'
      static_configs:
          - targets: ['prometheus:9090']
    - job_name: 'cadvisor'
      static_configs:
          - targets: ['cadvisor:8080']

1.3 編寫 Prometheus 的告警規(guī)則 rule_1.yml

groups:
    - name: rule-1
      rules:
          - alert: "服務(wù)運(yùn)行告警"
            expr: up{job="cadvisor"} < 1
            # 告警等待時(shí)間
            for: 1m
            labels:
                severity: warning
            annotations:
                summary: "服務(wù)名: {{$labels.alertname}}"
                description: "容器cadvisor已停止"

1.4 編輯 alertmanager 配置文件 config.yml

alertmanager 觸發(fā)告警后會(huì)發(fā)送郵件,我們需要先配置郵箱,這里以 QQ 郵箱為例。
登錄郵箱,選擇設(shè)置:
圖片描述
獲取郵箱授權(quán)碼:
圖片描述

Tips:
25 端口用于轉(zhuǎn)發(fā)郵件,沒有考慮認(rèn)證、加密等問題。587 端口專門被設(shè)計(jì)用來提交郵件,傳輸可以加密。這里我們使用 587 端口。

接下來編輯 alertmanager 配置文件 config.yml:

# 全局配置項(xiàng)
 global:
   resolve_timeout: 5m  #處理超時(shí)時(shí)間,默認(rèn)為5min
   smtp_smarthost: 'smtp.qq.com:587'  # 郵箱smtp服務(wù)器代理,這里以qq郵箱為例
   smtp_from: 'xxx@qq.com'  # 發(fā)送郵箱名稱
   smtp_auth_username: 'xxx@qq.com'  # 郵箱賬號(hào)
   smtp_auth_password: 'xxxxxxxxxxxx'  # 郵箱授權(quán)碼

# 定義模板信息
 templates:
   - '/etc/alertmanager/templates/*.html'

# 定義路由樹信息
 route:
   group_by: ['alertname'] # 報(bào)警分組依據(jù)
   group_wait: 10s # 最初即第一次等待多久時(shí)間發(fā)送一組警報(bào)的通知
   group_interval: 10s # 在發(fā)送新警報(bào)前的等待時(shí)間
   repeat_interval: 1m # 發(fā)送重復(fù)警報(bào)的周期 對(duì)于email配置中,此項(xiàng)不可以設(shè)置過低,否則將會(huì)由于郵件發(fā)送太多頻繁,被smtp服務(wù)器拒絕
   receiver: 'email' # 發(fā)送警報(bào)的接收者的名稱,以下receivers name的名稱

# 定義警報(bào)接收者信息
 receivers:
   - name: 'email' # 警報(bào)
     email_configs: # 郵箱配置
     - to: 'aaa@xxx.com'  # 接收警報(bào)的email配置
       html: '{{ template "alert.html" . }}' # 設(shè)定郵箱的內(nèi)容模板
       headers: { Subject: "[WARN] 報(bào)警郵件"} # 接收郵件的標(biāo)題

1.5 編輯告警郵件模板 alert.html

{{ define "alert.html" }}
<table border="1">
        <tr>
                <td>報(bào)警項(xiàng)</td>
                <td>實(shí)例</td>
                <td>報(bào)警內(nèi)容</td>
                <td>開始時(shí)間</td>
        </tr>
        {{ range $i, $alert := .Alerts }}
                <tr>
                        <td>{{ index $alert.Labels "alertname" }}</td>
                        <td>{{ index $alert.Labels "instance" }}</td>
                        <td>{{ index $alert.Annotations "description" }}</td>
                        <td>{{ $alert.StartsAt }}</td>
                </tr>
        {{ end }}
</table>
{{ end }}

1.6 編寫 DockerCompose.yml

version: "3.8"
services:
    cAdvisor:
      image: google/cadvisor:v0.33.0
      container_name: cadvisor
      restart: always
      deploy:
          resources:
              limits:
                  cpus: '0.20'
                  memory: 500M
      networks:
          - monitor
      volumes:
          - /:/rootfs:ro
          - /var/run:/var/run:ro
          - /sys:/sys:ro
          - /var/lib/docker/:/var/lib/docker:ro
          - /dev/disk/:/dev/disk:ro

    Prometheus:
      image: prom/prometheus:v2.19.2
      container_name: prometheus
      restart: always
      deploy:
          resources:
              limits:
                  cpus: '0.20'
                  memory: 500M
      volumes:
          - ./prometheus/conf:/etc/prometheus:ro
      networks:
          - monitor
      depends_on:
          - cAdvisor
      ports:
          - "9090:9090"


    alertmanager:
      image: prom/alertmanager:v0.21.0
      container_name: alertmanager
      restart: always
      deploy:
          resources:
              limits:
                  cpus: '0.20'
                  memory: 500M
      networks:
          - monitor
      ports:
          - "9093:9093"
      depends_on:
          - Prometheus
      volumes:
          - ./alertmanager/conf/config.yml:/etc/alertmanager/config.yml
          - ./alertmanager/templates:/etc/alertmanager/templates
      command:
          - '--config.file=/etc/alertmanager/config.yml'
          - '--storage.path=/alertmanager'
          - '--log.level=info'

    Grafana:
      image: grafana/grafana:7.0.5
      container_name: grafana
      restart: always
      deploy:
          resources:
              limits:
                  cpus: '0.20'
                  memory: 500M
      networks:
          - monitor
      environment:
          - GF_SECURITY_ADMIN_PASSWORD=123456
      depends_on:
          - Prometheus
      ports:
          - "3000:3000"

networks:
  monitor:
    name: monitornet
    driver: bridge

在 compose 配置文件中,我們配置了容器的 cpu 和內(nèi)存限制:

...
      deploy:
          resources:
              limits:
                  # cpu最多使用20%
                  cpus: '0.20'
                  # 內(nèi)存最多使用500M
                  memory: 500M
...

需要使用--compatibility兼容模式使它生效。

# 啟動(dòng)
docker-compose --compatibility up -d
# 移除
docker-compose --compatibility down
# 重啟
docker-compose --compatibility restart

1.7 配置 Grafana Dashboard 頁

docker-compose --compatibility up -d

啟動(dòng)之后,使用瀏覽器打開 http://127.0.0.1:3000, 即可訪問 grafana Web 頁面。

使用admin123456 密碼(GF_SECURITY_ADMIN_PASSWORD指定)登錄。

登錄成功后,配置數(shù)據(jù)源。
圖片描述

選擇 Prometheus 數(shù)據(jù)源:
圖片描述

填寫 Prometheus 地址:
圖片描述

保存配置:

圖片描述

選擇導(dǎo)入 Dashboard:
圖片描述
打開Grafana的官方Dashboard倉庫,找一個(gè)合適的樣式,下載下來。這里我們選擇了這個(gè)
圖片描述

回到 Grafana 管理頁面,將下載的 json 文件導(dǎo)入:

圖片描述
選擇 Prometheus 數(shù)據(jù)源:

圖片描述
import 導(dǎo)入即可看到容器監(jiān)控頁面。

圖片描述

2. 告警測(cè)試

打開 prometheus web UI 頁面 http://127.0.0.1:9090,點(diǎn)擊 alert 標(biāo)簽頁,查看監(jiān)控告警狀態(tài):
圖片描述
我們將監(jiān)控的容器 cadvisor 關(guān)掉。

docker stop cadvisor

幾秒后刷新頁面,發(fā)現(xiàn)告警進(jìn)入 Pending 暫掛狀態(tài):
圖片描述

一分鐘后(rule_1.yml 中 for = 1m 配置)告警進(jìn)入 firing 狀態(tài)。
圖片描述

查收告警郵件:

圖片描述

修復(fù)故障后恢復(fù)正常:

docker start cadvisor

3. 小結(jié)

本節(jié)構(gòu)建了一個(gè)具有郵件告警功能的容器監(jiān)控平臺(tái),由于篇幅有限,僅能在配置文件中,對(duì)一些基本常用的配置進(jìn)行解釋,還有其他更多更全的強(qiáng)大配置功能,需要讀者自行參考各個(gè)服務(wù)的官方文檔。