[Настройка Linux, Системное администрирование, Виртуализация] Мониторинг Virtuozzo Hybrid Server с помощь Prometheus

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
01-Июн-2021 16:34

Пользователи продуктов Virtuozzo и OpenVZ обычно работают с множеством развернутых машин под управлением нашего ПО. Поэтому для них логично запустить централизованный мониторинг всего парка таких серверов. И сегодня мы расскажем о том, как использовать для этого встроенные сервисы мониторинга Virtuozzo Hybrid Infrastructure на основе Prometheus.
Схожие сервисы доступны и в VHS, но только если вы используете графические интерфейс для управления кластером Virtuozzo Storage. Если же у вас нет кластера Storage, или вы не используете GUI для его администрирования (либо работаете с OpenVZ, где подключение Virtuozzo Storage является возможным, но редко встречающимся сценарием), то для мониторинга приходится обращаться к сторонним решениям.Анализ предпочтений пользователей (публично доступный для OpenVZ здесь) показывает следующее: как и для мониторинга серверов с Linux и основанных на нем решениями, для продуктов Virtuozzo популярны Zabbix и Prometheus.Мы поговорим сегодня про Prometheus – более молодой, но активно набирающий популярность инструментарий.Непосредственно Prometheus занимается сбором данных от подвластных ему экспортеров - в репозиториях VHS доступны node_exporter (для сбора общих характеристик сервера, таких как использование ресурсов и состояние дисков) и libvirt_exporter (для сбора информации о виртуальных машинах, управляемых libvirt). Экспортеры основаны на соответствующих стандартных проектах, но содержат ряд специфичных для Virtuozzo изменений.Для удобного изучения собираемой информации, в связке с Prometheus обычно устанавливается инструментарий визуализации данных Grafana, а для возможности получения оповещений о требующих внимания администратора событиях – Alertmanager.Готовим плацдармPrometheus, Grafana и Alertmanager можно развернуть на отдельной машине, не обязательно физической. Раз уж мы говорим о Virtuozzo Hybrid Server, то логично развернуть их внутри контейнера на одной из машин VHS. Например, внутри контейнера с Virtuozzo Linux 8; для функционирования вполне достаточно двух ядер ЦПУ и пары гигабайт памяти:
# prlctl create promct --vmtype=ct --ostemplate=vzlinux-8-x86_64
# prlctl set promct --cpu 2
# prlctl set promct --memsize 2G
Не забудьте выставить необходимый IP адрес и доменное имя, по которым будет доступен ваш контейнер.Внутри контейнера не помешает выставить правильный часовой пояс:# timedatectl set-timezone 'Europe/Moscow' А также настроить firewall – порт 9090 для веб-интерфейса Prometheus, 9093 для AlertManager и 3000 для Grafana. Обратите внимание, что веб Prometheus и Alertmanager доступны без пароля, так что выставляйте их только в ваши внутренние сети.
# firewall-cmd --zone=public --permanent --add-port=9090/tcp
# firewall-cmd --zone=public --permanent --add-port=9093/tcp
# firewall-cmd --zone=public --permanent --add-port=3000/tcp
# firewall-cmd --reload
Устанавливаем Prometheus & co.Prometheus входит в репозитории многих дистрибутивов, в том числе и Virtuozzo Linux 8, поэтому можно его установить штатными средствами:# yum install prometheusЕсли вас не устраивает версия из дистрибутива (например, хочется самую свежую, либо наоборот - свежая имеет какие-то раздражающие вас проблемы), то можно просто скачать бинарные файлы с GitHub и положить их в директорию /opt (или в другую на ваш выбор). Например, для версии 2.21.0:
# cd /opt
# wget https://github.com/prometheus/prometheus/releases/download/v2.21.0/prometheus-2.21.0.linux-amd64.tar.gz
# tar -xzf prometheus*.tar.gz
Единственный нюанс при ручной установке - не забыть создать (либо скорректировать) service-файл для systemd, чтобы там были правильные пути: 
# cat /lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/prometheus-2.21.0.linux-amd64
Restart=on-failure
ExecStart=/opt/prometheus-2.21.0.linux-amd64/prometheus
[Install]
WantedBy=multi-user.target
Аналогично с Alertmanager - можно установить из репозиториев:# yum install alertmanager ... А можно и с сайта, точно также не забыв service-файл:
# wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
# cd /opt
# tar -xzf alertmanager*.tar.gz
# cat /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=Alertmanager
Wants=network-online.target
After=network-online.target
After=prometheus.service
[Service]
Type=simple
WorkingDirectory=/root/alertmanager-0.21.0.linux-amd64
Restart=on-failure
ExecStart=/root/alertmanager-0.21.0.linux-amd64/alertmanager --config.file=alertmanager.yml
[Install]
WantedBy=multi-user.target
Grafana сразу предоставляет собранные rpm-пакеты, так что можно, опять же, поставить либо из дистрибутива:# yum install grafana либо с сайта проекта: # yum install https://dl.grafana.com/oss/release/grafana-7.1.5-1.x86_64.rpm Подготавливаем машины с Virtuozzo Hybrid Server На каждом сервере VHS, который предполагается мониторить, необходимо установить пакеты с экспортерами: # yum install node_exporter libvirt_exporterЧтобы экспортеры могли отдавать данные в Prometheus, необходимо открыть соответствующие порты - 9177 для libvirt_exporter и 9100 для node_exporter. Доступ к ним желательно ограничить адресом машины с Prometheus, чтобы посторонние люди не делали попыток снять метрики с ваших серверов:
# firewall-cmd --permanent --zone=public --add-rich-rule='
    rule family="ipv4"
    source address="1.2.3.4/32"
    port protocol="tcp" port="9177" accept'
