Как контролировать время работы Linux-сервера с помощью Prometheus

Как контролировать время работы 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 и многого другого.