Prometheus 没有抓取 stats d exporter
Posted
技术标签:
【中文标题】Prometheus 没有抓取 stats d exporter【英文标题】:Prometheus is not scraping stats d exporter 【发布时间】:2021-12-22 04:31:58 【问题描述】:我对 docker、k6、Prometheus、statds 非常陌生。
场景 - 创建一个将运行 create 的 docker compost 文件
-
具有自定义指标的 K6 负载测试。将结果发送给 Statsd Exporter(想法是使用 Prometheus 作为数据库,但由于 K6 不支持直接支持 Prometheus,所以我使用的是 Statsd。如果有人有比这更简单的解决方案,请随时提出建议。)。李>
Prometheus 将从 statsd 导出器中抓取结果。
Grafana - 将连接到 Prometheus 并显示可视化。
但是发生的情况是生成的 Statsd 指标包括我的自定义指标。但普罗米修斯并没有刮掉它。 prometheus 作业未在 prometheus 的 Status->Targets 页面中列出。
以下是我的 docker-compose 文件。
version: '3.7'
services:
statsdex:
image: "prom/statsd-exporter:latest"
container_name: statsd_exporter
ports:
- 9102:9102
volumes:
- ./loadtesting/statsd_mapping.yml:/tmp/statsd_mapping.yml
k6:
image: "loadimpact/k6:0.32.0"
command: ["run", "/scripts/K6-script.js","-q", "-o","statsd"]
depends_on:
- statsdex
environment:
K6_STATSD_ADDR: "statsdex:9125"
K6_STATSD_ENABLE_TAGS: "true"
K6_STATSD_PUSH_INTERVAL: 1s
#K6_STATSD_BUFFER_SIZE: 7000
volumes:
- "./loadtesting:/scripts"
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_BASIC_ENABLED=false
- GF_INSTALL_PLUGINS=michaeldmoore-scatter-panel
volumes:
- grafana-storage:/var/lib/grafana
- ./grafana/dashboards:/etc/grafana/dashboards/
- ./grafana/datasources:/etc/grafana/datasources/
- ./grafana:/etc/grafana/provisioning/
prometheus:
image: prom/prometheus
container_name: prometheus
ports:
- 9090:9090
volumes:
- ./loadtesting/prometheus.yml:/etc/prometheus/prometheus.yml
volumes:
grafana-storage:
external: true
以下是我的 Prometheus yaml 文件,我认为它试图从 statds 导出器输出结果的同一端口抓取数据。 (我没有在 Prometheus 中看到这项工作。我尝试提供 ip 地址,localhost 也是。)
scrape_configs:
- job_name: 'statsd_exporter'
static_configs:
- targets: ['statsd_exporter:9102']
以下是用于 K6 映射的 statds 导出器的映射文件。
defaults:
observer_type: histogram
mappings:
- match: "k6.*"
name: "k6_$1"
- match: "k6.check.*.*.*"
name: "k6_check"
labels:
http_name: "$1"
check_name: "$2"
outcome: "$3"
当我使用命令 docker compose up 时,我可以看到
-
在所有四个服务都已启动并运行的 docker 桌面中。脚本执行完成后 K6 退出。
我可以在 http://localhost:9102/metrics 看到 Statsd Metrics
我可以看到 Prometheus 设置在 http://localhost:9090。但是在 Status->Targets 部分我没有看到 Statsd Exporter。这就是我认为问题所在。 Prometheus 和 Statsd 出口商没有互相交谈。这可能是我无法从 Prometheus 查询 statsd 导出器中的自定义指标的原因。
以下是Prometheus中的配置。
global:
scrape_interval: 15s
scrape_timeout: 10s
evaluation_interval: 15s
alerting:
alertmanagers:
- follow_redirects: true
scheme: http
timeout: 10s
api_version: v2
static_configs:
- targets: []
scrape_configs:
- job_name: prometheus
honor_timestamps: true
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
follow_redirects: true
static_configs:
- targets:
- localhost:9090
- job_name: wmi_exporter
honor_timestamps: true
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
follow_redirects: true
static_configs:
- targets:
- localhost:9182
谁能帮我弄清楚到底是什么问题?
【问题讨论】:
我不记得 OTOH 但 Compose DNS 是使用statsdex
(服务名称)还是 statsd_exporter
(容器名称)构建的?或者两者兼而有之?您在 Prometheus 配置中使用 statsd_exporter
,您可能希望将其切换为 statsdex
您可能需要检查日志中的错误docker-compose logs statsdex
或... prometheus
【参考方案1】:
我发现了问题并得出了解决方案。
prometheus 和 statsdex 没有互相交谈。 Prometheus 是在刮自己而不是 statsdex。我为 prometheus 更改了我的 docker compose 并提供了 prometheus yml 文件的详细信息。我将普罗米修斯文件保存在给定的确切位置。 所以 promethus 从配置文件中读取。
普罗米修斯: 图片:舞会/普罗米修斯 命令: - '--config.file=/etc/prometheus/prometheus.yml' 容器名称:普罗米修斯 端口: - 9090:9090 卷: - ./prometheus:/etc/prometheus - 普罗米修斯数据:/普罗米修斯
在 prometheus yml 文件中,我给出了 ip 地址而不是服务的名称。
scrape_configs:
job_name: 'statsdex' 指标路径:/指标 静态配置: 目标:['x.x.x.1:9102']它就像一个魅力。
【讨论】:
以上是关于Prometheus 没有抓取 stats d exporter的主要内容,如果未能解决你的问题,请参考以下文章