Prometheus監控ingress-nginx
Prometheus
的數據指標是通過一個公開的 HTTP(S) 數據接口獲取到的,我們不需要單獨安裝監控的 agent,只需要暴露一個 metrics 接口,Prometheus 就會定期去拉取數據;對於一些普通的 HTTP 服務,我們完全可以直接重用這個服務,添加一個/metrics
接口暴露給 Prometheus;而且獲取到的指標數據格式是非常易懂的,不需要太高的學習成本。
現在很多服務從一開始就內置了一個/metrics
接口,比如 Kubernetes 的各個組件、istio 服務網格都直接提供了數據指標接口。有一些服務即使沒有原生集成該接口,也完全可以使用一些 exporter 來獲取到指標數據,比如 mysqld_exporter、node_exporter,這些 exporter 就有點類似於傳統監控服務中的 agent,作為一直服務存在,用來收集目標服務的指標數據然后直接暴露給 Prometheus。
在nginx ingress controller的官方文檔中對監控有相應描述
https://kubernetes.github.io/ingress-nginx/user-guide/monitoring/
配置監控
按照我之前的部署方式,官方默認實現了對pod的自動發現(自動發現參考后文),對ingress-nginx已經自動監控
如果沒有自動監控
修改prometheus
的配置,增加對ingress nginx
的監控配置,可按照官方yaml
進行修改:
#vim prometheus-configmap.yaml - job_name: 'ingress-nginx-endpoints' kubernetes_sd_configs: - role: pod namespaces: names: - ingress-nginx relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] action: keep regex: true - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scheme] action: replace target_label: __scheme__ regex: (https?) - 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 target_label: __address__ regex: ([^:]+)(?::\d+)?;(\d+) replacement: $1:$2 - source_labels: [__meta_kubernetes_service_name] regex: prometheus-server action: drop #重新apply一下configmap kubectl apply -f prometheus-configmap.yaml
配置grafana圖形
https://grafana.com/grafana/dashboards/9614
我的沒有訪問數據為空是正常的