使用Helm设置Prometheus Ingress

问题描述

我已经为prometheus-operator部署了头盔图,目前所有服务都已启动并正在运行。

我已经有了一个入口控制器,它正在完美地路由我们的内部服务。

但是现在我正在为Prometheus,Grafana和AlertManager创建入口,并且无法按预期工作。

我的Prometheus Ingress YAML-

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: prom
  namespace: monitoring
spec:
  rules:
  - host: abc.xyz.com
    http:
      paths:
      - backend:
          serviceName: my-prom-check-prometheus-o-prometheus
          servicePort: 9090
        path: /prometheus

enter image description here

输出--未找到 404

enter image description here

但是对于Grafana来说,它不会给出404,而是会给出Invalo键错误-

enter image description here

请对此提出建议。我还没有修改values.yaml并直接安装它。

enter image description here

解决方法

Prometheus不知道您要实现的目标,这就是为什么它重定向到未知目标的原因,您会收到404页面未找到的错误消息,因为到达目标Web服务器的http请求声明了{{1 }}目录,而不是实际为其提供服务的/prometheus

据我所知,您必须告诉Prometheus接受新路径上的流量。我认为,如果您将路径从/更改为/prometheus,则应该可以。

如果要在/ prometheus上使用它,则必须正确配置prometheus运算符图表值,我假设它们是externalUrl和routePrefix。

prometheus.prometheusSpec.externalUrl-> Prometheus实例可用的外部URL。这对于生成正确的URL是必需的。如果未从DNS名称的根目录提供Prometheus,则这是必需的。

prometheus.prometheusSpec.routePrefix->路由前缀Prometheus注册其HTTP处理程序。如果使用ExternalURL并且代理正在重写请求的HTTP路由,并且实际的ExternalURL仍然为true,但是服务器使用不同的路由前缀来提供请求,则这很有用。例如,与kubectl代理一起使用。 默认值为/

与此相关的github issue

OR

配置nginx以便从/重写为/prometheus

以下入口定义应该可以解决您的问题

/

上面使用的重写将确保原始访问路径/ prometheus在到达目标Pod之前被重写为/。

关于tutorial

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...