Шпаргалка по установке и настройке различных Prometheus exporter на Linux

Обновлено Обновлено: Опубликовано Опубликовано:

Экспортеры Prometheus выступают как агенты мониторинга, позволяя собирать метрики с удаленных хостов, которые собирает сам сервер Prometheus. Данная инструкция является шпаргалкой по установке и настройке различных node exporter. По мере необходимости, список будет пополняться.

node_exporter

Экспортер предназначен для получения метрик от операционной системы. По умолчанию, работает на порту 9100.

Загрузка и установка

Заходим на страницу загрузки и смотрим актуальную версию node_exporter. Создаем переменную со значением данной версии:

NE_VER=1.9.0

Теперь используем ее для загрузки node_exporter:

curl -sLO https://github.com/prometheus/node_exporter/releases/download/v${NE_VER}/node_exporter-${NE_VER}.linux-amd64.tar.gz

Распакуем скачанный архив:

tar -zxf node_exporter-*.linux-amd64.tar.gz

Перейдем в каталог с распакованными файлами:

cd node_exporter-*.linux-amd64

Копируем исполняемый файл в bin:

cp node_exporter /usr/local/bin/

Выходим из каталога и удаляем исходник:

cd .. && rm -rf node_exporter-*.linux-amd64/ && rm -f node_exporter-*.linux-amd64.tar.gz

Запуск и проверка

Создаем пользователя nodeusr:

useradd --no-create-home --shell /bin/false nodeusr

Задаем владельца для исполняемого файла:

chown -R nodeusr:nodeusr /usr/local/bin/node_exporter

Создаем файл node_exporter.service в systemd:

vi /etc/systemd/system/node_exporter.service

[Unit]
Description=Node Exporter Service
After=network.target

[Service]
User=nodeusr
Group=nodeusr
Type=simple
ExecStart=/usr/local/bin/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Разрешаем автозапуск:

systemctl enable node_exporter

Запускаем службу:

systemctl start node_exporter

Проверим работу с помощью утилиты curl:

curl 127.0.0.1:9100/metrics

На экране мы должны увидеть метрики, на подобие:

...
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes 1.8446744073709552e+19
# HELP promhttp_metric_handler_errors_total Total number of internal errors encountered by the promhttp metric handler.
# TYPE promhttp_metric_handler_errors_total counter
promhttp_metric_handler_errors_total{cause="encoding"} 0
promhttp_metric_handler_errors_total{cause="gathering"} 0
# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 0
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0

Также можно открыть веб-браузер и перейти по адресу http://<IP-адрес сервера или клиента>:9100/metrics — мы увидим метрики, собранные node_exporter:

Метрики, собранные node_exporter

Установка завершена.

Настройка Prometeus Server

Чтобы сервер мог собрать с него данные, открываем на нем файл:

vi /etc/prometheus/prometheus.yml

И добавляем таргет в job:

  - job_name: 'node_exporter_clients'
    scrape_interval: 5s
    static_configs:
      - targets:
          - 192.168.0.11:9100

* если у нас еще нет подходящей job_name, создаем.

И перезапускаем сервис:

systemctl restart prometheus

NGINX exporter

С помощью nginx-prometheus-exporter можно получить данные о работе веб-сервера nginx. По умолчанию, работает на порту 9113.

Загрузка и установка

Для сборки исходника нам нужны пакеты go, git и curl. Устанавливаем их командой:

apt install git golang curl || yum install git golang curl

Скачиваем проект nginx-prometheus-exporter:

git clone https://github.com/nginxinc/nginx-prometheus-exporter.git

Переходим в загруженный каталог:

cd nginx-prometheus-exporter

Выполняем сборку:

go build

В результате будет создан бинарник nginx-prometheus-exporter. Перенесем его в /usr/local/bin:

mv nginx-prometheus-exporter /usr/local/bin/

Выходим из каталога проекта и удаляем загруженную ранее папку:

cd ../ && rm -rf nginx-prometheus-exporter

Настройка NGINX

Для получения статистики и метрик от nginx, необходимо настроить встроенную страницу server-status. Находим незанятый порт на сервере, например:

ss -tunlp | grep :8080

* данной командой мы увидим, занят ли порт 8080.

Если система возвращает пустую строку, значит порт свободен и мы будем использовать его. Если порт занят, пробуем поискать другие незанятые порты. Дальне по инструкции предполагается, что мы настраиваем 8080.

Создаем конфигурационный файл nginx:

vi /etc/nginx/conf.d/stats.conf

