logstash对接普罗米修斯监控平台
转载自博客:django后端服务、logstash和flink接入VictoriaMetrics指标监控
通过指标监控可以设置对应的告警,快速发现问题,并通过相应的指标定位问题。
背景:使用的 VictoriaMetrics(简称 VM) 作为监控的解决方案,需要将 django 服务、logstash 和 flink 引擎接入进来,VM 可以实时的获取它们的指标存储并进行监控告警,以上的服务都是部署在 k8s 中的。
1.VictoriaMetrics
VictoriaMetrics,是一个快速高效、经济并且可扩展的监控解决方案和时序数据库。比较出名的监控方案有 Promethues,而 VM 是兼容 Promethues 的各种规范、配置等,可以快速的融入 Promethues 生态甚至是取代它。
VM 获取服务指标的方式也是通过主动拉取的方式,每个服务都会暴露一个端口供 VM 来拉取服务的指标信息
2.django 服务接入
可以通过使用第三方库 prometheus-client[1] 来收集服务的指标信息,并暴露端口给 VM 拉取。
-
• 安装
pip install prometheus-client
-
• 使用
因为该服务使用的是 wsgi 协议的,所以在 wsgi.py 文件中添加以下代码,会开启一个新的线程监听 9300 端口,请求该端口可以获取当前服务的参数指标。
from prometheus_client import start_wsgi_server
start_wsgi_server(9300)
如果想要上报业务指标,可以通过该库在业务中进行埋点和收集。
还需要在 pod 中添加 ports 属性提供给 VM 使用,这个在后面讲解。
- containerPort: 9300
name: exportport
protocol: TCP
3.logstash 接入
logstash 是有自己的指标监控服务,需要在配置文件 logstash.yaml 中将其端口暴露。
http.port: 9600
但是其指标格式和 prometheus 的指标格式是不同的,所以需要通过另一个程序 exporter 来将 logstash 指标转换成 prometheus 指标格式。
该 logstash 是部署在 k8s 中的,使用到容器设计模式 sidecar,就是在 pod 中新增一个容器来辅助主容器 logstash 来做监控指标的转换并提供给 VM 调用。
logstash 的 exporter 可以使用 prometheus-logstash-exporter[2] 来完成,可以去 docker hub 中找到对应的镜像,并将其下载下来使用。
在 logstash 的 pod 中添加以下配置来设置 exporter,将暴露 9300 端口作为 logstash 的指标监控端口给 VM 拉取。这里需要配置 ports,在 VM 中需要使用该参数。
- name: logstash-exporter
image: alxrem/prometheus-logstash-exporter:0.7.0
args:
- -logstash.host
- 127.0.0.1
- -logstash.port
- 9600
- -web.listen-address
- 9300
ports:
- name: exportport
containerPort: 9300
4.flink 接入监控
flink 本身是支持 prometheus 的指标监控,只需要通过添加配置 flink 的参数即可开启。
metrics.reporters: prom
metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
metrics.reporter.prom.port: "9300"
除了上面的配置外,还需要在 Pod 中设置 ports 来供 VM 使用。
ports:
- name: exportport
containerPort: 9300
5.VMPodScrape
虽然上面的服务都暴露了指标端口,VM 如何找到它们呢?需要通过创建 VMPodScrape 的资源对象来帮助 VM 来找到它们。
配置如下:
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMPodScrape
metadata:
labels:
prometheus: k8s
name: demo-pod-monitor
namespace: monitor
spec:
namespaceSelector:
any: true
podMetricsEndpoints:
- path: /metrics
port: exportport
selector:
matchLabels:
app: django
-
• spec.podMetricsEndpoints.port,这个就是在每个 pod 中添加的 ports 中对应的 name,VM 会去找到对应 name 的端口获取指标
-
• spec.selector.matchLabels,通过标签过滤找到指定的 pod
通过 kubectl apply -f
创建该资源对象,VM 就能找到指标提供的服务。
引用链接
[1]
prometheus-client: https://github.com/prometheus/client_python[2]
prometheus-logstash-exporter: https://github.com/alxrem/prometheus-logstash-exporter
posted on 2023-08-23 17:41 luzhouxiaoshuai 阅读(647) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2020-08-23 分布式事务框架测试结论
2020-08-23 spring gateway 2.1版本和springgateway 2.2版本性能测试结论
2020-08-23 分布式事务框架测试结果分析