为 Grafana Mimir 启用外部访问
设置 Grafana Mimir 的外部访问,以便从 Kubernetes 集群外部写入和查询指标。您可以设置一个ingress,以便外部访问 Kubernetes 集群。
开始之前
验证 Kubernetes 集群中已设置 ingress 控制器,例如ingress-nginx
设置 ingress
配置 ingress
b. 在您的
custom.yaml
Helm 值文件中添加以下内容nginx: ingress: enabled: true ingressClassName: nginx hosts: - host: <ingress-host> paths: - path: / pathType: Prefix tls: # empty, disabled.
将
<ingress-host>
替换为一个合适的 hostname,该 hostname 可以通过 DNS 解析到 Kubernetes 集群的外部 IP 地址。有关更多信息,请参阅Ingress。注意: 在 Linux 系统上,如果您无法设置本地 DNS 解析,可以使用
--add-host=<ingress-host>:<kubernetes-cluster-external-address>
命令行标志来为后续示例中的docker
命令定义<ingress-host>
的本地地址。注意: 要查看 Helm Chart 安装的所有可配置参数,请使用
helm show values grafana/mimir-distributed
。使用
helm
命令升级 Grafana Mimirhelm -n mimir-test upgrade mimir grafana/mimir-distributed -f custom.yaml
命令的输出应包含从外部查询 Grafana Mimir 的 URL,例如
From outside the cluster via ingress: http://myhost.mynetwork/prometheus
配置 Prometheus 以写入 Grafana Mimir
您可以配置 Prometheus 以写入 Grafana Mimir,或者配置 Grafana Alloy 以写入 Mimir。虽然两者都可以配置,但您不需要同时配置。
根据您是否已设置 Prometheus 服务器进行选择
对于现有的 Prometheus 服务器
将以下 YAML 片段添加到您的 Prometheus 配置文件中
remote_write: - url: http://<ingress-host>/api/v1/push
在这种情况下,您的 Prometheus 服务器将根据现有
scrape_configs
配置中定义的内容,将指标写入 Grafana Mimir。重启 Prometheus 服务器。
对于尚未存在的 Prometheus 服务器
将以下配置写入
prometheus.yml
文件remote_write: - url: http://<ingress-host>/api/v1/push scrape_configs: - job_name: prometheus honor_labels: true static_configs: - targets: ["localhost:9090"]
在这种情况下,您的 Prometheus 服务器将抓取自身指标并写入 Grafana Mimir。
使用 Docker 启动 Prometheus 服务器
docker run -p 9090:9090 -v <absolute-path-to>/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
注意: 在 Linux 系统上,如果 Prometheus 服务器无法解析 <ingress-host>,请使用附加命令行标志
--add-host=<ingress-host>:<kubernetes-cluster-external-address>
进行设置。
配置 Grafana Alloy 以写入 Grafana Mimir
您可以配置 Grafana Alloy 以写入 Grafana Mimir,或者配置 Prometheus 以写入 Mimir。虽然两者都可以配置,但您不需要同时配置。
根据您是否已设置 Alloy 进行选择
对于现有的 Alloy
将以下针对
prometheus.remote_write
组件的配置片段添加到您的 Alloy 配置文件中prometheus.remote_write "LABEL" { endpoint { url = http://<ingress-host>/api/v1/push } }
将
forward_to = [prometheus.remote_write.LABEL.receiver]
添加到现有流水线中。重启 Alloy。
对于新的 Alloy
将以下配置写入
config.alloy
文件prometheus.exporter.self "self_metrics" { } prometheus.scrape "self_scrape" { targets = prometheus.exporter.self.self_metrics.targets forward_to = [prometheus.remote_write.mimir.receiver] } prometheus.remote_write "mimir" { endpoint { url = "http://<ingress-host>/api/v1/push" } }
使用 Docker 启动 Alloy
docker run -v <absolute-path-to>/config.alloy:/etc/alloy/config.alloy -p 12345:12345 grafana/alloy:latest run --server.http.listen-addr=0.0.0.0:12345 --storage.path=/var/lib/alloy/data /etc/alloy/config.alloy
注意: 在 Linux 系统上,如果 Alloy 无法解析 <ingress-host>,请使用附加命令行标志
--add-host=<ingress-host>:<kubernetes-cluster-external-address>
进行设置。
有关 prometheus.remote_write
组件的更多信息,请参阅 Grafana Alloy 文档中的prometheus.remote_write。
在 Grafana 中查询指标
您可以使用在 Kubernetes 中启动 Grafana 并查询指标文档中已安装在 Kubernetes 中的 Grafana,或按照以下说明进行操作。
注意: 如果您在上一步中为 Grafana 运行了 port-forward,请停止它。
首先安装 Grafana,然后添加 Mimir 作为 Prometheus 数据源。
使用 Docker 启动 Grafana
docker run --rm --name=grafana -p 3000:3000 grafana/grafana
注意: 在 Linux 系统上,如果 Grafana 无法解析 <ingress-host>,请使用附加命令行标志
--add-host=<ingress-host>:<kubernetes-cluster-external-address>
进行设置。在浏览器中,访问 Grafana 服务器,地址为https://:3000。
使用默认用户名
admin
和密码admin
登录。在左侧菜单中,转到 Configuration > Data sources。
使用以下设置配置新的 Prometheus 数据源,以查询本地 Grafana Mimir 集群
字段 值 名称 Mimir URL http://<ingress-host>/prometheus 要添加数据源,请参阅添加数据源。
验证成功
您应该能够在Grafana Explore中查询指标,并使用新配置的
Mimir
数据源创建仪表盘面板。有关更多信息,请参阅监控 Grafana Mimir。