#docker-compose #mapping #prometheus #statsd #k6
Вопрос:
Я совершенно новичок в docker,k6, Prometheus,statds.
Сценарий — Создайте файл компоста docker, который будет запускать создание
- Нагрузочный тест K6, который имеет пользовательские показатели. Отправьте результат экспортеру Statsd (идея состоит в том, чтобы использовать Prometheus в качестве базы данных, но поскольку K6 не поддерживает прямую поддержку Prometheus, я использую Statsd. Если у кого-нибудь есть более простое решение, чем это, пожалуйста, не стесняйтесь предлагать.).
- Прометей, который соскребет результаты с экспортера статсд.
- Графана — которая соединится с Прометеем и покажет визуализацию.
Но что происходит, так это то, что метрики Statsd генерируются, включая мои пользовательские метрики. Но «Прометей» не соскабливает его. Задание prometheus не отображается на странице Статус-gt;Цели на prometheus.
Ниже приведен мой файл 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 выводит результаты. (Я не вижу этой работы в списке «Прометея». Я попытался указать ip-адрес, локальный хост тоже.)
scrape_configs: - job_name: 'statsd_exporter' static_configs: - targets: ['statsd_exporter:9102']
Following is the mapping file for statds exporter for K6 mapping.
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"
When I use the command docker compose up I can see
- In the docker desktop that all the four services are up and running. K6 exits after the script execution is done.
- I can see the Statsd Metrics at http://localhost:9102/metrics
- Я вижу, что «Прометей» установлен в http://localhost:9090. Но в разделе Статус-gt;Цели я не вижу экспортера Statsd. Вот в чем, я думаю, проблема. Прометей и Статс-экспортер не разговаривают друг с другом. Это может быть причиной, по которой я не могу запросить пользовательские показатели, которые находятся в экспортере statsd от Prometheus.
Ниже приведена конфигурация в 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
Может ли кто-нибудь помочь мне понять, в чем именно проблема?
Комментарии:
1. Я не помню OTOH, но создается ли DNS-сервер с
statsdex
помощью (имя службы) илиstatsd_exporter
(имя контейнера)? Или то и другое? Вы используетеstatsd_exporter
конфигурацию Prometheus и, возможно, захотите переключить ее наstatsdex
2. Возможно, вам захочется проверить журналы на наличие ошибок
docker-compose logs statsdex
или... prometheus
Ответ №1:
Я разобрался в проблеме и пришел к решению.
прометей и статсдекс не разговаривали друг с другом. «Прометей» выскребал сам себя вместо «статсдекса». Я изменил свою композицию docker для prometheus и предоставил сведения о файле prometheus yml. Я хранил файл «прометей» в указанном точном месте. итак, прометей читает из конфигурационного файла.
прометей: изображение: прометей/прометей команда: — ‘—config.file=/etc/прометей/прометей.имя контейнера yml: прометей порты: — 9090:9090
тома:
— ./прометей:/и т. Д./прометей — прометей-данные:/прометей
В файле prometheus yml я указал ip-адрес вместо имени службы.
scrape_configs:
- имя задания: ‘statsdex’ путь к метрикам: /метрики
static_configs:- цели: [‘x.x.x.1:9102’]
Это сработало как заклинание.