Общие сведения
Мониторинг приложения Dashboards TN (далее – приложение) реализован с использованием Prometheus.
Для работы с метриками используется клиентская библиотека Go.
О работе приложения собираются следующие метрики.
Получение метрик
Для получения метрик необходимо предварительно собирать их на хосте с развернутым приложением, после чего передавать на удаленный экземпляр 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.