成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用 Vmalert 代替 Prometheus 監控報警

運維 系統運維
vmalert 會針對 -datasource.url 地址執行配置的報警或記錄規則,然后可以將報警發送給 -notifier.url 配置的 Alertmanager,記錄規則結果會通過遠程寫入的協議進行保存,所以需要配置 -remoteWrite.url。

前面我們已經介紹了可以??使用 vmagent 代替 prometheus 抓取監控指標數據??,要想完全替換 prometheus 還有一個非常重要的部分就是報警模塊,之前我們都是在 prometheus 中定義報警規則評估后發送給 alertmanager 的,同樣對應到 vm 中也有一個專門來處理報警的模塊:vmalert。

vmalert 會針對 -datasource.url 地址執行配置的報警或記錄規則,然后可以將報警發送給 -notifier.url 配置的 Alertmanager,記錄規則結果會通過遠程寫入的協議進行保存,所以需要配置 -remoteWrite.url。

特性

  • 與 VictoriaMetrics TSDB 集成。
  • VictoriaMetrics MetricsQL 支持和表達式驗證。
  • Prometheus 告警規則定義格式支持。
  • 與 Alertmanager 集成。
  • 在重啟時可以保持報警狀態。
  • Graphite 數據源可用于警報和記錄規則。
  • 支持記錄和報警規則重放。
  • 非常輕量級,沒有額外的依賴。

要開始使用 vmalert,需要滿足以下條件:

  • 報警規則列表:要執行的 PromQL/MetricsQL 表達式。
  • 數據源地址:可訪問的 VictoriaMetrics 實例,用于規則執行。
  • 通知程序地址:可訪問的 Alertmanager 實例,用于處理,匯總警報和發送通知。

安裝

首先需要安裝一個 Alertmanager 用來接收報警信息,前面章節中我們已經詳細講解過了,這里不再贅述了,對應的資源清單如下所示:

# alertmanager.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: alert-config
namespace: kube-vm
data:
config.yml: |-
global:
resolve_timeout: 5m
smtp_smarthost: 'smtp.163.com:465'
smtp_from: 'xxx@163.com'
smtp_auth_username: 'xxx@163.com'
smtp_auth_password: '<auth code>' # 使用網易郵箱的授權碼
smtp_hello: '163.com'
smtp_require_tls: false
route:
group_by: ['severity', 'source']
group_wait: 30s
group_interval: 5m
repeat_interval: 24h
receiver: email
receivers:
- name: 'email'
email_configs:
- to: 'xxxxxx@qq.com'
send_resolved: true
---
apiVersion: v1
kind: Service
metadata:
name: alertmanager
namespace: kube-vm
labels:
app: alertmanager
spec:
selector:
app: alertmanager
type: NodePort
ports:
- name: web
port: 9093
targetPort: http
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: alertmanager
namespace: kube-vm
labels:
app: alertmanager
spec:
selector:
matchLabels:
app: alertmanager
template:
metadata:
labels:
app: alertmanager
spec:
volumes:
- name: cfg
configMap:
name: alert-config
containers:
- name: alertmanager
image: prom/alertmanager:v0.21.0
imagePullPolicy: IfNotPresent
args:
- "--config.file=/etc/alertmanager/config.yml"
ports:
- containerPort: 9093
name: http
volumeMounts:
- mountPath: "/etc/alertmanager"
name: cfg

Alertmanager 這里我們只配置了一個默認的路由規則,根據 severity、source 兩個標簽進行分組,然后將觸發的報警發送到 email 接收器中去。

接下來需要添加用于報警的規則配置,配置方式和 Prometheus 一樣的:

# vmalert-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: vmalert-config
namespace: kube-vm
data:
record.yaml: |
groups:
- name: record
rules:
- record: job:node_memory_MemFree_bytes:percent # 記錄規則名稱
expr: 100 - (100 * node_memory_MemFree_bytes / node_memory_MemTotal_bytes)
pod.yaml: |
groups:
- name: pod
rules:
- alert: PodMemoryUsage
expr: sum(container_memory_working_set_bytes{pod!=""}) BY (instance, pod) / sum(container_spec_memory_limit_bytes{pod!=""} > 0) BY (instance, pod) * 100 > 60
for: 2m
labels:
severity: warning
source: pod
annotations:
summary: "Pod {{ $labels.pod }} High Memory usage detected"
description: "{{$labels.instance}}: Pod {{ $labels.pod }} Memory usage is above 60% (current value is: {{ $value }})"
node.yaml: |
groups:
- name: node
rules: # 具體的報警規則
- alert: NodeMemoryUsage # 報警規則的名稱
expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes * 100 > 30
for: 1m
labels:
source: node
severity: critical
annotations:
summary: "Node {{$labels.instance}} High Memory usage detected"
description: "{{$labels.instance}}: Memory usage is above 30% (current value is: {{ $value }})"

這里我們添加了一條記錄規則,兩條報警規則,更多報警規則配置可參考 https://awesome-prometheus-alerts.grep.to/。

然后就可以部署 vmalert 組件服務了:

