Купить Корзина
  • Домены и сайты
  • Облако и IT-инфраструктура
  • Вход

Получить консультацию

Ответим на вопросы, расскажем о конфигурациях, поможем с переносом, подберем оборудование, подготовим коммерческое предложение

Нажимая кнопку «Отправить» я даю согласие на обработку персональных данных и подтверждаю, что ознакомился с Политикой конфиденциальности и правилами пользования сайтом

Персональный менеджер ответит на ваши вопросы и проведет через все этапы заключения договора: — подберет оборудование — сформирует коммерческое предложение — поможет с миграцией сервера к нам

Нажимая кнопку «Отправить» я даю согласие на обработку персональных данных и подтверждаю, что ознакомился с Политикой конфиденциальности и правилами пользования сайтом

Или просто оставьте номер телефона, и мы перезвоним вам

  • Телефон в Москве

    +7 495 580-11-11
  • Бесплатный звонок по России

    8 800 555-34-78
  • Или обратитесь в наши офисы

    Региональные номера
    1. База знаний
    2. Рег.облако
    3. Облачные серверы
    4. Установка программного обеспечения
    5. Система мониторинга Prometheus

    Система мониторинга Prometheus

    В этой статье мы расскажем, что такое мониторинг Prometheus, как установить и как пользоваться Prometheus.

    “система-мониторинга”

    Prometheus описание

    Prometheus — система мониторинга серверов и программ с открытым исходным кодом. Она была выпущена в 2012 году для мониторинга музыкальной социальной сети SoundCloud. Из-за специфики архитектуры SoundCloud традиционные системы мониторинга не подходили, поэтому по новой технологии был создан Prometheus-мониторинг. Позже новый мониторинг сервисов стал интересен за пределами музыкальной сети. Создатели доработали систему и предложили её более широкому рынку. Релиз обновлённой программы прошёл в 2015 году.

    Система мониторинга Prometheus может собирать информацию о состоянии серверов и систем (Linux-сервера, Apache-сервера, сервера баз данных), а также получать предупреждения о проблемах. Объекты мониторинга называются целевыми объектами.

    Главное отличие Prometheus от остальных систем мониторинга — метод сбора данных. Обычно объекты мониторинга отправляют нужные параметры серверам мониторинговых программ. Прометеус же наоборот — сам берёт нужную ему информацию с серверов и устройств, обращаясь к целевым объектам при помощи языка PromQL. Сервер Prometheus считывает параметры целевых объектов с интервалами, которые задаёт пользователь. Данные от целевых объектов передаются на сервер в формате http и хранятся в базе данных временных рядов. В отличие от системы Zabbix, которая написана на языке С и PHP, Prometheus написан на Go и Ruby. Prometheus функционирует благодаря таким компонентам, как:

    • 1.
      Prometheus-server — главное звено всей системы. Он отвечает за сбор и хранение данных. Есть простой веб-интерфейс, но для полноценной работы с системой лучше устанавливать дополнительный.
    • 2.
      Exporters — это часть ПО, которая собирает и передаёт Prometheus-метрики серверу. Существуют разные экспортёры, например HAProxy, StatsD, Graphite. Они устанавливаются на целевые объекты и собирают определённые метрики. Если ни один экспортёр вам не подходит, то можно написать свой.

    Работа с Prometheus не обойдётся без дополнения Grafana — с его помощью можно визуализировать полученные данные в виде наглядных графиков, диаграмм и таблиц (dashboard). А также Alertmanager — программы для настройки уведомлений. Если на целевом объекте появятся проблемы, Alertmanager сможет отправить письмо на почту, Slack, Hipchat, Pagerduty или Telegram.

    C помощью руководства ниже вы сможете установить Prometheus на CentOS, Debian, Ubuntu. Также мы расскажем, как установить exporter и Alertmanager, чтобы можно было получать сообщения о неисправностях.

    Как установить Prometheus

    • 1

      На официальном сайте Prometheus скопируйте ссылку на установочный пакет для Linux:

      установка-prometheus

      Пример ссылки для Linux

    • 2

      Если у вас нет wget, то перед началом работы с Prometheus установите этот пакет.

      wget https://github.com/prometheus/prometheus/releases/download/v2.20.1/prometheus-2.20.1.linux-amd64.tar.gz
    • 3

      Распакуйте архив:

      tar -xvzf prometheus-2.20.1.linux-amd64.tar.gz prometheus-2.20.1.linux-amd64/
    • 4

      Скопируйте исполняемые файлы в /usr/local/bin/:

      cd prometheus-2.20.1.linux-amd64/
      cp prometheus /usr/local/bin/
      cp promtool /usr/local/bin/
    • 5

      Создайте папку для файлов конфигурации и скопируйте в неё конфиги:

      cp -r consoles/ /etc/prometheus/consoles/
      cp -r console_libraries/ /etc/prometheus/console_libraries/
      cp prometheus.yml /etc/prometheus/
    • 6

      Создайте папку для хранения данных:

      mkdir /var/lib/prometheus
    • 7

      Создайте пользователя и назначьте владельца файлов и папок:

      useradd -M -r -s /bin/nologin prometheus
      chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
    • 8

      Создайте systemd-юнит, чтобы удобнее управлять сервисом:

      vim /etc/systemd/system/prometheus.service

      Впишите в файл конфигурацию сервиса Prometheus:

      [Unit]
      
      Description=Prometheus systemd service unit
      
      Wants=network-online.target
      After=network-online.target
      [Service]
      
      Type=simple
      
      User=prometheus
      
      Group=prometheus
      ExecReload=/bin/kill -HUP $MAINPID
      ExecStart=/usr/local/bin/prometheus \
      --config.file=/etc/prometheus/prometheus.yml \
      --storage.tsdb.path=/var/lib/prometheus \
      --web.console.templates=/etc/prometheus/consoles \
      --web.console.libraries=/etc/prometheus/console_libraries \
      --web.listen-address=0.0.0.0:9090
      
      SyslogIdentifier=prometheus
      Restart=always
      [Install]
      
      WantedBy=multi-user.target

      Сохраните изменения в файле и выйдите.

    • 9

      Обновите список юнитов:

      systemctl daemon-reload
    • 10

      Запустите Prometheus:

      systemctl start prometheus.service
    • 11

      Для автоматической загрузки Prometheus введите:

      systemctl enable prometheus.service 
      
      Created symlink /etc/systemd/system/multi-user.target.wants/prometheus.service → /etc/systemd/system/prometheus.service

    Готово, теперь Prometheus доступен по адресу $IP:9090:

    установленный-prometheus

    Как установить exporter

    Чтобы Prometheus мог собирать данные с целевых объектов, установите node_exporter.

    • 1

      На официальном сайте Prometheus скопируйте ссылку для установки node_exporter:

      установка-exporter

      Пример ссылки для Linux

    • 2

      Установите пакет node_exporter:

      wget 
      
      https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
    • 3

      Распакуйте архив:

      tar -xvzf node_exporter-1.0.1.linux-amd64.tar.gz node_exporter-1.0.1.linux-amd64/
    • 4

      Скопируйте бинарный файл:

      cp node_exporter-1.0.1.linux-amd64/node_exporter /usr/local/bin/
    • 5

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

      useradd -M -r -s /bin/nologin node_exporter
    • 6

      Создайте юнит:

      vim /etc/systemd/system/node_exporter.service
    • 7

      Впишите в файл:

      [Unit]
      
      Description=Node Exporter
      
      Wants=network-online.target
      After=network-online.target
      [Service]
      
      User=node_exporter
      
      Group=node_exporter
      
      ExecStart=/usr/local/bin/node_exporter
      [Install]
      
      WantedBy=default.target

      Сохраните изменения в файле и выйдите.

    • 8

      Обновите список сервисов:

      systemctl daemon-reload
    • 9

      Включите node_exporter:

      systemctl start node_exporter.service
    • 10

      Для автоматической загрузки node_exporter введите:

      systemctl enable node_exporter.service
    • 11

      Чтобы собирались данные с экспортёра, исправьте /etc/prometheus/prometheus.yml так:

      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_localhost'
      
          static_configs:
          - targets: ['localhost:9100']

      Обратите внимание, yml-формат чувствителен к пробелам и табуляциям.

    • 12

      Перезагрузите Prometheus:

      systemctl restart prometheus.service
    • 13

      В веб-интерфейсе Prometheus зайдите в рубрику Status ― Targets. Там появится новый таргет для мониторинга:

      мониторинг-prometheus

    • 14

      Чтобы дополнительно поставить node_exporter на другую машину и добавить её в мониторинг, внесите правки в config:

      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_localhost'
      
          static_configs:
      
          - targets: ['localhost:9100']
      - job_name: 'node_exporter_clients'
      
          static_configs:
      
          - targets: ['194.12.345.6:9100']

      как-работает-мониторинг-prometheus

      Чтобы добавить несколько серверов, которые нужно мониторить вместе, введите:

      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_exporter_clients'
      
          static_configs:
      
          - targets: ['194.12.345.6:9100','localhost:9100']

      работа-мониторинга-prometheus

    Как установить Alertmanager

    Чтобы пользователю приходили оповещения о состоянии сервера, установите Alertmanager.

    • 1
      На официальном сайте Prometheus скопируйте ссылку для установки alertmanager.
    • 2

      Установите пакет alertmanager. Например, для Linux введите:

      wget 
      
      https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
    • 3

      Распакуйте архив:

      tar -xvzf alertmanager-0.21.0.linux-amd64.tar.gz
    • 4

      Создайте папку:

      mkdir /etc/alertmanager /var/lib/prometheus/alertmanager
    • 5

      Скопируйте бинарный файл и config в нужные папки:

      cd alertmanager-*linux-amd64/
      
      cp amtool alertmanager /usr/local/bin/
      
      cp alertmanager.yml /etc/alertmanager
    • 6
      useradd -M -r -s /bin/nologin alertmanager
    • 7

      Исправьте владельца на config и директорию с данными:

      chown -R alertmanager:alertmanager /etc/alertmanager /var/lib/prometheus/alertmanager
    • 8

      Создайте systemd-юнит:

      vim /etc/systemd/system/alertmanager.service
    • 9

      Впишите в файл:

      [Unit]
      
      Description=Alertmanager Service
      
      After=network.target
      [Service]
      
      User=alertmanager
      
      Group=alertmanager
      
      Type=simple
      ExecStart=/usr/local/bin/alertmanager \
               --config.file=/etc/alertmanager/alertmanager.yml \
               --storage.path=/var/lib/prometheus/alertmanager \
               --cluster.advertise-address=127.0.0.1:9093
      ExecReload=/bin/kill -HUP $MAINPID
      Restart=on-failure
      [Install]
      
      WantedBy=multi-user.target

      Сохраните изменения в файле и выйдите.

    • 10

      Обновите список юнитов:

      systemctl daemon-reload
    • 11

      Запустите Alertmanager:

      systemctl start alertmanager
    • 12

      Настройте автозагрузку Alertmanager:

      systemctl enable alertmanager
    • 13

      Создайте правило для мониторинга, при котором система будет считать, что виртуальный сервер работает неправильно.

      vim /etc/prometheus/alert.rules.yml

      Содержимое файла:

      groups:
      
      - name: alert.rules
      
        rules:
        - alert: InstanceDown
          expr: up == 0
          for: 30s
          labels:
            severity: critical
          annotations:
            description: '{{ $labels.instance }} of job {{ $labels.job }} has been down
              for more than 30 seconds. '
            summary: Instance {{ $labels.instance }} down
    • 14

      Поместите правило в config Prometheus и Alertmanager:

      rule_files:
      
        - 'alert.rules.yml'
      # Alertmanager configuration
      
      alerting:
      
        alertmanagers:
        - static_configs:
          - targets:
            - 'localhost:9093'
    • 15

      Перезапустите Prometheus:

      systemctl restart prometheus.service

    Готово, вы установили Alertmanager. Его можно увидеть по адресу http://$IP:9090/alerts.

    Как настроить уведомления на почту

    Настроим уведомления на Яндекс.Почту через Alertmanager.

    • 1

      Введите:

      vim /etc/alertmanager/alertmanager.yml

      Содержимое файла должно выглядеть так:

      global:
      
        resolve_timeout: 5m
      
        smtp_from: "test@yandex.ru"
      route:
      
        group_by: ['alertname']
      
        group_wait: 10s
      
        group_interval: 10s
        repeat_interval: 1h
        receiver: 'web.hook'
      routes:
      
          - receiver: 'send_email'
      receivers:
      
      - name: 'web.hook'
      
        webhook_configs:
        - url: 'http://127.0.0.1:5001/'
      - name: 'send_email'
      
        email_configs:
        - to: 'test@yandex.ru'
          smarthost: 'smtp.yandex.ru:587'
          require_tls: true
          auth_username: "test@yandex.ru"
          auth_identity: "test@yandex.ru"
          auth_password: "password"
      inhibit_rules:
      
        - source_match:
      
            severity: 'critical'
          target_match:
            severity: 'warning'
          equal: ['alertname', 'dev', 'instance']

    Готово, если всё сделано правильно, то на почту будет отправлено проверочное письмо.

    Помогла ли вам статья?

    Спасибо за оценку. Рады помочь 😊

     👍
    Специальные предложения
    • Бесплатный хостинг для сайта
    • Дешевый хостинг
    • Бесплатный VPS-сервер
    • Дешёвые VPS
    Рассылка Рег.ру

    Лайфхаки, скидки и новости об IT

    Даю согласие на получение рекламных и информационных материалов

    Домены и сайты
    • Домены
    • Хостинг
    • Создание сайтов
    • SSL-сертификаты
    • VPS и VDS серверы
    • Whois
    • Магазин доменов
    Облако
    и IT-инфраструктура
    • Облачные серверы
    • Частное облако
    • Облачное хранилище
    • Kubernetes в облаке (K8S)
    • Облачные базы данных
    • Выделенные серверы
    Полезное
    • Стоимость услуг
    • Cпособы оплаты
    • База знаний
    • Документы
    • ЭДО
    • Партнерам
    • Сообщить о нарушении
    • РБК: новости России и мира сегодня
    • Новости компаний РФ
    • РБК Инвестиции: курсы валют
    Компания
    • О компании
    • Контакты
    • Офисы
    • Новости
    • Акции и скидки
    • Блог
    • Отзывы клиентов
    8 800 555-34-78 Бесплатный звонок по России
    +7 495 580-11-11 Телефон в Москве
    • vk
    • telegram
    • ok
    • moikrug
    • youtube
    • twitter
    • Облачная платформа Рег.ру включена в реестр российского ПО Запись №23682 от 29.08.2024
    • © ООО «РЕГ.РУ»
    • Политика конфиденциальности
      Политика обработки персональных данных
      Правила применения рекомендательных технологий
      Правила пользования
      и другие правила и политики
    • Нашли опечатку?
      Выделите и нажмите Ctrl+Enter
    • Мы используем cookie и рекомендательные технологии для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера