当前位置:首页 >综合 >使用 Vmalert 代替 Prometheus 监控报警 所以需要配置 -remoteWrite.url

使用 Vmalert 代替 Prometheus 监控报警 所以需要配置 -remoteWrite.url

2024-06-26 14:28:03 [百科] 来源:避面尹邢网

使用 Vmalert 代替 Prometheus 监控报警

作者:阳明 运维 系统运维 vmalert 会针对 -datasource.url 地址执行配置的使用报警或记录规则,然后可以将报警发送给 -notifier.url 配置的控报 Alertmanager,记录规则结果会通过远程写入的使用协议进行保存,所以需要配置 -remoteWrite.url。控报

前面我们已经介绍了可以​​使用 vmagent 代替 prometheus 抓取监控指标数据​​,使用要想完全替换 prometheus 还有一个非常重要的控报部分就是报警模块,之前我们都是使用在 prometheus 中定义报警规则评估后发送给 alertmanager 的,同样对应到 vm 中也有一个专门来处理报警的控报模块:vmalert。

使用 Vmalert 代替 Prometheus 监控报警 所以需要配置 -remoteWrite.url

vmalert 会针对 -datasource.url 地址执行配置的使用报警或记录规则,然后可以将报警发送给 -notifier.url 配置的控报 Alertmanager,记录规则结果会通过远程写入的使用协议进行保存,所以需要配置 -remoteWrite.url。控报

使用 Vmalert 代替 Prometheus 监控报警 所以需要配置 -remoteWrite.url

特性

  • 与 VictoriaMetrics TSDB 集成。使用
  • VictoriaMetrics MetricsQL 支持和表达式验证。控报
  • Prometheus 告警规则定义格式支持。使用
  • 与 Alertmanager 集成。
  • 在重启时可以保持报警状态。
  • Graphite 数据源可用于警报和记录规则。
  • 支持记录和报警规则重放。
  • 非常轻量级,没有额外的依赖。

要开始使用 vmalert,需要满足以下条件:

使用 Vmalert 代替 Prometheus 监控报警 所以需要配置 -remoteWrite.url

  • 报警规则列表:要执行的 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技术圈 vmalert监控

(责任编辑:探索)

    推荐文章
    • 网商贷怎么才能有额度 增加支付宝账户活跃度有用吗?

      网商贷怎么才能有额度 增加支付宝账户活跃度有用吗?经常使用支付宝的朋友可能会注意到,在个人主页,有一个“网商贷”的入口。网商贷跟借呗、花呗一样,也是支付宝旗下的一款线上消费贷款平台,属于经营性贷款。网商贷怎么才能有额度?三个小 ...[详细]
    • 3LCD+1080p 爱普生TW3300C投影机促销

      3LCD+1080p 爱普生TW3300C投影机促销3LCD+1080p 爱普生TW3300C投影机促销作者:郭云珍 2011-04-26 10:18:02商务办公 爱普生新款1080p投影机TW3300C,具备1800流明的亮度,并配置了25000: ...[详细]
    • 长沙前三季度GDP首破万亿 跻身数字经济新一线城市 -

      长沙前三季度GDP首破万亿 跻身数字经济新一线城市 -【CNMO新闻】近日,长沙市统计局官网公布:经初步核算,今年1至9月,全市实现地区生产总值10152.39亿元,同比增长4.8%。1-9月,长沙新增规工企业183户,新增国家级“小巨人”74户、居全省 ...[详细]
    • 精工EPSON 用喷墨技术生产OLED大屏幕

      精工EPSON 用喷墨技术生产OLED大屏幕精工EPSON 用喷墨技术生产OLED大屏幕作者:张茂祺 2011-04-22 17:08:06商务办公 精工爱普生在打印成像和投影显示领域,皆占有举足轻重的地位。近期,爱普生利用其喷墨技术,创新了一 ...[详细]
    • 信用购关闭后还能开通吗 具体情况是怎样的?

      信用购关闭后还能开通吗 具体情况是怎样的?花呗升级变成“花呗|信用购”后,很多人对新增加的信用购这个消费信用贷款并不感冒,打算把信用购关闭掉,可是考虑以后可能还会用上信用购,就想知道信用购关闭后还能开通吗,这里就给大家 ...[详细]
    • 高配置工作站 戴尔T7500

      高配置工作站 戴尔T7500高配置工作站 戴尔T7500作者:佚名 2011-04-27 14:16:06商务办公 戴尔Precision T7500是戴尔新一代工作站中的旗舰机型,采用最新的Nehalem至强5500处理器,最 ...[详细]
    • 2018年企业存储的7大趋势

      2018年企业存储的7大趋势2018年企业存储的7大趋势作者:佚名 2017-12-19 06:27:15存储 今天的企业比以往任何时候都产生和存储海量的数据,且这样的趋势丝毫没有放缓的迹象。大数据、物联网和分析的崛起促进了数据 ...[详细]
    • 五分之一Windows上应用程序无安全补丁

      五分之一Windows上应用程序无安全补丁五分之一Windows上应用程序无安全补丁作者:之极 2012-05-04 08:28:10系统 Windows 近日,据丹麦的安全漏洞跟踪公司SecuniaAPS发表的一篇报告称,五分之一的安装在W ...[详细]
    • 央行开展50亿元央行票据互换操作 费率0.10%

      央行开展50亿元央行票据互换操作 费率0.10%11月30日,据央行官网,为提高银行永续债的市场流动性,支持银行发行永续债补充资本,增强金融服务实体经济的能力,央行于11月30日开展了央行票据互换(CBS)操作,操作量50亿元,期限3个月,费率0. ...[详细]
    • 给你简约而不简单的体验 惠普OMNI100

      给你简约而不简单的体验 惠普OMNI100给你简约而不简单的体验 惠普OMNI100作者:佚名 2011-04-29 15:04:16商务办公 惠普OMNI100一体机运用了MS208cn一体机的模具,延续了简约设计的风格。惠普OMNI100 ...[详细]
    热点阅读