当前位置: 首页 > 知识库问答 >
问题:

Nginx入口未正确解析kube-prometheus堆栈的路径

葛泳
2023-03-14

我用演示应用程序创建了简单的kubernetes集群。在创建集群时,我安装了prometheus stack和带有helm(默认值文件)的nginx ingress控制器。

集群设置好后,我创建Inete对象以公开prometheus、grafana和alertManager:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: monitoring-ingress
  namespace: monitoring
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - http:
      paths:
      - path: /prometheus(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: prometheus-operated
            port:
              number: 9090
      - path: /alertmanager(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: prometheus-stack-kube-prom-alertmanager
            port:
              number: 9093
      - path: /grafana(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: prometheus-stack-grafana
            port:
              number: 80

当我试图通过访问prometheus时

例如,如果我使用kubectl port forward svc/prometheus-operated 9090:9090-n监控,我可以毫无问题地到达prometheus。

我可以通过

我怀疑路径重写有问题,但不知道是什么。

请帮助...


共有1个答案

甘永春
2023-03-14

最后,我找到了这个问题的两个解决方案。

选项1

我在azure中有DNS区域(我的集群也住在那里),在那里我为grafana、prometheus和alertmanager添加了子域,指向入口控制器外部IP。

当使用Helm Chart部署库贝-prometheus堆栈时,我在以下配置values.yaml文件中为prometheus提供了默认的根路径:

prometheus:
  prometheusSpec:
    externalUrl: http://prometheus.mydomainname.something

然后(例如Prometheus)的入口清单需要包括主机地址,并且只包含根路径“/”。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: prometheus-new
  namespace: monitoring
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - host: prometheus.mydomainname.something
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: prometheus-stack-kube-prom-prometheus
            port:
              number: 9090

选项2

您还可以为库贝-prometheus(prometheus, grafana, alertManager)中的每个应用程序提供默认路径,如下所示:

prometheus:
  prometheusSpec:
    externalUrl: http://mydomainname.something/prometheus

并使入口清单基于以下路径重定向:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: prometheus-new
  namespace: monitoring
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - http:
      paths:
      - path: /prometheus
        pathType: Prefix
        backend:
          service:
            name: prometheus-stack-kube-prom-prometheus
            port:
              number: 9090
 类似资料:
  • kube-prometheus Note that everything is experimental and may change significantly at any time. This repository collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with doc

  • 本文向大家介绍在C ++中正确使用堆栈和堆?,包括了在C ++中正确使用堆栈和堆?的使用技巧和注意事项,需要的朋友参考一下 堆栈-函数内部声明的所有变量将占用堆栈中的内存。因此,函数内的任何局部变量都位于堆栈中。 堆-这是程序的未使用内存,可用于在程序运行时动态分配内存。因此,如果我们希望某些东西的寿命比声明它的函数的寿命更长,则必须在堆上分配它。 示例 堆内存中的主要问题是碎片,而堆栈中更容易出

  • 每当我键入print时,代码都是而不是从文件中看到的。 对这种行为有什么解决办法吗?

  • 我有以下入口设置: 当我点击时,我被重定向到,并带有NGINX 404未找到。 根据日志,可以看到< code>grafana窗格被查询命中: logger = context traceID = 0000000000000000000000000000 userId = 0 orgId = 0 uname = t = 2022-10-13t 16:19:57.989170173 z level

  • 我试图让prometheus监视我的入口nginx部署工作。我可以在prometheus用户界面中查看默认指标,但与nginx无关。 我已经通过集群监控部署了prometheus-运算符(同时更新serviceMonitorSelector和serviceMonitorNamespaceSelector值):https://github.com/carlosedp/cluster-monitori

  • 我有一个堆栈的ArrayList,我在其中一个堆栈中添加了一个元素,并在列表中循环打印每个堆栈的索引 然后我从上一个堆栈中删除元素,将其添加到下一个堆栈中,打印每个堆栈的索引,并对ArrayList中的所有堆栈继续此操作 然而,当任何堆栈为空时,在获取ArrayList中每个堆栈的索引时会出现非常不寻常的行为。非空的堆栈将具有正确的索引值,而空的堆栈将具有错误的索引值 此外,如果包含元素的堆栈的索