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.
- Заключение