Grafana HTTP Error Bad Gateway 和 Templating init failed 错误

Posted

技术标签:

【中文标题】Grafana HTTP Error Bad Gateway 和 Templating init failed 错误【英文标题】:Grafana HTTP Error Bad Gateway and Templating init failed errors 【发布时间】: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错误:

为什么?

【问题讨论】:

【参考方案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。

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

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

【讨论】:

在我的 grafana 仪表板中,节点指标(CPU、内存和网络)没有被加载。我使用 helm 图表安装了 Grafana 和 Prometheus。 令人惊叹!谢谢,这个解决方案刚刚使用 Kubernetes + Prometheus + Grafana 解决了我的错误。

以上是关于Grafana HTTP Error Bad Gateway 和 Templating init failed 错误的主要内容,如果未能解决你的问题,请参考以下文章

将 Nginx Bad Gateway 用作 Grafana 的反向代理时发生错误

HTTP ERROR 400 Bad Request

urllib2.HTTPError: HTTP Error 400: Bad Request

RPC 失败; HTTP 400 curl 22 The requested URL returned error: 400 Bad Request

Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"解决方法

Android studio出现Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request&q