# firewall-cmd --permanent --zone=public --add-rich-rule='
    rule family="ipv4"
    source address="1.2.3.4/32"
    port protocol="tcp" port="9100" accept'
# firewall-cmd --reload
Здесь "1.2.3.4" необходимо поменять на реальный адрес Prometheus.Наконец, смело включаем и запускаем сервисы экспортеров:
# systemctl enable node_exporter
# systemctl enable libvirt-exporter
# systemctl start node_exporter
# systemctl start libvirt-exporter
Дело за малым - надо сообщить Прометею, откуда ему собирать информацию.Настройка PrometheusКонфигурация самого Prometheus содержится в наборе Yaml-файлов. Писать их с нуля, даже с помощью примеров из документации — то еще развлечение. Именно этот процесс и решили улучшить в Virtuozzo, положив в репозитории VHS 7 пакет vz-prometheus-cfg с шаблонами файлов конфигурации. Его можно установить на любой машине VHS 7, а если вы развернули Prometheus внутри VzLinux 8 — то можно его поставить прямо на сервере из репозиториев этого дистрибутива:# yum install vz-prometheus-cfgПосле чего изучать директорию /usr/share/vz-prometheus-cfg/, начав с файла prometheus-example.yml.Этот файл необходимо отредактировать под ваши нужды и под именем prometheus.yml сохранить в машину или контейнер, где у вас расположен Prometheus. Главное, что там необходимо изменить – это местоположение файлов *rules.yml и *alerts.yml, которые также можно скопировать из директории /usr/share/vz-prometheus-cfg/ на сервер Prometheus. Можно их изучить и даже отредактировать, однако они вполне работоспособны и в исходном варианте.В первую очередь здесь интересны vz-rules, содержащие правила сбора информации о потреблении ресурсов (диска, процессора, памяти и сети) виртуальными окружениями и предупреждения о проблемах с ресурсами (останов ВМ из-за ошибки диска, исчерпание диска на сервере и тому подобное).Непосредственно машины, с которых надо собирать информацию, указываются в target-файлах. В первом приближении достаточно одного такого файла со списком машин для каждого экспортера (напомним, node_exporter отдает информацию на порту 9100, а libvirt - 9177):
# cat my-vz-libvirt.yml
- labels:
    group: my-vz-deployment
  targets:
  - my.node1:9177
  - my.node2:9177
 
