<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] Prometheus 警報分為兩部分。 - `Prometheus server` 中的警報規則向 `Alertmanager` 發送警報 - `Alertmanager` 然后管理這些警報,包括靜音、抑制、聚合和通過電子郵件、釘釘、微信和 `webhook` 等方法發送通知。 # 安裝Alertmanager 安裝alertmanager的yaml文件 ```yaml apiVersion: v1 kind: ConfigMap metadata: name: alertmanager-config namespace: kube-mon data: # 最簡單的配置。 # 必須要有route和receivers的配置 alertmanager.yml: |- global: resolve_timeout: 3m route: receiver: email receivers: - name: email --- apiVersion: apps/v1 kind: Deployment metadata: name: alertmanager namespace: kube-mon spec: replicas: 1 selector: matchLabels: app: alertmanager template: metadata: labels: app: alertmanager spec: containers: - name: alertmanager image: prom/alertmanager:v0.23.0 args: - --config.file=/etc/alertmanager/alertmanager.yml - --cluster.advertise-address=0.0.0.0:9093 resources: requests: cpu: 50m memory: 100Mi limits: cpu: 100m memory: 256Mi ports: - name: http containerPort: 9093 volumeMounts: - name: config mountPath: /etc/alertmanager volumes: - name: config configMap: name: alertmanager-config --- apiVersion: v1 kind: Service metadata: name: alertmanager namespace: kube-mon spec: type: ClusterIP selector: app: alertmanager ports: - name: http port: 9093 ``` 安裝alertmanager服務 ```shell kubectl apply -f alertmanager-deploy.yml configmap/alertmanager-config create deployment.apps/alertmanager create service/alertmanager create kubectl -n kube-mon get pod -l app=alertmanager NAME READY STATUS RESTARTS AGE alertmanager-55785ddf67-kdrgt 1/1 Running 0 73s ``` # 自定義告警模板 **自定義告警模板** ```yaml # 查看文件 $ cat monitor/alertmanager/template.yml apiVersion: v1 kind: ConfigMap metadata: name: alert-template namespace: kube-mon data: email.tmpl: | {{ define "email.to.html" }} {{- if gt (len .Alerts.Firing) 0 -}} {{ range .Alerts }} =========start==========<br> 告警程序: prometheus_alert <br> 告警級別: {{ .Labels.severity }} <br> 告警類型: {{ .Labels.alertname }} <br> 告警主機: {{ .Labels.instance }} <br> 告警主題: {{ .Annotations.summary }} <br> 告警詳情: {{ .Annotations.description }} <br> 觸發時間: {{ .StartsAt.Format "2006-01-02 15:04:05" }} <br> =========end==========<br> {{ end }}{{ end -}} {{- if gt (len .Alerts.Resolved) 0 -}} {{ range .Alerts }} =========start==========<br> 告警程序: prometheus_alert <br> 告警級別: {{ .Labels.severity }} <br> 告警類型: {{ .Labels.alertname }} <br> 告警主機: {{ .Labels.instance }} <br> 告警主題: {{ .Annotations.summary }} <br> 告警詳情: {{ .Annotations.description }} <br> 觸發時間: {{ .StartsAt.Format "2006-01-02 15:04:05" }} <br> 恢復時間: {{ .EndsAt.Format "2006-01-02 15:04:05" }} <br> =========end==========<br> {{ end }}{{ end -}} {{- end }} # 執行文件 $ kubectl apply -f monitor/alertmanager/template.yml ``` **alertmanager配置自定義模板** ```yaml # 掛載自定告警模板 $ kubectl -n kube-mon edit deploy alertmanager - mountPath: /etc/alertmanager/templates name: templates - configMap: name: alert-template name: templates # alertmanager配置添加自定義告警模板路徑,與global是同級 $ kubectl -n kube-mon edit configmap alertmanager-config templates: - '/etc/alertmanager/templates/*.tmpl' ``` # 配置告警通知 設置警報和通知的主要步驟是: 1. 配置 Prometheus 與 Alertmanager 對話 (在Prometheus配置) 2. 在 Prometheus 中創建警報規則 (在Prometheus配置) 3. 配置Alertmanager 配置之前需要知道知道一些配置的意義,否則很容易發生郵件、短信轟炸。 ## 郵件告警 1、配置 Prometheus 與 Alertmanager 對話 (在Prometheus配置) ```yaml alerting: alertmanagers: - static_configs: - targets: ["alertmanager:9093"] ``` 2、在 Prometheus 中創建警報規則 (在Prometheus配置) 1. 在Prometheus配置告警規則文件 2. 新增告警規則文件 3. 將configmap掛載到Prometheus 在Prometheus配置告警規則文件 (在Prometheus配置) ```yaml rule_files: - /etc/prometheus/rules/*.yaml ``` 新增告警規則文件 ```yaml apiVersion: v1 kind: ConfigMap metadata: name: rules-files-sd-config namespace: kube-mon data: rules.yaml: | groups: - name: hosts rules: - alert: NodeMemoryUsage expr: (node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Cached_bytes - node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100 > 80 for: 10m labels: team: hosts annotations: summary: "{{$labels.instance}}: High Memory usage detected" description: "{{$labels.instance}}: Memory usage is above 80% (current value is: {{ $value }}" ``` > labels:是 alertmanager 的分組的(group_by)標簽。 將configmap掛載到Prometheus ```shell $ kubectl -n kube-mon edit deploy prometheus # 在 spec.template.spec.containers.volumeMounts 添加下面幾行 - mountPath: /etc/prometheus/targets name: rules-files-sd-config # 在 spec.template.spec.volumes 添加下面幾行 - configMap: name: rules-files-sd-config name: rules-files-sd-config ``` 3、配置Alertmanager ```yaml apiVersion: v1 kind: ConfigMap metadata: name: alertmanager-config namespace: kube-mon data: alertmanager.yml: |- global: resolve_timeout: 3m # 郵件配置 smtp_from: 'ecloudz@126.com' smtp_smarthost: 'smtp.126.com:25' smtp_auth_username: 'ecloudz@126.com' # 郵箱的授權碼 smtp_auth_password: 'xxxx' route: # 默認告警媒介 receiver: default # 當一個新的報警分組被創建后,需要等待至少 group_wait 時間來初始化通知 # 這種方式可以確保您能有足夠的時間為同一分組來獲取多個警報,然后一起觸發這個報警信息。 group_wait: 30s # 相同的group之間發送告警通知的時間間隔 group_interval: 5m # 已經成功發送警報,再次發送通知之前等待多長時間 repeat_interval: 2h # 分組,對應Prometheus的告警規則的labels group_by: ["cluster", "team"] # 子路由 routes: - receiver: email matchers: - team = hosts # 告警媒介方式 receivers: - name: default - name: email email_configs: - to: "jiaxzeng@126.com" send_resolved: true ``` 4、Prometheus和alertmanager重新加載配置 ```shell curl -X POST `kubectl -n kube-mon get endpoints prometheus -o jsonpath={.subsets[0].addresses[0].ip}`:9090/prometheus/-/reload curl -X POST "http://`kubectl -n kube-mon get endpoints alertmanager -o jsonpath={.subsets[0].addresses[0].ip}`:9093/-/reload" ``` ## 釘釘告警 ## 企業微信告警 總體也是分為三步,前面兩步和郵箱告警一致,這個只說alertmanager配置的差異 configmap的alertmanager配置文件中添加下面內容 ```yaml # 在配置文件 receivers 告警媒介添加企業微信告警 - name: wechat wechat_configs: - corp_id: ww31554c46xxxx # 企業微信中,企業ID to_party: 2 # 企業微信中,部門ID agent_id: 1000002 # 企業微信中,應用的AgentId api_secret: LNqXxz8U5DBGHem3mMB5aQQHqw8aAW2_xxxxx # 企業微信中,應用的Secret send_resolved: true # 在配置文件 routes 子路由添加告警媒介方式 - receiver: wechat matchers: - team = kubernetes ``` 重新加載alertmanager ```shell $ curl -X POST `kubectl -n kube-mon get endpoints alertmanager -ojsonpath={.subsets[0].addresses[0].ip}`:9093/-/reload ``` # 自定義告警模板 ## 郵箱告警 創建郵件告警模板的yaml文件 ```yaml apiVersion: v1 kind: ConfigMap metadata: name: alert-template namespace: kube-mon data: email.tmpl: | {{ define "email.to.html" }} {{- if gt (len .Alerts.Firing) 0 -}} {{ range .Alerts }} =========start==========<br> 告警程序: prometheus_alert <br> 告警級別: {{ .Labels.severity }} <br> 告警類型: {{ .Labels.alertname }} <br> 告警主機: {{ .Labels.instance }} <br> 告警主題: {{ .Annotations.summary }} <br> 告警詳情: {{ .Annotations.description }} <br> 觸發時間: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} <br> =========end==========<br> {{ end }}{{ end -}} {{- if gt (len .Alerts.Resolved) 0 -}} {{ range .Alerts }} =========start==========<br> 告警程序: prometheus_alert <br> 告警級別: {{ .Labels.severity }} <br> 告警類型: {{ .Labels.alertname }} <br> 告警主機: {{ .Labels.instance }} <br> 告警主題: {{ .Annotations.summary }} <br> 告警詳情: {{ .Annotations.description }} <br> 觸發時間: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} <br> 恢復時間: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} <br> =========end==========<br> {{ end }}{{ end -}} {{- end }} ``` 將 configmap 掛載到 alertmanager 容器中 ```yaml # deploy.spec.templates.volumes 添加下面三行 - name: templates configMap: name: alert-template # deploy.spec.template.spec.containers.volumeMounts 添加下面兩行 - name: templates mountPath: /etc/alertmanager/templates ``` 配置生效 ```shell $ kubectl apply?-f monitor/alertmanager/template.yml $ kubectl apply?-f monitor/alertmanager/deploy.yml ``` ## 釘釘告警 ## 企業微信告警 ```yaml # 在對應configmap的 data 添加模板 wechat.tmpl: | {{ define "wechat.default.message" }} {{- if gt (len .Alerts.Firing) 0 -}} {{- range $index, $alert := .Alerts -}} {{- if eq $index 0 }} ==========異常告警========== 告警類型: {{ $alert.Labels.alertname }} 告警級別: {{ $alert.Labels.severity }} 告警詳情: {{$alert.Annotations.summary}}; {{$alert.Annotations.description }} 故障時間: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} {{- if gt (len $alert.Labels.instance) 0 }} 實例信息: {{ $alert.Labels.instance }} {{- end }} {{- if gt (len $alert.Labels.namespace) 0 }} 命名空間: {{ $alert.Labels.namespace }} {{- end }} {{- if gt (len $alert.Labels.node) 0 }} 節點信息: {{ $alert.Labels.node }} {{- end }} {{- if gt (len $alert.Labels.pod) 0 }} 實例名稱: {{ $alert.Labels.pod }} {{- end }} ============END============ {{- end }} {{- end }} {{- end }} {{- if gt (len .Alerts.Resolved) 0 -}} {{- range $index, $alert := .Alerts -}} {{- if eq $index 0 }} ==========異常恢復========== 告警類型: {{ $alert.Labels.alertname }} 告警級別: {{ $alert.Labels.severity }} 告警詳情: {{$alert.Annotations.summary}};{{ $alert.Annotations.description }} 故障時間: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} 恢復時間: {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} {{- if gt (len $alert.Labels.instance) 0 }} 實例信息: {{ $alert.Labels.instance }} {{- end }} {{- if gt (len $alert.Labels.namespace) 0 }} 命名空間: {{ $alert.Labels.namespace }} {{- end }} {{- if gt (len $alert.Labels.node) 0 }} 節點信息: {{ $alert.Labels.node }} {{- end }} {{- if gt (len $alert.Labels.pod) 0 }} 實例名稱: {{ $alert.Labels.pod }} {{- end }} ============END============ {{- end }} {{- end }} {{- end }} {{- end }} ``` > 注意:如果有多個告警模板的話,可以放在一個configmap。 > 上面的 `define` 不能替換,保持默認不變即可。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看