官方文档:
    https://argoproj.github.io/argo-workflows/metrics/

    在官方文档中可以看到 workflows 提供了使用 prometheus 进行监控的方法。workflow-controller-metrics这个 service 中暴露了9090端口,可以通过 prometheus 获取到监控数据。

    在 kube-prometheus 想要配置一个target 需要使用配置ServiceMonitor的方法

    1. [root@master ~]# kubectl get ServiceMonitor --all-namespaces
    2. NAMESPACE NAME AGE
    3. kubesphere-monitoring-system alertmanager 41d
    4. kubesphere-monitoring-system coredns 41d
    5. kubesphere-monitoring-system devops-jenkins 29h
    6. kubesphere-monitoring-system kube-apiserver 41d
    7. kubesphere-monitoring-system kube-controller-manager 41d
    8. kubesphere-monitoring-system kube-scheduler 41d
    9. kubesphere-monitoring-system kube-state-metrics 41d
    10. kubesphere-monitoring-system kubelet 41d
    11. kubesphere-monitoring-system node-exporter 41d
    12. kubesphere-monitoring-system prometheus 41d
    13. kubesphere-monitoring-system prometheus-operator 41d
    14. kubesphere-monitoring-system s2i-operator 29h
    15. kubesphere-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端口的端口名
    

    image.png

    部署

    kubectl apply -f ….

    Prometheus target
    image.png

    效果图

    https://grafana.com/grafana/dashboards/13927 官方提供的有很多问题,我做了一些改动才能正常展示

    image.png
    image.png
    image.png