参考:https://kubernetes.github.io/ingress-nginx/user-guide/monitoring/
前提条件
控制器应配置为导出指标
helm upgrade ingress-controller ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--set controller.metrics.enabled=true \
--set-string controller.podAnnotations."prometheus\.io/scrape"="true" \
--set-string controller.podAnnotations."prometheus\.io/port"="10254"
或者:
..
controller:
metrics:
enabled: true
service:
annotations:
prometheus.io/port: "10254"
prometheus.io/scrape: "true"
..
如果您不使用 helm ,则必须像这样编辑清单:
服务清单:
apiVersion: v1
kind: Service
metadata:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "10254"
..
spec:
ports:
- name: prometheus
port: 10254
targetPort: prometheus
..
DaemonSet 清单:
..
ports:
- name: prometheus
containerPort: 10254
..
部署和配置 Prometheus 服务器说明
参考:https://github.com/kubernetes/ingress-nginx/tree/main/deploy/prometheus
部署和配置 Grafana 说明
参考:https://github.com/kubernetes/ingress-nginx/tree/main/deploy/grafana
注意事项
通配符入口
默认情况下,请求指标标有主机名。 当您有通配符域入口时,该入口将没有指标(以防止指标在基数上爆炸)。 要在这种情况下获取指标,您需要使用以下命令运行入口控制器 --metrics-per-host=false(您将失去主机名的标签,但仍然有入口的标签)。