11 KiB
title, date, description, draft
| title | date | description | draft |
|---|---|---|---|
| false |
Устанавливаем и настравиваем node_exporter
Описание
node-exporter написан на Golang и распространяется в виде исполняемого файла, включающего в себя все необходимы библиотеки.
Установка
Поэтому установка состоит из того чтобы скачать и скопировать файл с github проекта в папку включенную в PATH (то есть ту, в которой командная оболочка ищет использняемые файлы).
curl -s https://api.github.com/repos/prometheus/node_exporter/releases/latest| grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi -
# Разархивируем полученный архив
tar -xvf node_exporter*.tar.gz
# Переходим в папку с исполняемым файлом
cd node_exporter*/
# Копируем исполняемый файл в католог входящий в PATH для Debian это /usr/local/bin
sudo cp node_exporter /usr/local/bin
#Возвращаемся в домашний каталог
cd
Теперь, если выполнить в консоли сервера, на который мы скачали node_exporter, команду node_exporter --version:
node_exporter, version 1.6.1 (branch: HEAD, revision: 4a1b77600c1873a8233f3ffb55afcedbb63b8d84)
build user: root@586879db11e5
build date: 20230717-12:10:52
go version: go1.20.6
platform: linux/amd64
tags: netgo osusergo static_build
Настройка запуска
Первичная настройка node_exporter заключается в добавлении юнита systemd, чтобы он автоматически запускался при запуске/перезагрузке операционной системы, и в создании конфигурационного файла с параметрами запуска, чтобы каждый раз не лезть в файл юнита с настройками сервиса и не перечитывать каждый настройки systemd после его изменения. Со второго и начнём.
У node_exporter нет конфигурационного файлаб все настройки передаются через ключи командной строки. Но мы их вынесем в отдельный конфигурационный файл. В Debian файлы конфигураций размещаются в каталоге /etc/. В нём и создадим файл с пока еще пустым списком ключей запуска node_exporter.
OPTIONS=""
EOF
Для работы node_exporter нужны права root. Поэтому запускать мы его будем как системную службу. Файлы системных служб находятся в таких каталогах:
-
/usr/lib/systemd/system
-
/lib/systemd/system
-
/etc/systemd/system Причём файлы сервисов, поставляемые с пакетами, как правило, располагаются в каталогах /lib и /usr/lib, а в /etc/ расположены модифицированные файлы юнитов переопределяющие стандартные настройки.
[Unit] Description=Prometheus Node exporter for machine metrics Documentation=https://github.com/prometheus/node_exporter
[Service] Restart=always User=root EnvironmentFile=/etc/node_exporter ExecStart=/usr/local/bin/node_exporter $OPTIONS ExecReload=/bin/kill -HUP $MAINPID TimeoutStopSec=20s SendSIGKILL=no
[Install] WantedBy=multi-user.target EOF
С помощью директивы: EnvironmentFile все переменные из файла, указанного в этой директиве, добавляются в env, это позволяет нам передавать список ключей для Node Exporter через переменную $OPTIONS без изменения службы.
Обновляем список служб systemd, ведь он еще не знает о юните который мы создали раньше. Запускаем node_exporter и добавляем его в автозапуск.
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
Проверяем что node_exporter заработал.
node_exporter.service - Prometheus Node exporter for machine metrics
Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; preset: enabled)
Active: active (running) since Tue 2023-08-22 11:41:37 MSK; 51min ago
Docs: https://github.com/prometheus/node_exporter
Main PID: 78053 (node_exporter)
Tasks: 6 (limit: 6951)
Memory: 13.3M
CPU: 317ms
CGroup: /system.slice/node_exporter.service
└─78053 /usr/local/bin/node_exporter
авг 22 11:41:37 srvr-backup node_exporter[78053]: ts=2023-08-22T08:41:37.040Z caller=node_exporter.go:117 level=info collector=thermal_zone
авг 22 11:41:37 srvr-backup node_exporter[78053]: ts=2023-08-22T08:41:37.040Z caller=node_exporter.go:117 level=info collector=time
авг 22 11:41:37 srvr-backup node_exporter[78053]: ts=2023-08-22T08:41:37.040Z caller=node_exporter.go:117 level=info collector=timex
авг 22 11:41:37 srvr-backup node_exporter[78053]: ts=2023-08-22T08:41:37.040Z caller=node_exporter.go:117 level=info collector=udp_queues
авг 22 11:41:37 srvr-backup node_exporter[78053]: ts=2023-08-22T08:41:37.040Z caller=node_exporter.go:117 level=info collector=uname
авг 22 11:41:37 srvr-backup node_exporter[78053]: ts=2023-08-22T08:41:37.040Z caller=node_exporter.go:117 level=info collector=vmstat
авг 22 11:41:37 srvr-backup node_exporter[78053]: ts=2023-08-22T08:41:37.040Z caller=node_exporter.go:117 level=info collector=xfs
авг 22 11:41:37 srvr-backup node_exporter[78053]: ts=2023-08-22T08:41:37.040Z caller=node_exporter.go:117 level=info collector=zfs
авг 22 11:41:37 srvr-backup node_exporter[78053]: ts=2023-08-22T08:41:37.040Z caller=tls_config.go:274 level=info msg="Listening on" address=[::]:9100
авг 22 11:41:37 srvr-backup node_exporter[78053]: ts=2023-08-22T08:41:37.040Z caller=tls_config.go:277 level=info msg="TLS is disabled." http2=false address=[::]:9100
Как видно из вывода по умолчанию node_exporter работает на порту 9100. Проверим что он нам на нём выдаст
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Date: Tue, 22 Aug 2023 09:35:08 GMT
Content-Length: 961
Настройка метрик
Теперь чтобы изменить настройки node_exporter нужно в созданный нами файл конфигурации /etc/node-exporter внутрб кавычек добавить нужный ключ и перезапустить сервис node_exporter. Например, если мы хотим изменить порт на котором проводится экспозиция собранных метрик и добавить сбор метрик из отдельного файла, то приводим файл настроек к виду:
OPTIONS="--web.listen-address ":9100 --collector.textfile.directory=/tmp/node_exporter"
Ключ –collector.textfile.directory добавляет коллектор, который загружает все файлы *.prom из указаннаго каталога. Это файлы с метриками, создадам такой в указанном каталоге:
cat <<EOF > /tmp/node_exporter/node_exporter_custom_metric.prom
#TYPE slurm_demo_metric counter
slurm_demo_metric 100
EOF
Часто используемые ключи: –log.level Данный ключ устанавливает уровень логирования. Возможные уровни логирования: debug, info, warn, error. По-умолчанию: info
–log.format Данный ключ устанавливает формат логов. Доступные форматы: logfmt и json. По-умолчанию: logfmt
–web.listen-address Данный ключ устанавливает адрес и порт, по которому будет доступен Node Exporter. По-умолчанию: “:9100”
–web.telemetry-path Данный ключ устанавливает адрес, по которому доступны результаты экспозиции. По-умолчанию: “/metrics”
–web.disable-exporter-metrics Данный ключ устанавливает список метрик, которые будут исключены из экспозиции. По-умолчанию: Пустой. Например, для исключения всех метрик, имя которых начинается с go_, значение ключа будет: go_*. Допускается использовать перечисление нескольких метрик, с запятой в качестве разделителя.
Полный список ключей можно просмотреть с помощью ключа –help.
node_exporter --help
node_exporter идёт в комплекте с ножеством коллекторов (сборщиков) метрик. Список их довольно велик и большая часть из них по-умолчанию отключена. получить их список можно с помощью ключа –help.
node_exporter --help
Использованные материалы
Где находятся файлы сервисов Systemd Install Prometheus and node_exporter on Debian 11|10 Monitoring Linux host metrics with the Node Exporter