# vmalert.yaml
apiVersion: v1
kind: Service
metadata:
name: vmalert
namespace: kube-vm
labels:
app: vmalert
spec:
ports:
- name: vmalert
port: 8080
targetPort: 8080
type: NodePort
selector:
app: vmalert
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: vmalert
namespace: kube-vm
labels:
app: vmalert
spec:
selector:
matchLabels:
app: vmalert
template:
metadata:
labels:
app: vmalert
spec:
containers:
- name: vmalert
image: victoriametrics/vmalert:v1.77.0
imagePullPolicy: IfNotPresent
args:
- -rule=/etc/ruler/*.yaml
- -datasource.url=http://vmselect.kube-vm.svc.cluster.local:8481/select/0/prometheus
- -notifier.url=http://alertmanager.kube-vm.svc.cluster.local:9093
- -remoteWrite.url=http://vminsert.kube-vm.svc.cluster.local:8480/insert/0/prometheus
- -evaluationInterval=15s
- -httpListenAddr=0.0.0.0:8080
volumeMounts:
- mountPath: /etc/ruler/
name: ruler
readOnly: true
volumes:
- configMap:
name: vmalert-config
name: ruler

上面的資源清單中將報警規則以 volumes 的形式掛載到了容器中,通過 -rule 指定了規則文件路徑,-datasource.url 指定了 vmselect 的路徑,-notifier.url 指定了 Alertmanager 的地址,其中 -evaluationInterval 參數用來指定評估的頻率的,由于我們這里添加了記錄規則,所以還需要通過 -remoteWrite.url 指定一個遠程寫入的地址。

直接創建上面的資源清單即可完成部署。

? ? kubectl apply -f https://p8s.io/docs/victoriametrics/manifests/alertmanager.yaml
? ? kubectl apply -f https://p8s.io/docs/victoriametrics/manifests/vmalert-config.yaml
? ? kubectl apply -f https://p8s.io/docs/victoriametrics/manifests/vmalert.yaml
? ? kubectl get pods -n kube-vm -l app=alertmanager
NAME READY STATUS RESTARTS AGE
alertmanager-d88d95b4f-z2j8g 1/1 Running 0 30m
? ? kubectl get svc -n kube-vm -l app=alertmanager
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alertmanager NodePort 10.100.230.2 <none> 9093:31282/TCP 31m
? ? kubectl get pods -n kube-vm -l app=vmalert
NAME READY STATUS RESTARTS AGE
vmalert-866674b966-675nb 1/1 Running 0 7m17s
? ? kubectl get svc -n kube-vm -l app=vmalert
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
vmalert NodePort 10.104.193.183 <none> 8080:30376/TCP 22m

部署成功后,如果有報警規則達到了閾值就會觸發報警,我們可以通過 Alertmanager 頁面查看觸發的報警規則:

同樣 vmalert 也提供了一個簡單的頁面,可以查看所有的 Groups:

也可以查看到報警規則列表的狀態:

還可以查看到具體的一條報警規則的詳細信息,如下所示:

報警規則觸發后怎么發送,發送到哪個接收器就是 Alertmanager 決定的了。

同樣的上面我們添加的記錄規則會通過 remote write 傳遞給 vminsert 保留下來,所以我們也可以通過 vmselect 查詢到。

到這里基本上我們就完成了使用 vm 代替 prometheus 來進行監控報警了,vmagent 采集監控指標,vmalert 用于報警監控,vmstorage 存儲指標數據,vminsert 接收指標數據,vmselect 查詢指標數據,已經完全可以不使用 prometheus 了,而且性能非常高,所需資源也比 prometheus 低很多。

責任編輯:姜華 來源: k8s技術圈
相關推薦

2022-05-12 08:01:26

vmagentprometheus

2023-12-29 08:01:52

自定義指標模板

2022-07-08 08:00:31

Prometheus監控

2023-10-09 07:31:25

2021-07-01 11:29:45

KubernetesGrafana監控

2020-03-09 09:15:56

集群Prometheus開源

2023-12-27 18:05:13

2011-04-06 14:24:18

2014-07-17 15:01:21

zabbix監控開發

2022-05-18 08:32:05

服務監控Prometheus開源

2023-12-27 08:47:41

PrometheusLinux架構

2020-12-30 08:09:46

運維Prometheus 監控

2025-01-17 09:54:54

2020-10-20 09:07:11

監控PrometheusZabbix

2022-11-08 00:00:00

監控系統Prometheus

2022-07-11 09:36:38

SpringJava開發

2020-11-20 08:15:40

Grafana + P

2022-12-13 08:01:06

監控黑盒集成

2020-12-29 10:45:22

運維Prometheus-監控

2014-03-13 15:14:19

Zabbix監控報警Zabbix
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天久久| 欧美日韩手机在线观看 | 欧美日韩亚洲三区 | 欧美一区二区在线 | 免费在线视频a | 日韩一区二区三区在线看 | 国产在线观看 | 亚洲性免费 | 久久国产精品色av免费观看 | 日韩一区二区视频 | 日韩精品一区二区在线观看 | av大片在线 | 久久男人| 亚洲精品综合一区二区 | 欧美伊人影院 | 操久久| 欧美性极品xxxx做受 | 国产成人自拍一区 | 欧美久久免费观看 | 国产精品一区二区视频 | jlzzjlzz欧美大全| 国产一区二区三区四区 | 亚洲精品久久久久久宅男 | 欧美福利一区 | 亚洲一区二区三区四区五区中文 | 久久国产精品久久久久久久久久 | 国产日韩一区二区 | 国家aaa的一级看片 h片在线看 | 国产视频1区 | 国产一区三区在线 | 欧美aⅴ在线观看 | 日韩欧美高清 | www日本高清 | 最新国产精品 | 99热激情| 久久亚洲国产精品日日av夜夜 | 伊人久久免费 | 伊人欧美视频 | 久久美国 | 亚洲一区二区三区四区五区午夜 | 午夜视频网站 |