# В данном личном гайде на гите я рассмотрю установку трёх сервисов (Prometheus, Grafana, node_exporter) и уведомлений в ТГ боте на сервере # В данном гайде все работы будут производиться на ОС Debian 13 и VPS и ресурсах = 1/2/30 ## Prometheus - мощная система сбора и хранения метрик ## Для сбора метрик об оппаратном обеспечении используется и операционой системы серверов используется node_exporter ## Grafana - инструмент для виртуализации. Она подключается к Prometheus и позволяет создавать интерактивные дашборды ### Для начала работы подготовим среду и необходимое ПО. Развёртка будет происходить при помощи докера apt update && apt upgrade -y curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh apt install git Далее выполняем команду ``` git clone https://github.com/prometheus/prometheus.git ``` Это скопирует все необходимые файлы для развёртки "Прометея", после того, как процесс завершиться введите следующую команду ``` docker run --name prometheus -d -p ip_address_of_your_sever:9090:9090 prom/prometheus ``` После этого переходим в браузере http://ip_address_of_your_sever:9090 и оказываемся на главной странице "Прометея" Затем мы идём по пути `./prometheus/documentation/examples/prometheus.yml` (само собой, что через nano, ну или vim) Оказавшись в конфигурационном файле мы вставляем туда следующий код **не забыв поменять localhost, на реальный IP** ``` # A scrape configuration containing exactly one endpoint to scrape from Node exporter running on a host: scrape_configs: # The job name is added as a label `job=` to any timeseries scraped from this config. - job_name: 'node' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9100'] ``` После этого перезапустим контейнер `docker restart ID_ВАШЕГО_КОНТЕЙНЕРА` ## Теперь приступим к установке Grafana Качаем пакет Grafana с файлового зеркала Tencent (т.к. заблокирована установка с IP-адрессов РФ) Плюс установим необходимые дополнительные пакеты и создадим нунжные зависимости ``` wget https://mirrors.cloud.tencent.com/grafana/apt/pool/main/g/grafana/grafana_12.0.3_amd64.deb apt install adduser libfontconfig1 musl -y dpkg -i grafana_12.0.3_amd64.deb ``` Так-же на всякий случай ручками запустим графану, добавим её в автозагрузку, и проверим её статус ``` sudo systemctl start grafana-server sudo systemctl enable grafana-server sudo systemctl status grafana-server ``` После этого Ваша Grafana должна быть доступна по `http://ip_address_of_your_sever:3000` По-умолчанию пароль и логин admin + admin, но програма, после первой авторизации предложит нам их поменять После входа в панель идём по пути + Connections + Data Sources + Add Data source После этого добавляем новое подключение, выбирая само-собой, Prometheus Указываем его url и спускаемся в самый низ, нажимая save & test Если всё прошло успешно, то идём на вкладку **Dashboards** # Создание доски В Grafana можно использовать разнообразные доски для отображения метрик. На официальном сайте Grafana есть [небольшое руководство](https://grafana.com/docs/grafana/latest/getting-started/build-first-dashboard/), рассматривающее создание собственной доски. В своём-же случае я воспользуюсь уже готовой доской с оффициального сайта Grafana, которая собирает достаточно стандартные данные системы мониторинга. Чтобы автоматически добавить таблицу нужно: + Открыть страницу dashboard + Нажать кнопку new + Из выпадающего списка выбрать New Dashboard + Нажать кнопку import dashboard + Ввести идентификатор доски, который указан на сайте. В моём случае 3662 + Нажать на кнопку Load После этого нас перебросит на наш новый дашбоард, который можно конфигурить полностью по своему усмотрению ## Настройка экспортера node_exporter ``` apt install prometheus-node-exporter systemctl start prometheus-node-exporter ``` Проверим статус запущенной службы `systemctl start prometheus-node-exporter` Так-же можно перейти на **http://ip_address_of_your_sever:9090/metrics** с целью прверить работоспособность службы # Подключем node_exporter к Prometheus Прометю нужно явно указать откуда собирать метрики, поэтому идём по старому доброму пути `./prometheus/documentation/examples/prometheus.yml` И вставляем туда ``` - job_name: 'prometheus_node_exporter' scrape_interval: 5s static_configs: - targets: ['localhost:9100'] # указываем адрес сервера и порт, на котором запущена служба Node_exporter ``` Тут нужно быть очень аккуратными к форматированию, т.к. даже один лишний пробел или отступ будет приводить к ошибке По классике перезапустим Docker контрейнер `docker restart ID_ВАШЕГО_КОНТЕЙНЕРА`