server {
    listen 8080;
    server_name _;
    access_log off;
    location /server-status {
        stub_status on;
    }
}

Проверяем конфигурацию и применяем ее:

nginx -t && nginx -s reload

Должна заработает страница статистики. Можно проверить ее работоспособность командой:

curl http://127.0.0.1:8080/server-status

Мы можем увидеть что-то на подобие:

Active connections: 320 
server accepts handled requests
 498121 498121 15945169 
Reading: 0 Writing: 1 Waiting: 319 

Переходим к запуску экспортера.

Запуск и проверка

Создаем файл для автозапуска экспортера:

vi /etc/systemd/system/nginx_exporter.service

[Unit]
Description=Node Exporter Service
After=network.target

[Service]
User=nodeusr
Group=nodeusr
Type=simple
ExecStart=/usr/local/bin/nginx-prometheus-exporter -nginx.scrape-uri=http://127.0.0.1:8080/server-status
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

* обратите внимание, что экспортер будет запрашивать статистические данные через поднятую нами страницу /server-status.

Создаем учетную запись nodeusr:

useradd --no-create-home --shell /bin/false nodeusr

Разрешаем и стартуем сервис nginx_exporter:

systemctl enable nginx_exporter

systemctl start nginx_exporter

Можно проверить статус службы и прослушивание порта 9113:

systemctl status nginx_exporter

ss -tunlp | grep :9113

Также можно получить набор метрик:

curl 127.0.0.1:9113/metrics

Экспортер готов к работе.

Настройка Prometeus Server

Чтобы добавить экспортер в мониторинг Prometeus на сервере открываем файл:

vi /etc/prometheus/prometheus.yml

Добавляем секцию:

  - job_name: 'nginx'
    scrape_interval: 5s
    static_configs:
      - targets:
          - 192.168.0.11:9113

* где 192.168.0.11 — адрес сервера, где мы установили и настроили экспортер. Обратите внимание, что у вас уже может быть секция для мониторинга nginx — тогда можно не создавать новую, а добавить в список новый сервер с экспортером nginx.

Перезапускаем прометеус:

systemctl restart prometheus

PostgreSQL Exporter

Экспортер позволяет получать метрики для СУБД PostgreSQL. Последний должен быть уже установлен в системе.

Загрузка и установка

Клонируем проект экспортера с гитхаба:

git clone https://github.com/prometheus-community/postgres_exporter.git

Переходим в загруженный каталог:

cd postgres_exporter

Собираем файлы пакета из исходников:

make build

Если мы получили ошибку:

go: go.mod requires go >= x.x.x (running go x.x.x; GOTOOLCHAIN=local)

... значит, версия нашего go не достаточно свежая. Чтобы решить проблему переходим на официальную страницу загрузки golang и смотрим последнюю версию. Создаем переменную:

GO_VER=1.24.1

* где 1.24.1 — версия, которая будет устанавливаться на наш компьютер.

Скачиваем исходник:

curl -sLO https://go.dev/dl/go${GO_VER}.linux-amd64.tar.gz

И устанавливаем GO:

tar -xzf go*.linux-amd64.tar.gz -C /usr/local && rm -f go*.linux-amd64.tar.gz

Теперь можно выполнить сборку еще раз:

PATH=/usr/local/go/bin:$PATH make build

Полученный бинарник postgres_exporter переносим в каталог bin:

mv postgres_exporter /usr/local/bin/postgres_exporter

Запуск и проверка

Для автоматического старта экспортера, создадим юнит в systemd:

vi /etc/systemd/system/postgres_exporter.service

[Unit]
Description=Node Exporter Service
After=network.target

[Service]
EnvironmentFile=/etc/sysconfig/postgres_exporter
User=postgres
Group=postgres
Type=simple
ExecStart=/usr/local/bin/postgres_exporter
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

В данном юните мы используем EnvironmentFile. Создадим и его:

vi /etc/sysconfig/postgres_exporter

DATA_SOURCE_NAME='user=postgres host=/run/postgresql/ sslmode=disable'

* где host — путь до каталога, где располагается сокетный файл postgresql.

Обратите внимание, что для разных поставок PostgreSQL характерно разное расположение сокетного файла. Как правило, это пути /var/run/postgresql, /run/postgresql или /tmp.

В крайнем случае, можно попробовать найти сокет с помощью команды find:

find / -name .s.PGSQL.5432

Разрешаем автозапуск для юнита и стартуем его:

systemctl enable postgres_exporter

systemctl start postgres_exporter

Проверить статус, а также прослушиваемый порт можно командами:

