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   luzhouxiaoshuai  阅读(647)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源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 分布式事务框架测试结果分析

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示