容器監控-Prometheus:6. 監控落地 - 指標完善、Grafana看板和郵件報警(下)
文章目錄
續 監控落地 - 指標完善、Grafana看板和郵件報警(中)
報警規則Rules
Rules報警規則expr 是promQL的條件,滿足promQL條件出發報警。
rules如何定義?
還是來到prometheus-operator/values.yaml
➜ ~ vi ./prometheus-operator/values.yaml
有一些默認開啓的報警規則:
這些默認的報警規則對應:prometheus-operator/template/prometheus/rules文件夾下所有的規則模版
所有的規則都是圍繞prometheusRule
自定義資源,默認根據當前集羣環境生存所有的默認規則
自定義的規則不會被helm 刪除,需要手動刪除。
Alerts
Alerts是目前報警的情況,
綠色的是定義的rules規則,沒有觸發的。
紅色的就是已經報警的。
黃色就是報警處於Pending等待狀態,當事情發生的時候不一定馬上觸發,而是有一個等待,當達到一定條件纔會變成紅色。
grafana
設置ingress-grafana
1.首先查看下grafana的service,端口是80
➜ ~ kubectl get svc -n monitoring
-
準備一個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
-
配置host
192.168.181.103 prom-grafana.mooc.com
-
訪問
找到用戶/密碼
但是用戶/密碼是什麼,來到
/prometheus-operator/charts/grafana/Charts.yaml
➜ ~ vim ./prometheus-operator/charts/grafana/Charts.yaml
找到adminUser ,他用的 是一個Secret
查找一下grafana的Secret
➜ ~ kubectl get Secret -n monitoring
查看用戶/密碼 ,都是base64的
➜ ~ kubectl get Secret -n monitoring imooc-prom-grafana -o yaml
解密一下 用戶名admin 密碼是prom-operator
登錄成功
grafana 圖表介紹
這個位置就是各種各樣的面板
隨便看一個監控指標etcd
這裏就不一一查看了,本質上都是根據PromQL 做的數據查詢
比如我們可以手動PromQL進行查詢,直接在這裏改容易出錯,建議拿到PromQL去prometheus界面去調試,沒有問題可以放到這裏面。
同時也是可以自己創建圖表
報警配置
具體可以查閱alertmanager相關的文檔,alertmanager 的報警方式很多,包括常見的可以發送到郵箱、短信、微信、釘釘 、企業微信…也可以發送到http接口實現對報警的自定義處理。這裏通過郵箱我們配置一下。
添加郵件
找到 ./prometheus-operator/values.yaml
的alertmanager:
位置下面有個 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
然後測試一下
我們故意把etcd停掉
➜ ~ service etcd stop
然後打開郵箱📮,報警郵件很快就發送過來了
Etcd報警郵件,當然這個郵件信息樣式也是可以自己定義,這裏不講,沒什麼複雜的。
關於Prometheus 監控我們就講這麼多,具體的細節還是需要自己多探索。