Метрики Prometheus с Docker SwarmPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Метрики Prometheus с Docker Swarm

Сообщение Anonymous »

Сбор метрик с помощью Docker Deploy Replica
Я разработчик, но на моей новой работе в компании нет команды DevOps. Таким образом, у нас нет какого-либо сбора метрик или надлежащих потоков CI/CD. По этой причине я пытаюсь реализовать здесь несколько вещей, но я не эксперт.
Первое, что я пытаюсь сделать, — это реализовать сбор и визуализацию показателей с помощью Prometheus и Grafana. для мониторинга некоторых локальных приложений Python и Node.js. Я использую приложение Flask для тестирования и Docker для локальной установки Prometheus и Grafana, прежде чем настраивать их на соответствующем сервере. Я легко сделал это с помощью prometheus-flask-exporter, но начал замечать некоторые проблемы и у меня возникли вопросы о том, что лучше всего подходит для моего стека приложений.
Стек приложений:< /p>
  • Python
  • Flask
  • Gunicorn с 2 воркёрами и 2 потоками
  • Докер с репликой< /p>
  • Nginx
< Strong>Проблемы и вопросы:
  • Реплика Docker Deploy: Я сразу понял, что в моем приложении есть Реплика Docker для балансировки нагрузки. Итак, когда Prometheus очищает путь /metrics, Docker отправляет запрос на одну из реплик. Я считаю, что оба должны иметь отдельные метрики в Grafana, чтобы увидеть, правильно ли работает балансировка нагрузки. Я создал разные пути для каждой реплики, например /metrics_1 и /metrics_2 в Nginx и два разных задания в Prometheus, и это сработало, но я не думаю, что это правильный способ сделать это.

    Точность показателей. Мне нужны базовые показатели, такие как процентильная задержка, количество запросов в секунду на каждом пути, запросы 2xx, запросы 3xx, запросы 4xx, и запросы 5xx. Однако в том виде, в котором я это реализовал, я не могу доверять метрикам, потому что, когда я сравниваю их с нагрузочным тестом K6, у меня совершенно другие метрики, особенно по процентильной задержке и количеству запросов в секунду.
    < /li>
После этих проблем я разозлился и откатил все, что делал. Теперь я хочу начать с нуля. Мои вопросы в основном касаются передовой практики мониторинга. Учитывая мой стек, на чем мне следует сосредоточиться на мониторинге? Нужно ли мне также собирать метрики из Nginx? Как я могу обрабатывать реплики Docker? Лучше ли отслеживать Gunicorn, используя что-то вроде statsd-exporter, а не Flask, используя prometheus-flask-exporter? Нужен ли мне многопроцессный режим?
Мои файлы конфигурации:
compose.yml:

services:
api:
image: api-auth-ad
build: .
expose:
\- "8000"
environment:
\- SECRET_KEY=${SECRET_KEY}
\- LDAP_DOMAIN=${LDAP_DOMAIN}
deploy:
replicas: 2
resources:
limits:
cpus: "0.75"
memory: "1gb"
restart: always

nginx:
container_name: api-auth-ad-nginx
image: nginx:1.27.0
ports:
\- "80:80"
\- "443:443"
volumes:
\- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
\- api
restart: always

Файл Docker:

FROM python:3.11

WORKDIR /app

COPY pyproject.toml ./

RUN pip install poetry

RUN poetry lock

RUN poetry install --only main

COPY . .

CMD \["poetry", "run", "gunicorn", "--config", "gunicorn_config.py", "src.app:create_app()"\]

gunicorn_config.py:
workers = 2
threads = 2
bind = "0.0.0.0:8000"
loglevel = "info"
accesslog = "-"
errorlog = "-"
worker_class = "gthread"

nginx.conf:
worker_processes auto;
worker_rlimit_nofile 500000;

events {
use epoll;
worker_connections 512;
}

http {
access_log off;
error_log /dev/null emerg;

upstream api_auth {
server api:8000;
keepalive 400;
}

server {
listen 80;

location / {
proxy_pass http://api_auth;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_intercept_errors off;
}

}

}


Подробнее здесь: https://stackoverflow.com/questions/787 ... cker-swarm
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Метрики Prometheus с Docker Swarm
    Anonymous » » в форуме Python
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • Spring + Prometheus + Grafana: ошибка при чтении Prometheus: сообщение «http://localhost:9090/api/v1/query»: наберите TC
    Anonymous » » в форуме JAVA
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Spring + Prometheus + Grafana: Err Чтение Prometheus: post "http: // localhost: 9090/api/v1/Query": Dial TCP 127.0.0.1:9
    Anonymous » » в форуме JAVA
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • Могут ли все контейнеры Docker из Docker Swarm войти в один и тот же файл журнала?
    Anonymous » » в форуме Python
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Могут ли все контейнеры Docker из Docker Swarm войти в один и тот же файл журнала?
    Anonymous » » в форуме Linux
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»