You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AKS集群中Prometheus Dashboard通过Ingress访问空白问题排查

解决Prometheus Ingress子路径静态资源加载失败问题

问题根源

Prometheus前端的静态资源(JS、CSS等)默认使用绝对路径(如/static/xxx),当通过Ingress的/graph前缀访问时,浏览器会错误地请求/graph/static/xxx,而Prometheus服务本身的资源路径是/static/xxx,导致资源加载404,页面仅能显示标题但内容空白。

解决方案

需要同时调整Ingress的路径重写规则,以及配置Prometheus识别自身运行的子路径,双管齐下解决问题。

1. 更新Ingress配置

修改Ingress清单,添加Nginx路径重写注解,并调整路径匹配规则,确保静态资源请求能正确转发到Prometheus服务的对应路径:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx-prometheus-ic
  namespace: prometheus
  annotations:
    kubernetes.io/ingress.class: nginx
    # 重写非静态资源的请求路径,将/graph后的部分转发给Prometheus
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    # 单独处理静态资源请求,直接将/graph/static开头的路径重写为/static
    nginx.ingress.kubernetes.io/configuration-snippet: |
      rewrite ^/graph(/static/.*)$ $1 break;
spec:
  rules:
    - http:
        paths:
          - path: /graph(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: prometheus-kube-prometheus-prometheus
                port:
                  number: 9090

2. 配置Prometheus识别子路径

通过Helm升级Prometheus实例,设置web.externalUrl参数,让Prometheus生成的页面链接和静态资源路径自动适配/graph子路径:

helm upgrade prometheus prometheus-community/prometheus --namespace prometheus \
  --set server.web.externalUrl=http://<你的Ingress域名>/graph

将<你的Ingress域名>替换为实际访问的域名(例如prometheus.yourcompany.com)。

3. 验证修复效果

  • 应用修改后的Ingress配置:kubectl apply -f <你的Ingress文件名>.yaml -n prometheus
  • 等待Helm升级完成后,重新访问http://<你的Ingress域名>/graph,此时JS、CSS等静态资源应能正常加载,页面将显示完整的Prometheus控制台界面。

补充说明

如果仅配置Ingress路径重写而不设置web.externalUrl,Prometheus生成的页面导航链接仍会使用绝对路径,导致跳转错误。必须同时配置这两项,才能完全解决子路径访问的所有问题。

内容的提问来源于stack exchange,提问作者sakshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:52:38