官方文档:
https://argoproj.github.io/argo-workflows/metrics/
在官方文档中可以看到 workflows 提供了使用 prometheus 进行监控的方法。workflow-controller-metrics这个 service 中暴露了9090端口,可以通过 prometheus 获取到监控数据。
在 kube-prometheus 想要配置一个target 需要使用配置ServiceMonitor的方法
[root@master ~]# kubectl get ServiceMonitor --all-namespacesNAMESPACE NAME AGEkubesphere-monitoring-system alertmanager 41dkubesphere-monitoring-system coredns 41dkubesphere-monitoring-system devops-jenkins 29hkubesphere-monitoring-system kube-apiserver 41dkubesphere-monitoring-system kube-controller-manager 41dkubesphere-monitoring-system kube-scheduler 41dkubesphere-monitoring-system kube-state-metrics 41dkubesphere-monitoring-system kubelet 41dkubesphere-monitoring-system node-exporter 41dkubesphere-monitoring-system prometheus 41dkubesphere-monitoring-system prometheus-operator 41dkubesphere-monitoring-system s2i-operator 29hkubesphere-monitoring-system workflow-controller 23h #默认是没有这一个的,需要自己创建。
创建 ServiceMonitor
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: workflow-controller
namespace: kubesphere-monitoring-system #我所有的ServiceMonitor都放到和监控同一个命名空间了
spec:
namespaceSelector: #选择匹配指定
matchNames:
- argo
selector:
matchLabels:
app: workflow-controller #参考下图,选择器匹配指定标签的服务
endpoints:
- port: metrics # workflow-controller-metrics 服务 9090端口的端口名

部署
kubectl apply -f ….
Prometheus target
效果图
https://grafana.com/grafana/dashboards/13927 官方提供的有很多问题,我做了一些改动才能正常展示