systemctl status postgres_exporter

ss -tunlp | grep 9187

Также можем попробовать получить метрики:

curl 127.0.0.1:9187/metrics

Настройка Prometeus Server

Чтобы сервер увидел метрики PostgreSQL, добавим job_name:

vi /etc/prometheus/prometheus.yml

  - job_name: 'postgresql'
    scrape_interval: 5s
    static_configs:
      - targets:
          - 192.168.0.11:9187

И перезапустим службу прометеуса:

systemctl restart prometheus

Blackbox exporter

Экспортер предназначен для получения метрик с сайтов. По умолчанию, работает на порту 9115.

Загрузка и установка

Заходим на страницу загрузки и смотрим актуальную версию blackbox_exporter. Создаем переменную со значением данной версии:

BE_VER=0.25.0

Теперь используем ее для загрузки node_exporter:

curl -sLO https://github.com/prometheus/blackbox_exporter/releases/download/v${BE_VER}/blackbox_exporter-${BE_VER}.linux-amd64.tar.gz

Распакуем скачанный архив:

tar -zxf blackbox_exporter-*.linux-amd64.tar.gz

Перейдем в каталог с распакованными файлами:

cd blackbox_exporter-*.linux-amd64

Копируем исполняемый файл в bin:

cp blackbox_exporter /usr/local/bin/

Выходим из каталога и удаляем исходник:

cd .. && rm -rf blackbox_exporter-*.linux-amd64/ && rm -f blackbox_exporter-*.linux-amd64.tar.gz

Настройка

Чтобы команда запуска не вернула ошибку, необходимо указать конфигурационный файл для Blackbox exporter. Создем для него каталог:

mkdir -p /etc/blackbox

После сам файл:

vi /etc/blackbox/blackbox.yml

modules:
  http_2xx:
    prober: http
    timeout: 5s
    http:
      valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
      valid_status_codes: [200]
      method: GET
      no_follow_redirects: true
      fail_if_ssl: false
      fail_if_not_ssl: false
      fail_if_body_matches_regexp:
        - "Could not connect to database"
      tls_config:
        insecure_skip_verify: false
      preferred_ip_protocol: "ip4"
      ip_protocol_fallback: false

* во многом, данный пример взят с официальной страницы на Github.

Запуск и проверка

Создаем пользователя blackusr:

useradd --no-create-home --shell /bin/false blackbox

Задаем владельца для исполняемого файла:

chown -R blackbox:blackbox /usr/local/bin/blackbox_exporter

Создаем файл blackbox_exporter.service в systemd:

vi /etc/systemd/system/blackbox_exporter.service

[Unit]
Description=Blackbox Exporter Service
After=network.target

[Service]
User=blackbox
Group=blackbox
Type=simple
ExecStart=/usr/local/bin/blackbox_exporter --config.file=/etc/blackbox/blackbox.yml
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Разрешаем автозапуск:

systemctl enable blackbox_exporter

Запускаем службу:

systemctl start blackbox_exporter

Проверим работу с помощью утилиты curl:

curl 127.0.0.1:9115/metrics

На экране мы должны увидеть метрики, на подобие:

...process_open_fds 9
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 1.27000576e+09
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes 1.8446744073709552e+19
# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 0
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0

Установка завершена.

Настройка Prometeus Server

Чтобы сервер мог собрать данные по сайтам, добавляем в конфигурационный файл:

vi /etc/prometheus/prometheus.yml

scrape_configs:
  ...
  - job_name: 'blackbox'
    metrics_path: /probe
    params:
      module: [http_2xx]
    static_configs:
      - targets:
        - https://www.dmosk.ru
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: localhost:9115

* где в качестве объекта наблюдения был добавлен сайт https://www.dmosk.ru.

И перезапускаем сервис:

systemctl restart prometheus

# Linux # NGINX # Операционные системы # Prometheus
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет

Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Заказать настройку мониторинга

Нужна бесплатная консультация?

Мини-инструкции

Создание виртуальной машины Proxmox с существующим диском

Установка и запуск серверной части potree viewer на Linux Ubuntu

Как установить и настроить сервер для менеджера паролей sysPass на Linux Ubuntu

Установка и настройка различных exporter для Prometheus

Как установить и настроить сервер TFTP на Ubuntu Linux

Шпаргалка по созданию SSH-туннелей в командной строке Linux

Установка и настройка сервера Rocket.Chat на Rocky Linux

Другие инструкции

Все статьи

Нужна помощь? Пишите:






Реклама