docker - Docker:无法使用 VictoriaMetrics“vmagent”抓取 SonarQube,连接被拒绝
问题描述
我正在构建一个docker-compose.yml
并希望使用 VictoriaMetrics 自己的刮板(vmagent)来刮取 SonarQube 通过插件公开的指标/api/prometheus/metrics
。
如果 docker 正在运行,我可以访问localhost:9000/api/prometheus/metrics
并查看我的所有指标。但是,vmagent 每 60 秒抛出以下错误(这意味着至少我的prometheus.yml
配置被正确使用):
vmagent | 2021-02-03T12:02:51.617Z error VictoriaMetrics/lib/promscrape/scrapework.go:235
error when scraping "http://localhost:9000/api/prometheus/metrics" from job "sonarqube" with labels {instance="localhost:9000",job="sonarqube",monitor="codelab-monitor"}:
error when scraping "http://localhost:9000/api/prometheus/metrics": dial tcp4 127.0.0.1:9000: connect: connection refused; try -enableTCP6 command-line flag if you scrape ipv6 addresses
我不是想抓取 IPv6。
我的docker-compose.yml
样子是这样的:
services:
sonarqube:
image: sonarqube:8.2-community
depends_on:
- postgresdb
ports:
- "9000:9000"
networks:
- sonarnet
environment:
[...]
volumes:
[...]
postgresdb:
[...]
victoriametrics:
container_name: victoriametrics
image: victoriametrics/victoria-metrics
ports:
- 8428:8428
- 8089:8089
- 8089:8089/udp
- 2003:2003
- 2003:2003/udp
- 4242:4242
volumes:
[...]
command:
- '--storageDataPath=/storage'
- '--graphiteListenAddr=:2003'
- '--opentsdbListenAddr=:4242'
- '--httpListenAddr=:8428'
- '--influxListenAddr=:8089'
networks:
- sonarnet
restart: always
vmagent:
container_name: vmagent
image: victoriametrics/vmagent
depends_on:
- "victoriametrics"
ports:
- 8429:8429
volumes:
- vmagentdata:/vmagentdata
- ./prometheus:/etc/prometheus
command:
- '--promscrape.config=/etc/prometheus/prometheus.yml'
- '--remoteWrite.url=http://victoriametrics:8428/api/v1/write'
networks:
- sonarnet
restart: always
vmalert:
[...]
alertmanager:
[...]
grafana:
[...]
networks:
sonarnet:
driver: bridge
volumes:
[...]
我的prometheus.yml
(我假设 vmagent 正在正确读取,基于非默认 60 秒的抓取间隔):
global:
scrape_interval: 60s
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'sonarqube'
metrics_path: '/api/prometheus/metrics'
static_configs:
- targets: ['localhost:9000']
我怀疑我的 dockernetworks
配置有问题,但我不知道为什么 vmagent 无法访问http://localhost:9000/api/prometheus/metrics
.
解决方案
Within vmagent
container localhost
will mean vmagent
itself. Try to refer with service name sonarqube:9000
instead of localhost:9000
.
推荐阅读
- python - 具有多个条件的 Pandas 相关函数
- docker - Gramex 在 Docker 容器中引发“inotify watch limited reached”错误
- css - Vue/Vuetify 转换只有一种方式
- flutter - 首次打开时,小部件树中的颤振功能单个容器
- linear-programming - 混合整数线性规划中的整数除法
- html - 如何让一个单元格高于另一个单元格
- javascript - 如何使用 H.ui.MapSettingsControl 选择 POI 地图?
- javascript - Vue 中未定义的 $auth 使用 @websanova/vue-auth
- react-admin - 如何在 react-admin 中重用过滤器输入
- c++ - 使用 QString 打印带有加号或减号的 double