Kubernetes-Prometheus是否缺少所有NGINX入口指标?

时间:2019-10-07 09:20:43

标签: nginx kubernetes prometheus kubernetes-ingress

我有一个DigitalOcean Kubernetes集群。我已经通过Helm安装了NGINX Ingress Controller,还安装了Prometheus&Grafana。

我的入口位于default命名空间中,我的监视位于monitoring命名空间中。

这是我安装的图表的版本。

❯ helm list
NAME            REVISION    UPDATED                     STATUS      CHART                   APP VERSION NAMESPACE
grafana         1           Mon Oct  7 08:04:15 2019    DEPLOYED    grafana-3.8.18          6.3.5       monitoring
metrics-server  1           Thu Aug 29 09:07:21 2019    DEPLOYED    metrics-server-2.8.2    0.3.2       kube-system
nginx-ingress   1           Wed Aug 21 21:32:06 2019    DEPLOYED    nginx-ingress-1.17.1    0.25.1      default
prometheus      1           Mon Oct  7 09:24:21 2019    DEPLOYED    prometheus-9.1.2        2.11.1      monitoring

我正在尝试获取NGINX指标,以便可以在Grafana中进行监视。

但是,它们都不出现在Prometheus UI中。我尝试将prometheus标志添加到我的所有入口中,但仍然一无所获。例如

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ****-ingress
  namespace: monitoring
  annotations:
    kubernetes.io/ingress.class: nginx
    enable-vts-status: "true"
    prometheus.io/scrape: "true"
    prometheus.io/port: "10254"

我为nginx控制器使用了默认的values.yaml文件,但我确实进行了更改以启用指标:

  metrics:
    enabled: true

从我读到的内容来看,它应该可以立即使用。所以我不知道出了什么问题。

Prometheus Service Discovery Prometheus Search Query

看起来确实可疑的一件事是,服务发现似乎并没有监视任何服务,但是我从未使用过Prometheus,而且我在寻找的东西上处于死胡同。

谢谢

3 个答案:

答案 0 :(得分:1)

最后我到了那里。我必须创建一个普罗米修斯工作,才能观看NGINX Metrics服务器。我发现,我的设置和所有在线示例(即使我使用了相同的舵图)之间的区别在于,我有一个单独的NGINX指标服务,该服务在不同的端口上运行。因此,OOB Prometheus尚未配置为对其进行检查。

- job_name: nginx-ingress
      metrics_path: /metrics
      scrape_interval: 5s
      static_configs:
        - targets:
          - nginx-ingress-controller-metrics:9913

将其添加到prometheus configmap中,并重新加载了配置。

答案 1 :(得分:0)

似乎您是从头开始部署Prometheus的。 Nginx入口指标仅在您通过prometheus-operator部署Prometheus时有效。

答案 2 :(得分:0)

我认为您也可以在其他名称空间中找到选择器并使它们生效。我遇到了与您相同的Nginx入口问题(相同的端口等)。我不确定哪些是关键行,因此我将它们全部添加了,但是它已经成为我的活命了,我认为这是对未来的进一步证明。

  values:
    prometheus:
      prometheusSpec:
        # Use all prometheus rules on the cluster
        ruleNamespaceSelector:
          any: true
        ruleSelectorNilUsesHelmValues: false

        # Use all service monitors on the cluster
        serviceMonitorNamespaceSelector:
          any: true
        serviceMonitorSelectorNilUsesHelmValues: false