容器監控-Prometheus:6. 監控落地 - 指標完善、Grafana看板和郵件報警(下)

容器監控-Prometheus:6. 監控落地 - 指標完善、Grafana看板和郵件報警(下)


續 監控落地 - 指標完善、Grafana看板和郵件報警(中)

報警規則Rules

Rules報警規則expr 是promQL的條件,滿足promQL條件出發報警。

image-20200205160610624

rules如何定義?

還是來到prometheus-operator/values.yaml

➜  ~  vi ./prometheus-operator/values.yaml

有一些默認開啓的報警規則:

image-20200205172031691

這些默認的報警規則對應:prometheus-operator/template/prometheus/rules文件夾下所有的規則模版

image-20200205172221510

所有的規則都是圍繞prometheusRule 自定義資源,默認根據當前集羣環境生存所有的默認規則

image-20200205172449894

image-20200205172749347

自定義的規則不會被helm 刪除,需要手動刪除。

Alerts

Alerts是目前報警的情況,

綠色的是定義的rules規則,沒有觸發的。

紅色的就是已經報警的。

黃色就是報警處於Pending等待狀態,當事情發生的時候不一定馬上觸發,而是有一個等待,當達到一定條件纔會變成紅色。

image-20200205172904423

image-20200205172958491

grafana

設置ingress-grafana

1.首先查看下grafana的service,端口是80

➜  ~ kubectl get svc -n monitoring
image-20200205173557616
  1. 準備一個ingress

    ingress-grafana.yaml

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: prom-grafana
      namespace: monitoring
    spec:
      rules:
      - host: prom-grafana.mooc.com
        http:
          paths:
          - backend:
              serviceName: imooc-prom-grafana # 對應grafana的service名字
              servicePort: 80
            path: /
    

    創建一下

    ➜  ~ kubectl apply -f ingress-grafana.yaml
    
  2. 配置host

    192.168.181.103 prom-grafana.mooc.com
    
  3. 訪問

    image-20200205173936908

找到用戶/密碼

但是用戶/密碼是什麼,來到/prometheus-operator/charts/grafana/Charts.yaml

➜  ~ vim ./prometheus-operator/charts/grafana/Charts.yaml

找到adminUser ,他用的 是一個Secret

image-20200205174255297

查找一下grafana的Secret

➜  ~ kubectl get Secret -n monitoring
image-20200205174659115

查看用戶/密碼 ,都是base64的

➜  ~ kubectl get Secret -n monitoring imooc-prom-grafana -o yaml
image-20200205174827076

解密一下 用戶名admin 密碼是prom-operator

image-20200205174933064

image-20200205174947554

image-20200205175019595

image-20200205175027893

登錄成功

image-20200205175143443

grafana 圖表介紹

這個位置就是各種各樣的面板

image-20200205175403888

image-20200205175458824

隨便看一個監控指標etcd

image-20200205175545720

這裏就不一一查看了,本質上都是根據PromQL 做的數據查詢

比如我們可以手動PromQL進行查詢,直接在這裏改容易出錯,建議拿到PromQL去prometheus界面去調試,沒有問題可以放到這裏面。

image-20200205175920964

image-20200205175953258

同時也是可以自己創建圖表

image-20200205180153830

報警配置

具體可以查閱alertmanager相關的文檔,alertmanager 的報警方式很多,包括常見的可以發送到郵箱、短信、微信、釘釘 、企業微信…也可以發送到http接口實現對報警的自定義處理。這裏通過郵箱我們配置一下。

添加郵件

找到 ./prometheus-operator/values.yamlalertmanager:位置下面有個 config: global:

借鑑https://www.cnblogs.com/danny-djy/p/11097726.html

  ........
  config:
    global:
      resolve_timeout: 5m
      smtp_smarthost: 'smtp.163.com:25' # smtp
      smtp_from: '[email protected]' # 發件人
      smtp_auth_username: '[email protected]' # 用戶名
      smtp_auth_password: 'aA111111' #密碼
    route:
      group_by: ['job']
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 12h
      receiver: 'email-alerts' # 接收消息方式
      routes:
      - match:
          alertname: .* # 改成全部的報警都發給這個receiver
        receiver: 'email-alerts' # 指定receiver
    receivers:
    - name: 'email-alerts'
      email_configs: 
      - to: '[email protected]' #接收人
        send_resolved: true # 當問題解決也會發送一個郵件 默認5分鐘沒有達到報警的條件就是問題解決了
        ........

通過history | grep "helm upgrade"|grep imooc-prom查看修改後要升級的,然後升級

➜  ~ helm upgrad imooc-prom ./prometheus-operator/ -f ./prometheus-operator/values.yaml

image-20200205183712167

然後測試一下

我們故意把etcd停掉

➜  ~ service etcd stop

然後打開郵箱📮,報警郵件很快就發送過來了

image-20200205184148027

Etcd報警郵件,當然這個郵件信息樣式也是可以自己定義,這裏不講,沒什麼複雜的。

image-20200205184538391

關於Prometheus 監控我們就講這麼多,具體的細節還是需要自己多探索。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章