Personal/linux/Prometheus, Grafana, node_e...

6.8 KiB
Raw Blame History

В данном личном гайде на гите я рассмотрю установку трёх сервисов (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=<job_name>` 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 есть небольшое руководство, рассматривающее создание собственной доски.
В своём-же случае я воспользуюсь уже готовой доской с оффициального сайта 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_ВАШЕГО_КОНТЕЙНЕРА