Как контролировать время работы Linux-сервера с помощью Prometheus
Если ваша инфраструктура поддерживается на высоких уровнях SLA, которые всегда требуются компаниями и организациями, у вас не будет другого выбора, кроме как узнать, как вы можете измерять, наблюдать и отправлять отчеты, которые фиксируют правду о производительности систем. Когда задают эти холодные и зябкие вопросы, нет никакого ярлыка. Вы можете выбрать либо пустое озадаченное лицо, либо лицо, наполненное теплотой, уверенностью и снабженное достаточно конкретными отчетами.
Чтобы достичь последнего, в этом руководстве мы расскажем, как можно фиксировать время безотказной работы систем Linux Server. И для этого мы должны работать с инструментом, известным как Prometheus. Мы знаем, что вы слышали о Prometheus, но позвольте нам представить его еще раз. Prometheus — это инструмент мониторинга, предназначенный для записи показателей в реальном времени в базу данных временных рядов. Это программный проект с открытым исходным кодом, написанный на Go, а метрики Prometheus собираются с использованием HTTP-запросов, что обеспечивает более высокую производительность и масштабируемость.
В этом руководстве, как следует из названия, мы обсудим, как вы можете отслеживать время безотказной работы Linux-сервера с помощью Prometheus. Мы установим его и воспользуемся его надежными возможностями для получения интересующих нас данных. Поэтому мы начнем.
Шаг 1. Подготовьте сервер
В зависимости от среды, в которой находятся ваши серверы, вам следует обновить и установить все основные пакеты, которые вы обычно используете, такие как текстовый редактор (vim или nano), wget или curl и другие, без которых вы не можете обойтись.
####For Ubuntu####
sudo apt update && sudo apt upgrade
sudo apt install vim wget curl -y
####For CentOS####
sudo yum update
sudo yum install vim wget curl -y
Шаг 2: Установите Prometheus
Поскольку Прометей находится в центре внимания этого руководства, мы приступим к его настройке и убедимся, что он готов служить нам. К счастью, у нас есть подробные инструкции по установке. Независимо от того, используете ли вы CentOS, Debian или Ubuntu , вы отсортированы. Проверьте ссылки ниже, чтобы установить Prometheus.
Install Prometheus Server on Ubuntu | Debian
How To Install Prometheus on RHEL | CentOS 8
Установить node_exporter
Во-первых, давайте создадим пользователя системы Node Exporter, который упростит его запуск. Создайте такого пользователя следующим образом:
sudo useradd -M -r -s /bin/false node_exporter
После этого загрузите и установите Node Exporter следующим образом. Направьте свой браузер на страницу загрузок Prometheus и загрузите последнюю версию Node Exporter.
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 -
Чтобы установить Node Exporter, мы просто скопируем двоичный файл node_exporter из папки архива в /usr/local/bin, который находится в переменной среды PATH.
tar -xvf node_exporter*.tar.gz
cd node_exporter*/
sudo cp node_exporter /usr/local/bin
Создайте сервис node_exporter .
cat << EOF | sudo tee /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=default.target
EOF
Перезагрузите Systemd и запустите службу.
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
После этого, если у вас запущен брандмауэр, вам нужно будет разрешить порт 9100, который node_exporter использует по умолчанию.
##On Ubuntu
sudo ufw allow 9100
##On CentOS
sudo firewall-cmd --add-port=9100/tcp --permanent && sudo firewall-cmd --reload
Шаг 3. Добавьте цель в Монитор через Prometheus
На целевом узле установите только node_exporter
Установить node_exporter
Создать пользователя системы Node Exporter
sudo useradd -M -r -s /bin/false node_exporter
После этого загрузите и установите Node Exporter следующим образом. Направьте свой браузер на страницу загрузок Prometheus и загрузите последнюю версию Node Exporter.
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 -
Чтобы установить Node Exporter, мы просто скопируем двоичный файл node_exporter из папки архива в /usr/local/bin .
tar -xvf node_exporter*.tar.gz
cd node_exporter*/
sudo cp node_exporter /usr/local/bin
Подтвердите установку, проверив версию программного обеспечения:
$ node_exporter --version
node_exporter, version 1.0.1 (branch: HEAD, revision: 3715be6ae899f2a9b9dbfd9c39f3e09a7bd4559f)
build user: root@1f76dbbcfa55
build date: 20200616-12:44:12
go version: go1.14.4
Создайте сервис node_exporter .
cat << EOF | sudo tee /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=default.target
EOF
Перезагрузите systemd и запустите службу.
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
После этого, если у вас запущен брандмауэр, вам нужно будет разрешить порт 9100, который node_exporter использует по умолчанию.
##On Ubuntu
sudo ufw allow 9100
##On CentOS
sudo firewall-cmd --add-port=9100/tcp --permanent && sudo firewall-cmd --reload
Обновите конфигурации Prometheus Server
После установки node_exporter нам нужно будет обновить файл конфигурации нашего сервера Prometheus, чтобы получить цель нового узла / сервера.
Добавьте разделы в конце файла конфигурации следующим образом
$ sudo vim /etc/prometheus/prometheus.yml
# This global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: node
static_configs:
- targets: ['172.28.204.30:9100']
Затем перезапустите prometheus
sudo systemctl restart prometheus
Когда вы вернетесь в браузер, вы должны увидеть страницу, как показано ниже, с новым узлом в списке.
Шаг 4. Добавьте экспортер черного ящика
Экспортер черного ящика позволяет выполнять зондирование конечных точек через HTTP, HTTPS, DNS, TCP и ICMP . Он работает независимо, затем Prometheus привязывается к нему, отправляет запросы конечным точкам, предоставленным черным ящиком, и выполняет действия в соответствии с настройками.
Во-первых, давайте создадим пользователя системы экспорта черного ящика, который упростит его запуск. Создайте такого пользователя следующим образом:
sudo useradd -M -r -s /bin/false blackbox
Установить экспортер Blackbox
Мы собираемся загрузить и установить экспортер Blackbox со страницы его последних выпусков.
cd ~
curl -s https://api.github.com/repos/prometheus/blackbox_exporter/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -
Извлеките загруженный файл и скопируйте двоичные файлы в каталог в переменной среды PATH.
tar xvzf blackbox_exporter-*.linux-amd64.tar.gz
cd blackbox_exporter-*.linux-amd64
sudo cp blackbox_exporter /usr/local/bin
Подтвердите установку:
$ blackbox_exporter --version
blackbox_exporter, version 0.18.0 (branch: HEAD, revision: 60c86e6ce5a1111f7958b06ae7a08222bb6ec839)
build user: root@53d72328d93f
build date: 20201012-09:46:31
go version: go1.15.2
Убедитесь, что черный ящик может читать двоичные файлы
$ sudo chown blackbox:blackbox /usr/local/bin/blackbox_exporter
Прежде чем выйти из того же каталога, мы создадим файлы конфигурации черного ящика и убедимся, что пользователь черного ящика имеет необходимые права для чтения файлов, как показано ниже.
cd ~/blackbox_exporter-*.linux-amd64
sudo mkdir -p /etc/blackbox
sudo cp blackbox.yml /etc/blackbox
sudo chown -R blackbox:blackbox /etc/blackbox/*
После копирования двоичных файлов в каталог в PATH мы приступим к созданию для него служебного файла Systemd следующим образом:
$ sudo vim /etc/systemd/system/blackbox.service
[Unit]
Description=Blackbox Exporter Service
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=blackbox
Group=blackbox
ExecStart=/usr/local/bin/blackbox_exporter \
--config.file=/etc/blackbox/blackbox.yml \
--web.listen-address=":9115"
Restart=always
[Install]
WantedBy=multi-user.target
Как видно из служебного файла, черный ящик будет прослушивать порт 9115 . Как вы можете догадаться, нам нужно будет разрешить этот порт на брандмауэре, если он у вас работает следующим образом
##On Ubuntu
sudo ufw allow 9115
##On CentOS
sudo firewall-cmd --add-port=9115/tcp --permanent && sudo firewall-cmd --reload
Для добавления служебного файла требуется перезагрузка демона, после чего мы можем запустить нашу службу черного ящика. Выполните приведенные ниже команды, чтобы наш экспортер черного ящика мурлыкал.
sudo systemctl daemon-reload
sudo systemctl enable blackbox
sudo systemctl start blackbox
Затем вы можете проверить статус, чтобы убедиться, что экспортер действительно работает:
$ sudo systemctl status blackbox
● blackbox.service - Blackbox Exporter Service
Loaded: loaded (/etc/systemd/system/blackbox.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2020-12-03 08:13:03 UTC; 4min 20s ago
Main PID: 2161 (blackbox_export)
Tasks: 7 (limit: 2204)
Memory: 2.2M
CGroup: /system.slice/blackbox.service
└─2161 /usr/local/bin/blackbox_exporter --config.file=/etc/blackbox/blackbox.yml --web.listen-address=:9115
Как только мы дойдем до этого момента, мы сможем получить доступ к веб-интерфейсу экспортера черного ящика, показанному на скриншоте ниже, после того, как мы укажем в браузере “http://ip-or-fqdn:9115“
Шаг 5. Мониторинг конечных точек с помощью Blackbox Exporter
Теперь, когда у нас установлен и запущен Blackbox Exporter, пришло время воспользоваться всеми преимуществами, которые он предоставляет, чтобы облегчить нашу жизнь. Если у вас есть какие-либо конечные точки http или https, которые вы хотите отслеживать, Blackbox Exporter поставляется с модулями, которые помогут вам в этом. Считайте модули солдатами, исследующими HTTP, HTTPS, DNS, TCP и ICMP от имени экспортера.
Мы собираемся отслеживать простые конечные точки, которые существуют в файле конфигурации экспортера черного ящика по умолчанию, привязав их к нашему серверу prometheus в качестве примера. Файл конфигурации экспортера черного ящика по умолчанию поставляется с предопределенными модулями, которые мы можем использовать для привязки к нашему серверу Prometheus. Вы можете просмотреть модули в файле « /etc/blackbox/blackbox.yml», в который вы установили черный ящик .
Привязать Blackbox Exporter к Прометею
На сервере Prometheus добавьте следующую конфигурацию в конец файла, который будет читать модули в Blackbox Exporter.
$ sudo vim /etc/prometheus/prometheus.yml
# any [job_name]
- job_name: 'ICMP_Probe_Blackbox'
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
# The hostname or IP address of the host you are targeting
- 172.28.204.30
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
# Where Blackbox exporter was installed plust port
replacement: 172.28.204.30:9115
# Using the [ssh_banner] module
- job_name: 'SSH_Probe_Blackbox'
metrics_path: /probe
params:
module: [ssh_banner]
static_configs:
- targets:
# The host you are targeting plus ssh port
- 172.28.204.30:22
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
# Where Blackbox exporter was installed plust port
replacement: 172.28.204.30:9115
# Using the [http_2xx] module
- job_name: 'Blackbox_tcp'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
# The http host you are targeting
- http://172.28.204.30
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
#Where Blackbox exporter was installed plust port
replacement: 172.28.204.30:9115
Затем перезапустите Прометей
sudo systemctl restart prometheus
Когда мы перейдем к веб-интерфейсу Prometheus и обновимся, мы должны увидеть все добавленные зонды, как показано на скриншоте ниже.
Шаг 6: просмотр датчиков
Мы можем просматривать статус наших зондов в вашем интерфейсе Prometheus. Для этого щелкните вкладку « График », затем в области поиска введите « Выражение », введите пробу, и вы увидите много всплывающих подсказок.
Мы возьмем в качестве примера probe_success, затем нажмем « Execute »
После выбора probe_success щелкните вкладку Graph под ним, как показано ниже:
Вы должны увидеть признаки успеха, как показано на рисунке.
Шаг 7. Визуализируйте все это на Grafana
Grafana предоставляет визуально достойные функции, которые мы не можем забыть добавить в эту экосистему мониторинга. Если у вас не установлена Grafana, у нас есть замечательные руководства, которые помогут вам быстро начать работу. Они предоставлены вам ниже:
Как установить Grafana на CentOS 8 / RHEL 8
Установка Grafana 7 на Ubuntu | Debian Linux
После того, как вы установили Grafana, убедитесь, что вы можете получить доступ к IP-адресу и порту вашего сервера Prometheus, затем добавьте его в качестве источника данных, как показано ниже. Затем войдите в систему:
Наведите указатель мыши на значок шестеренки в настройках и выберите « Источники данных ».
Затем нажмите « Добавить источник данных ».
Выберите Prometheus
Введите необходимые данные, например, где работает Прометей и т. Д. Вы также можете дать ему имя, которое вам больше нравится.
После того, как вы закончите, прокрутите вниз и нажмите « Сохранить и проверить ». Если все пойдет хорошо, вы должны увидеть хорошее сообщение на зеленом, как показано ниже.
После того, как ваш источник данных добавлен, нам нужно добавить информационную панель, которая резюмирует то, что нам нужно просматривать / отслеживать. Наведите указатель мыши на значок + и нажмите « Импорт ».
Войдите в панель управления Sparanoid с идентификатором 7587 . Нажмите « Импорт».
Появится новая страница с подробной информацией о создателе панели инструментов. Выберите источник данных Prometheus, затем нажмите « Импорт ».
В тот момент, когда вы нажмете «Импорт», панель управления должна появиться в великолепном виде, как показано ниже.
И мы должны закончить с настройкой нашего мониторинга
Заключительные слова
Prometheus универсален и позволяет вам делать гораздо больше, чем просто извлекать метрики для визуализации. Это может быть ваш сервер мониторинга для получения статуса конечных точек sshd, http и https , вашего порта MySQL и многого другого.