Sland
ПротNв те4ениR
- Регистрация
- 15 Дек 2006
- Сообщения
- 199
- Реакции
- 162
- Автор темы
- #1
Этот гайд поможет настроить систему мониторинга серверов с использованием Grafana, Prometheus и Node Exporter для сбора и отображения метрик, а также отправки уведомлений в Telegram в случае падения серверов. В гайде используется Ubuntu 22.04.
- Установка и настройка Node Exporter на отслеживаемом сервере.
Node Exporter собирает системные метрики, такие как использование ЦП, памяти, диск и сеть, и передаёт их Prometheus для мониторинга.
Скачиваем Node Exporter на отслеживаемый сервер:
Распаковываем архив:
Удаляем архив:
Перемещаем папку:
Делаем бинарник исполняемым:
Перемещаем бинарник в /usr/bin для удобного запуска:
Удаляем временную папку:
Создаём systemd-сервис для автоматического запуска Node Exporter:
Запускаем сервис и включаем его на автозапуск, команды вводим отдельно!!
Открываем порт 9100:
А еще лучше открывать 9100 не для всех подряд, а только для того айпишника, на котором сервер стоит Grafana и Prometheus:
Вместо 192.168.1.100 ваш айпи сервера на котором будет стоять статистика
Скачиваем Node Exporter на отслеживаемый сервер:
Код:
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
Код:
tar xvf node_exporter-1.8.2.linux-amd64.tar.gz
Код:
rm node_exporter-1.8.2.linux-amd64.tar.gz
Код:
sudo mv node_exporter-1.8.2.linux-amd64 node_exporter
Код:
chmod +x node_exporter/node_exporter
Код:
sudo mv node_exporter/node_exporter /usr/bin/
Код:
rm -Rvf node_exporter/
Код:
sudo tee /etc/systemd/system/exporterd.service > /dev/null <<EOF
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=root
ExecStart=/usr/bin/node_exporter
[Install]
WantedBy=multi-user.target
EOF
Код:
sudo systemctl daemon-reload
Код:
sudo systemctl enable exporterd.service
Код:
sudo systemctl start exporterd.service
Код:
sudo ufw allow 9100
Код:
sudo ufw allow from 192.168.1.100 to any port 9100
- Установка и настройка Prometheus и Grafana на сервере для сбора метрик.
- Установка Prometheus
Скачиваем Prometheus на сервер где будет статистика либо на том же самом сервере:
Распаковываем архив:
tar xvf prometheus-2.54.1.linux-amd64.tar.gz
Удаляем архив:
Перемещаем папку:
Открываем конфиг нашего Prometheus для настройки:
На место красной стрелки вписываем ip на который мы устанавливали node_exporter
ВАЖНО! Все, блин, таргеты — в одинарных кавычках через запятую с пробелом!
Пример: - targets: [‘localhost:9090’, ‘айпи-вашего-сервера:9100’]
Далее выдаем права на исполнение нашего файла:
Создаем сервисный файл, КОПИРУЕТЕ ВСЁ ЦЕЛИКОМ!
После чего запускаем сервис:
Код:
wget https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz
tar xvf prometheus-2.54.1.linux-amd64.tar.gz
Удаляем архив:
Код:
rm prometheus-2.54.1.linux-amd64.tar.gz
Код:
sudo mv prometheus-2.54.1.linux-amd64 prometheus
Код:
vim /root/prometheus/prometheus.yml
На место красной стрелки вписываем ip на который мы устанавливали node_exporter
ВАЖНО! Все, блин, таргеты — в одинарных кавычках через запятую с пробелом!
Пример: - targets: [‘localhost:9090’, ‘айпи-вашего-сервера:9100’]
Далее выдаем права на исполнение нашего файла:
Код:
chmod +x /root/prometheus/prometheus.yml
Код:
sudo tee /etc/systemd/system/prometheusd.service > /dev/null <<EOF
[Unit]
Description=prometheus
After=network-online.target
[Service]
User=root
ExecStart=/root/prometheus/prometheus --config.file="/root/prometheus/prometheus.yml"
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
Код:
sudo systemctl daemon-reload && sudo systemctl enable prometheusd && sudo systemctl restart prometheusd
- Установка и настройка Grafana.
Если у вас RU сервер то перейдите к следующему пункту.
Установите необходимые пакеты:
Импортируйте ключ GPG, копируйте по одному!!!:
Добавим репозиторий для стабильных выпусков:
Выполните следующую команду, чтобы обновить список доступных пакетов:
Чтобы установить операционную систему Grafana, выполните следующую команду:
Чтобы запустить службу, выполните следующую команду:
Откройте порт 3000 для доступа к Grafana:
Установите необходимые пакеты:
Код:
sudo apt-get install -y apt-transport-https software-properties-common wget
Код:
sudo mkdir -p /etc/apt/keyrings/
Код:
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
Код:
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Код:
sudo apt-get update
Код:
sudo apt-get install grafana
Код:
sudo systemctl daemon-reload && sudo systemctl start grafana-server && sudo systemctl enable grafana-server
Код:
sudo ufw allow 3000
- Установка Grafana на RU сервер.
Скачайте пакет напрямую на сервер:
Установка зависимостей:
Установите скачанный .deb пакет с помощью dpkg:
Если в процессе установки возникают ошибки зависимостей, исправьте их командой:
После установки запустите сервис Grafana и настройте его автозапуск при загрузке системы:
Убедитесь, что Grafana работает корректно:
Код:
wget https://dl.grafana.com/oss/release/grafana_11.4.0_amd64.deb
Код:
sudo apt-get update
sudo apt-get install -y adduser libfontconfig
Код:
sudo dpkg -i grafana_11.4.0_amd64.deb
Код:
sudo apt-get install -f
Код:
sudo systemctl start grafana-server
Код:
sudo systemctl enable grafana-server
Код:
sudo systemctl status grafana-server
- Добавление Prometheus как источника данных в Grafana
Переходим в браузере на своём домашнем устройстве по адресу: Для просмотра ссылки Войди или Зарегистрируйся, где IP - адрес сервера, на который мы установили Prometheus и Grafana. Если не заходит то добавляем в файрволл порт 3000: ufw allow 3000 Логин и пароль: admin/admin Далее задаем свой пароль и попадаем в Dashboard.
Нажимаем на кнопку Data Sources
Выбираем Prometheus
В графе URL вводим Для просмотра ссылки Войдиили Зарегистрируйся , где IP - адрес сервера на котором стоит Prometheus и Grafana. После чего нажимаем внизу на Save & test
Нажимаем на кнопку Data Sources
Выбираем Prometheus
В графе URL вводим Для просмотра ссылки Войди
- Импорт дашборда для мониторинга серверов
Скопируйте ссылку на дашборд Node Exporter.
В Grafana перейдите в Dashboards, затем нажмите Create dashboard.
После чего выберите Import dashboard
Вставьте ссылку и нажмите Load
Выберите источник данных Prometheus из выпадающего списка и нажмите Import. При желании можете изменить название на другое
У вас откроется статистика. В разделе Hosts можете выбирать сервера, на которые вы установили Node_exporter. Сверху справа углу можете изменять данные: время, за которое отобразится статистика, ручное обновление статистики и изменить время обновления статистики. И всё, вы можете смотреть статистику сервера при переходе на Для просмотра ссылки Войдиили Зарегистрируйся
Код:
https://grafana.com/grafana/dashboards/1860-node-exporter-full/
После чего выберите Import dashboard
Вставьте ссылку и нажмите Load
Выберите источник данных Prometheus из выпадающего списка и нажмите Import. При желании можете изменить название на другое
У вас откроется статистика. В разделе Hosts можете выбирать сервера, на которые вы установили Node_exporter. Сверху справа углу можете изменять данные: время, за которое отобразится статистика, ручное обновление статистики и изменить время обновления статистики. И всё, вы можете смотреть статистику сервера при переходе на Для просмотра ссылки Войди
- Настройка уведомлений в Telegram об падении сервера и когда он восстановился
Для того чтобы получать уведомления о падении серверов, необходимо настроить Telegram в Grafana.
В Grafana перейдите в раздел Contact points и создайте новый контакт:
Выберите Telegram
В поле Token введите токен вашего бота (его можно получить у Для просмотра ссылки Войдиили Зарегистрируйся).
В поле Chat ID введите свой ID Telegram (узнать его можно через Для просмотра ссылки Войдиили Зарегистрируйся)
После нажимаете Save contact point
Дальше, после создания бота для уведомления, переходим в Notification Templates и создаём новый шаблон, чтобы отправлялись сообщения типа «Ваш сервер IP упал!!!», а не длинный текст со всякими ссылками на ваш Grafana.
Вставьте следующий код в Template:
Дальше нажимаем на «Save» сверху справа в углу.
В Grafana перейдите в раздел Contact points и создайте новый контакт:
Выберите Telegram
В поле Token введите токен вашего бота (его можно получить у Для просмотра ссылки Войди
В поле Chat ID введите свой ID Telegram (узнать его можно через Для просмотра ссылки Войди
После нажимаете Save contact point
Дальше, после создания бота для уведомления, переходим в Notification Templates и создаём новый шаблон, чтобы отправлялись сообщения типа «Ваш сервер IP упал!!!», а не длинный текст со всякими ссылками на ваш Grafana.
Вставьте следующий код в Template:
Код:
{{- define "telegram.message_alert" -}}
🚨 <strong>{{ .Labels.alertname }}</strong> 🚨
{{- if eq .Status "firing" }}
Сервер {{ .Labels.instance }} упал!!! 😱{{- else if eq .Status "resolved" }}
Сервер {{ .Labels.instance }} восстановлен! ✅
{{- end }}
{{- end -}}
{{ define "telegram" }}
{{ if .Alerts.Firing -}}
{{- range .Alerts.Firing }}
{{ template "telegram.message_alert" . }}
{{- end }}
{{- end }}
{{ if .Alerts.Resolved -}}
{{- range .Alerts.Resolved }}
{{ template "telegram.message_alert" . }}
{{- end }}
{{- end }}
{{ end }}
- Создание правила алертинга для уведомлений в Telegram.
Перейдите в Alert rules и создайте новое правило. И сделайте как на Изображениях:
Вот тут создайте папки, во второй подгруппе поставьте время, через которое будут проверяться правила, другим словом, исполняться каждые N секунд/минут/часов. В Pending period ставьте None чтобы сразу отправлялось сообщение в Telegram.
В 4 пункте в Contact Point выберите вашего Telegram-бота.
Дальше сохраняйте правило через кнопку сверху справа в углу Save rule and exit.
Вот тут создайте папки, во второй подгруппе поставьте время, через которое будут проверяться правила, другим словом, исполняться каждые N секунд/минут/часов. В Pending period ставьте None чтобы сразу отправлялось сообщение в Telegram.
В 4 пункте в Contact Point выберите вашего Telegram-бота.
Дальше сохраняйте правило через кнопку сверху справа в углу Save rule and exit.
- Заключение