# cat my-vz-node.yml
- labels:
    group: my-vz-deployment
  targets:
  - my.node1:9100
  - my.node2:9100
 
Пути к этим файлам необходимо указать в соответствующих разделах секции scrape_configs в prometheus.yml:
scrape_configs:
  ...
  - job_name: node
    ...
    file_sd_configs:
      - files:
        - /root/prometheus-2.21.0.linux-amd64/targets/my-vz-node.yml
  - job_name: libvirt
    ...
    file_sd_configs:
      - files:
        - /root/prometheus-2.21.0.linux-amd64/targets/my-vz-libvirt.yml
 
Пример полного файла конфигурации можно посмотреть в документации: https://docs.virtuozzo.com/virtuozzo_hybrid_server_7_users_guide/advanced-tasks/monitoring-via-prometheus.html. Обратите внимание, что важными параметрами являются job_name — на них идет отсылка в файлах с правилами и алертами. Так что если задумаете менять эти имена — не забудьте пройтись и по другим файлами конфигурации и провести соответствующие замены.Как только все необходимые файлы отредактированы - пора стартовать сервисы:
# systemctl start prometheus
# systemctl start alertmanager
# systemctl start grafana-server
После чего продолжать уже с настройкой двух других инструментовGrafana и AlertmanagerКонфигурация Grafana осуществляется через ее веб-интерфейс по адресу http://<ваш-сервер>:3000. Логин-пароль по умолчанию - "admin" / "admin".Настройка достаточно проста и стандартна - сначала необходимо указать "Prometheus" как источник данных, пройдя в Configuration -> Data Sources -> "Add data source", выбрав  "Prometheus" и указав http://localhost:9090 в качестве его адреса.Далее можно импортировать готовые json-файлы, опять же поставляемые с пакетов vz-prometheus-cfg - grafana_hn_dashboard.json и grafana_ve_dashboard.json - служащие соответственно для отображения информации о серверах и о виртуальных окружениях. Импорт осуществляется в меню "Dashboards" -> "Manage" -> "Import", в качестве источника данных необходимо добавить настроенный ранее Prometheus.И, вуаля, – к этому моменту Prometheus уже вполне мог получить какие-то данные с ваших машин, так что можно практически сразу изучать графики.
Наконец, настройка оповещений Alertmanager – тут все на ваше усмотрение, готовых рецептов а-ля “отправить отчет в саппорт Virtuozzo” не предусмотрено. Так что можно, например, просто настроить типичные оповещения по email в /etc/alertmanager/alertmanager.yaml:
route:    receiver: 'email'
  group_by: ['alertname', 'cluster']    group_wait: 30s    group_interval: 5m    repeat_interval: 3h   receivers:  - name: 'email'    email_configs:    - to: 'admin@myserver.com'      from: 'vz-alert@myserver.com'      smarthost: smtp.myserver.com:587
Всего алертов «из коробки» предусмотрено почти три десятка — полный перечень доступен в документации.
Надеемся, обилие и нетривиальность параметров не отпугнет вас от использования Prometheus. Тем более что настроить его достаточно один раз, а шаблоны от Virtuozzo должны в этом неплохо помочь. В результате вы получаете красивую, удобную и функциональную систему мониторинга, без которой современному системному администратору будет намного сложнее работать.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_nastrojka_linux (Настройка Linux), #_sistemnoe_administrirovanie (Системное администрирование), #_virtualizatsija (Виртуализация), #_virtuozzo, #_virtualization, #_prometheus, #_nastrojka (настройка), #_blog_kompanii_virtuozzo (
Блог компании Virtuozzo
)
, #_nastrojka_linux (
Настройка Linux
)
, #_sistemnoe_administrirovanie (
Системное администрирование
)
, #_virtualizatsija (
Виртуализация
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 16-Май 09:53
Часовой пояс: UTC + 5