【问题标题】:Grafana HTTP Error Bad Gateway and Templating init failed errorsGrafana HTTP Error Bad Gateway 和 Templating init failed 错误
【发布时间】:2018-06-28 12:27:10
【问题描述】:

在本地使用helm 安装的PrometheusGrafana minikube

$ helm install stable/prometheus
$ helm install stable/grafana

Prometheus 服务器、alertmanager grafana 设置端口转发后可以运行:

$ export POD_NAME=$(kubectl get pods --namespace default -l "app=prometheus,component=server" -o jsonpath="{.items[0].metadata.name}")
$ kubectl --namespace default port-forward $POD_NAME 9090

$ export POD_NAME=$(kubectl get pods --namespace default -l "app=prometheus,component=alertmanager" -o jsonpath="{.items[0].metadata.name}")
$ kubectl --namespace default port-forward $POD_NAME 9093

$ export POD_NAME=$(kubectl get pods --namespace default -l "app=excited-crocodile-grafana,component=grafana" -o jsonpath="{.items[0].metadata.name}")
$ kubectl --namespace default port-forward $POD_NAME 3000

从 grafana 添加数据源,得到HTTP Error Bad Gateway 错误:

从以下位置导入仪表板 315:

https://grafana.com/dashboards/315

然后检查Kubernetes cluster monitoring (via Prometheus),得到Templating init failed错误:

为什么?

【问题讨论】:

    标签: kubernetes monitoring grafana prometheus minikube


    【解决方案1】:

    我一直无法找到“正确”的修复方法,但我找到了解决方法:

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        prometheus: k8s
      name: prometheus-k8s
      namespace: monitoring
    spec:
      selector:
        app: prometheus
        prometheus: k8s
      sessionAffinity: ClientIP
      clusterIP: None
    

    通过将clusterIP 设置为None,服务更改为“无头”模式,这意味着请求将直接发送到该服务/集群中的随机一个pod。更多信息在这里:https://kubernetes.io/docs/concepts/services-networking/service/#headless-services

    可能有更好的解决方案,但这是我发现的唯一一个真正适合我的解决方案,kube-prometheus。 (我试过 docker-desktop、k3d 和 kind,它们都有同样的问题,所以我怀疑这是模拟器的错;我将我的配置简化为基本上只是 kube-prometheus,所以很难理解在哪里问题出在哪里,但哦,好吧。)

    【讨论】:

      【解决方案2】:

      我关闭了设备上的防火墙,发布了在 URL 上添加 http://prometheus:9090 并没有引发错误网关错误。

      【讨论】:

        【解决方案3】:

        在 Grafana 的 HTTP 设置中,您将 Access 设置为 Proxy,这意味着 Grafana 想要访问 Prometheus。由于 Kubernetes 使用的是覆盖网络,所以它是不同的 IP。

        有两种方法可以解决这个问题:

        1. Access设置为Direct,让浏览器直接连接到Prometheus。
        2. 使用 Kubernetes 内部 IP 或域名。我不知道 Prometheus Helm 图表,但假设有一个名为 prometheusService,类似 http://prometheus:9090 的东西应该可以工作。

        【讨论】:

        • 在我的 grafana 仪表板中,节点指标(CPU、内存和网络)没有被加载。我使用 helm 图表安装了 Grafana 和 Prometheus。
        • 令人惊叹!谢谢,这个解决方案刚刚使用 Kubernetes + Prometheus + Grafana 解决了我的错误。
        猜你喜欢
        • 1970-01-01
        • 2019-08-21
        • 2022-11-05
        • 2014-12-04
        • 1970-01-01
        • 2020-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多