创建ingress-nginx ServiceMonitor文件

  1. vim prometheus-ingress-nginx.yaml
  2. apiVersion: monitoring.coreos.com/v1
  3. kind: ServiceMonitor
  4. metadata:
  5. labels:
  6. k8s-app: ingress-nginx # 注解1
  7. name: nginx-ingress-controller-metrics
  8. namespace: monitoring # 最好与被监控对应放一起,也可在monitoring下
  9. spec:
  10. endpoints:
  11. - interval: 15s
  12. port: metrics # 与service 暴露监控的端口名称一致
  13. jobLabel: k8s-app
  14. namespaceSelector:
  15. matchNames:
  16. - ingress-nginx # 监控对象所在namespace
  17. selector:
  18. matchLabels:
  19. app: ingress-nginx # 与service的label一致,不是service的selector

创建ingress-nginx service文件

  1. vim prometheus-ingress-nginx-svc.yaml
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5. name: ingress-nginx
  6. namespace: ingress-nginx #与ingress所在namespace一致
  7. labels:
  8. app: ingress-nginx #A 这个label记下,servicemonitor会用到
  9. spec:
  10. type: ClusterIP
  11. ports:
  12. - name: http
  13. port: 80
  14. targetPort: 80
  15. protocol: TCP
  16. - name: https
  17. port: 443
  18. targetPort: 443
  19. protocol: TCP
  20. - name: metrics # 三个端口名称与deployment中保持一致
  21. port: 10254
  22. targetPort: 10254
  23. protocol: TCP
  24. selector:
  25. app.kubernetes.io/name: ingress-nginx #这个和deployment中pod的label一致

默认prometheus无访问 ingress-nginx名称空间service解决方法

  • 修改 kube-prometheus-0.5.0/manifests/prometheus-clusterRole.yaml 文件修改为如下文件
  1. apiVersion: rbac.authorization.k8s.io/v1
  2. kind: ClusterRole
  3. metadata:
  4. name: prometheus-k8s
  5. rules:
  6. - apiGroups:
  7. - ""
  8. resources:
  9. - nodes/metrics
  10. - services
  11. - endpoints
  12. - pods
  13. verbs:
  14. - get
  15. - list
  16. - watch
  17. - nonResourceURLs:
  18. - /metrics
  19. verbs:
  20. - get

grafana 添加针对 ingress-nginx 的监控模板

见附件

文档更新时间: 2020-07-16 20:47   作者:张尚