Как настроить Prometheus, работающий в качестве контейнера, для очистки метрик, созданных другим приложением, в качестве контейнера - PullRequest
0 голосов
/ 07 февраля 2019

Я выясняю проблемы в сети между Prometheus и Python-приложением в Docker.Как я могу сделать Prometheus способным очищать метрики, сгенерированные приложением python в докере, и отображать его на конце Prometheus.

Docker-compose.yml

version: '3'
services:
  prometheus:
    image: prom/prometheus:v2.0.0
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"
    links:
      - web
  web:
    image: python:3.5-alpine
    build: ./test
    ports:
     - "5000:8002"

Dockerfile:

FROM python:3.5-alpine
ADD app1.py /
RUN pip install prometheus_client
CMD ["python", "./app1.py"]
EXPOSE 8002

prometheus.yml

# my global config
global:
  scrape_interval:     15s 
  evaluation_interval: 15s 
  external_labels:
      monitor: 'codelab-monitor'
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['docker.for.mac.host.internal:9090']
  - job_name: 'python_app'
    metrics_path: /  
    static_configs:
      - targets: ['docker.for.mac.host.internal:8002']

До сих пор я вижу, что Прометей работает хорошо, и статус его целей показывает UP на 'docker.for.mac.host.internal: 9090'и 'docker.for.mac.host.internal: 8002'

И приложение python также работает, я вижу выходные метрики на порту

Так что теперь все должно работать, Прометей может очистить метрики через указанный порт.Однако таких метрик там нет.

1 Ответ

0 голосов
/ 07 февраля 2019

Это относительная часть файла prometheus.yml, который я использую:

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s
    scrape_timeout: 10s

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    target_groups:
      - targets: ['localhost:9090']

  - job_name: app-server
    target_groups:
      - targets: ['dbserver:5000']

Обратите внимание, что вы также захотите проверить, нажимая различные URL-адреса самостоятельно, что есть метрики для извлечения.

curl "http://dbserver:5000/metrics"

Докер для Mac.Приложение работает на dbserver: 5000 работает на Mac, а не в Docker.Если бы он был внутри Docker, я бы с этим поработал, убедившись, что он выставлен, и что я могу ударить его с помощью curl из окна терминала Mac.

...