为了账号安全,请及时绑定邮箱和手机立即绑定

自定义指标未显示在 prometheus web ui 中,在 grafana 中也是如此

自定义指标未显示在 prometheus web ui 中,在 grafana 中也是如此

Go
慕丝7291255 2023-01-03 17:04:24
首先,我试过这个解决方案对我不起作用。我需要使用 Prometheus 记录一些自定义指标。docker-compose.ymlversion: "3"volumes:  prometheus_data: {}  grafana_data: {}services:  prometheus:    image: prom/prometheus:latest    container_name: prometheus    hostname: my_service    ports:      - 9090:9090    depends_on:      - my_service  my-service:    build: .    ports:      - 8080:8080  grafana:    image: grafana/grafana:latest    container_name: grafana    hostname: grafana    ports:      - 3000:3000    depends_on:      - prometheus普罗米修斯.ymlglobal:  scrape_interval: 5s  scrape_timeout: 10s  external_labels:    monitor: 'my-project'rule_files:scrape_configs:  - job_name: myapp    scrape_interval: 10s    static_configs:      - targets:          - my_service:8080我也尝试了外部 ip,但我无法在 prometheus UI 中看到我的指标。此外,目标页面显示 localhost:9090 已启动。可能是什么问题呢?任何人都可以更正 docker compose 和 prometheus 文件吗?
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

您没有配置prometheus容器|服务来使用prometheus.yml您定义的。


你想要这样的东西:


  prometheus:

    restart: always

    depends_on:

      - gcp-exporter

    image: prom/prometheus:latest

    container_name: prometheus

    command:

      - --config.file=/etc/prometheus/prometheus.yml

      # Permits `curl --request POST http://localhost:9090/-/reload`

      - --web.enable-lifecycle

    volumes:

      - ${PWD}/prometheus.yml:/etc/prometheus/prometheus.yml

    expose:

      - "9090"

    ports:

      - 9090:9090

在此配置中,您运行docker-compose${PWD}) 的文件夹还包含${PWD}/prometheus.yml.

YAML 指定:

  1. 配置文件(使用--config-file)位于容器中的(默认?)位置/etc/prometheus/prometheus.yml。这一行是多余的,但有助于文档。

  2. 主机的prometheus.yml(in ${PWD})被映射到容器的/etc/prometheus.prometheus.yml(匹配上面的配置)。如果您的文件夹结构不同,请修改--volume={source}/prometheus.yml:/etc/prometheus/prometheus.yml.

您可以通过检查 Prometheus 服务器的目标来验证这一点,以确保它通过检查进行抓取my_server:8080http://localhost:9090/targets

值得my_service通过检查以下内容来确保正确发布指标:http://localhost:8080/metrics

注意从您的主机,my_service只能访问,localhost:8080但是,您在Docker Compose 网络中prometheus.yml正确地引用了它。my_service

我鼓励您在引用容器时不要使用标签。具有误导性。它可能不会引用最新的图像,并且您几乎无法控制正在使用的图像。参见Understanding Docker's "latest" taglatestlatest


查看完整回答
反对 回复 2023-01-03
?
桃花长相依

TA贡献1860条经验 获得超8个赞

所以我找到了。我必须使用容器名称设置我的抓取配置。像这样的


scrape_configs:

  - job_name: my-service

    scrape_interval: 15s

    scrape_timeout: 10s

    metrics_path: /metrics

    static_configs:

      - targets:

          - 'prometheus:9090'

          - 'my-service:8080'

将 Prometheus 卷修复到数据后,您将看到您的服务已启动并正在运行http://localhost:9090/targets


查看完整回答
反对 回复 2023-01-03
  • 2 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信