Общие сведения
Мониторинг приложения Dashboards TN (далее – приложение) реализован с использованием Prometheus.
Для работы с метриками используется клиентская библиотека Go.
Возможно настроить передачу собранных метрик мониторинга в Grafana стандартным способом интеграции Prometheus и Grafana - см. документацию к соответствующим продуктам.
О работе приложения собираются следующие метрики.
Получение метрик
Для получения метрик необходимо предварительно собирать их на хосте с развернутым приложением, после чего передавать на удаленный экземпляр Prometheus.
Для предварительного сбора метрик необходимо использовать Prometheus в режиме agent.
Далее в разделе рассмотрим настройку Prometheus для сбора метрик из приложения, развернутого с использованием Docker и с использованием пакетов, а также настройку удаленного экземпляра Prometheus для получения метрик.
Сбор метрик для Docker-установки
Для сбора метрик приложения, развернутого с использованием Docker, необходимо также использовать Prometheus, развернутый с использованием Docker.
1. Добавьте файл конфигурации Prometheus:
mkdir /srv/platform/prometheus && \
cat << EOF > /srv/platform/prometheus/prometheus.yml
global:
scrape_interval: 5s
evaluation_interval: 5s
scrape_configs:
- job_name: "metrics.platform"
metrics_path: /metrics_v2
http_sd_configs:
- url: http://discovery:9610/prometheus_targets
remote_write:
- url: "http://хост:порт/api/v1/write"
send_exemplars: true
EOF
где хост:порт – адрес и порт удаленного экземпляра Prometheus.
2. Добавьте файл конфигурации docker-compose.yml для сервиса Prometheus:
cat << EOF > /srv/platform/prometheus/docker-compose.yml
version: "3.8"
services:
prometheus-agent:
restart: always
image: prom/prometheus:v2.46.0
networks:
- сеть
ports:
- 9091:9090
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command: [ "--config.file=/etc/prometheus/prometheus.yml",
"--storage.agent.path=data-agent/",
"--web.console.libraries=/usr/share/prometheus/console_libraries",
"--web.console.templates=/usr/share/prometheus/consoles",
"--enable-feature=agent" ]
networks:
- сеть:
name: сеть
external: true
EOF
где сеть – сеть Docker, в которой находятся контейнеры приложения. Имя сети можно получить, выполнив команду:
cat /srv/platform/docker-compose.yml | grep -A 1 -m 1 "networks:"
3. Запустите Prometheus:
cd /srv/platform/prometheus && docker compose up -d --remove-orphans || docker-compose up -d --remove-orphans
Сбор метрик для пакетной установки
Для сбора метрик приложения, развернутого с использованием пакетной установки, необходимо также использовать Prometheus, развернутый с использованием пакетной установки.
1. Скачайте архив Prometheus с официального сайта разработчика и распакуйте его (для примера использована ссылка на актуальную на момент написания версию дистрибутива Prometheus для Linux):
mkdir /etc/prometheus && \ wget https://github.com/prometheus/prometheus/releases/download/v2.48.0-rc.0/prometheus-2.48.0-rc.0.linux-amd64.tar.gz && \ tar -xzvf prometheus-2.48.0-rc.0.linux-amd64.tar.gz -C /etc/prometheus/ --strip-components 1
2. Добавьте файл конфигурации Prometheus:
cat << EOF > /etc/prometheus/prometheus.yml
global:
scrape_interval: 5s
evaluation_interval: 5s
scrape_configs:
- job_name: "metrics.platform"
metrics_path: /metrics_v2
http_sd_configs:
- url: http://localhost:9610/prometheus_targets
remote_write:
- url: "http://хост:порт/api/v1/write"
send_exemplars: true
EOF
где хост:порт – адрес и порт удаленного экземпляра Prometheus.
3. Запустите Prometheus с параметрами:
cd /etc/prometheus && ./prometheus --storage.agent.path=data-agent --enable-feature=agent
Настройка удаленного экземпляра Prometheus
Для получения собранных метрик можно использовать любой способ развертывания Prometheus.
Чтобы получать собранные метрики приложения на удаленном экземпляре Prometheus, запустите его с параметрами:
/bin/prometheus --web.enable-remote-write-receiver
или используйте эти параметры в файле конфигурации docker-compose.yml для удаленного экземпляра Prometheus:
mkdir /srv/prometheus && \
cat << EOF > /srv/prometheus/docker-compose.yml
version: "3.8"
services:
prometheus:
restart: always
image: prom/prometheus:v2.46.0
networks:
- "prometheus"
ports:
- 9090:9090
volumes:
- /srv/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
command: [ "--config.file=/etc/prometheus/prometheus.yml",
"--storage.tsdb.path=/prometheus",
"--web.console.libraries=/usr/share/prometheus/console_libraries",
"--web.console.templates=/usr/share/prometheus/consoles",
"--web.enable-remote-write-receiver" ]
networks:
prometheus:
EOF
Для обоих вариантов используйте стандартную конфигурацию prometheus.yml.