前言
使用prometheus监控canal的方法官方文档上已经介绍的很详细了,这里主要是介绍一下在k8s环境下,prometheus通过pod的服务发现,自动添加对新增的canal-server实例的监控
操作
canal-server的容器化教程在前面文章中已经详细介绍过了,有兴趣的可以看一下。
k8s环境搭建canal-server
主要关注当时canal-server创建的yaml中的以下配置
spec:
selector:
matchLabels:
app: canal-server-stable
serviceName: "canal-server-discovery-svc-stable"
replicas: 4
# 下面就是让prometheus监控的配置信息
template:
metadata:
labels:
app: canal-server-stable
# 向prometheus暴露监控接口
annotations:
#监控地址
prometheus.io/path: /
#监控端口
prometheus.io/port: "11112"
#允许prometheus抓取
prometheus.io/scrape: "true"
设置prometheus的pod服务发现,prometheus的配置文件中添加此项抓取任务(要求prometheus也是在k8s环境下搭建,这部分后续也会出相关文档,感兴趣可以持续关注)
# 该项配置会将k8s集群下所有向prometheus暴露监控接口的pod的监控信息都抓取过来
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: kubernetes_pod_name
这样在k8s集群下新增的canal-server实例就能自动被prometheus发现并抓取数据了,grafana上也会自动添加相关信息的监控哦!
欢迎关注我的个人微信公众号,一个菜鸟程序猿的技术分享和奔溃日常