Grafana /// v1.0
В этой статье мы будем добавлять в дашборд графаны свои сервера с нодами, что позволит нам отслеживать нагрузку на железо и вообще красиво так выглядит, как будто хацкер кокой-то.
Если вы не знаете, что такое нода — читаем статью.
Если вы не знаете, где арендовать сервер для ноды — читаем статью.
Если вы не знаете, как подключиться к серверу — читаем статью.
Если вы всё знаете — открываем MobaXterm и создаём сессию.
- А зачем?
- Установка
- Установка node-exporter на сервер с нодой
- Установка prometheus на сервер-обработчик
- Установка grafana на сервер-обработчик
- Импортируем лучший в мире дашборд
- Благодарности
- Полезные ресурсы на каждый день
Grafana - это платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных.
Grafana позволяет пользователям создавать дашборды с панелями, каждая из которых отображает определенные показатели.
С помощью графаны можно творить действительно волшебные вещи.
Например, разум (человек, отвечающий за ноды в команде DoubleTop), сделал для своего коммьюнити общий дашборд.
С помощью этого дашборда, можно отслеживать полную информацию о сервере не только со стороны железа (нагрузка CPU, RAM и т.п.), но так же и инфу о последнем обработанном блоке вашей ноды.
Другими словами, можно в режиме реального времени заметить, что сервер нагружен, но вот нода по какой-то причине отстала от сети, даже не включая сервер, а наблюдая красивые графики в браузере. Выглядит примерно так:
По истине волшебная вещь, но за таким дашбордом - добро пожаловать в 2Top.
В данной статье я просто не могу объяснить, как добавить мониторинг на таком уровне - я не знаю язык запросов.
Сейчас мы будем настраивать мониторинг серверов на самом простом уровне: нагрузка проца, память, сеть и т.п.
Это пригодится как минимум тогда, когда вы решаете: а к какому серверу мне подселить очередную ноду? На помощь придут графики и статистика на дистанции, а не в моменте. Это позволит сделать правильный выбор.
Или вы можете заметить, что тестнет с каждым днём пожирает всё больше и больше места на диске и заблаговременно докупить дисковое пространство.
Я надеюсь. Во всяком случае, мы попробуем.
- На сервер с нодой установить node-exporter - ПО, которое собирает и экспортирует метрики и статистику о работе железа.
- Арендовать отдельный сервер (1 Core x 1 GB RAM) под ноду-обработчик и установить на новый сервер Prometheus и Grafana.
Prometheus подтягивает и аккумулирует данные из node-exporter, а Grafana их визуализирует.
Открываем сессию с сервером, где установлена какая-нибудь нода, откуда вы хотите получать данные в дашборд и устанавливаем на этот сервер ПО:
# обновляем 'базу данных' sudo apt-get update && sudo apt-get upgrade -y
# скачиваем 'node_exporter' и наводим порядок одной командой cd $HOME && \ wget https://github.com/prometheus/node_exporter/releases/download/v1.2.0/node_exporter-1.2.0.linux-amd64.tar.gz && \ tar xvf node_exporter-1.2.0.linux-amd64.tar.gz && \ rm node_exporter-1.2.0.linux-amd64.tar.gz && \ sudo mv node_exporter-1.2.0.linux-amd64 node_exporter && \ chmod +x $HOME/node_exporter/node_exporter && \ mv $HOME/node_exporter/node_exporter /usr/bin && \ rm -Rvf $HOME/node_exporter/
# создаём файл сервиса 'exporterd' sudo tee /etc/systemd/system/exporterd.service > /dev/null <<EOF [Unit] Description=node_exporter After=network-online.target [Service] User=$USER ExecStart=/usr/bin/node_exporter Restart=always RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
# запускаем сервис 'exporterd' одной командой sudo systemctl daemon-reload && \ sudo systemctl enable exporterd && \ sudo systemctl restart exporterd
# проверяем логи sudo journalctl -u exporterd -f
В выводе терминала вы увидите нечто подобное:
Теперь переходим в браузере на своём домашнем устройстве по адресу: http://<server_IP>:9100/, где <server_IP> - IP сервера, на котором установлен node_exporter.
Отобразится Node Exporter. Нажимаем Metrics:
Здесь мы увидим десять тысяч метрик, которые будут отправляться на ноду-обработчик и в дальнейшем отображаться в графане. Отлично.
Нам потребуется сервер, куда будут отправляться данные для обработки и визуализации со всех наших серверов с нодами.
Я возьму сервер с 1 CPU, 1 GB RAM и 20 GB памяти на борту. Если этого окажется мало, то в будущем я обновлю требования.
Открываем сессию с нашим новым сервером (нода-обработчик) и устанавливаем необходимое ПО:
# обновляем 'базу данных' sudo apt-get update && sudo apt-get upgrade -y
# устанавливаем 'prometheus' одной командой wget https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz && \ tar xvf prometheus-2.28.1.linux-amd64.tar.gz && \ rm prometheus-2.28.1.linux-amd64.tar.gz && \ mv prometheus-2.28.1.linux-amd64 prometheus
# открываем конфиг прометеуса для настройки nano $HOME/prometheus/prometheus.yml
В графу tagrets нам нужно после запятой добавить IP-адрес нашего сервера с нодой, откуда экспортируется статистика.
В будущем их можно будет добавить бесконечно много, но сейчас ограничимся одним сервером.
Сохраняем изменения и создаём сервис.
# выдаём права на исполнение chmod +x $HOME/prometheus/prometheus
# создаём файл сервиса 'prometheusd' sudo tee /etc/systemd/system/prometheusd.service > /dev/null <<EOF [Unit] Description=prometheus After=network-online.target [Service] User=$USER ExecStart=$HOME/prometheus/prometheus \ --config.file="$HOME/prometheus/prometheus.yml" Restart=always RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
# запускаем сервис 'prometheusd' одной командой sudo systemctl daemon-reload && \ sudo systemctl enable prometheusd && \ sudo systemctl restart prometheusd
# проверяем логи sudo journalctl -u prometheusd -f
Переходим в браузере на своём домашнем устройстве по адресу: http://<server_IP>:9090/, где <server_IP> - IP сервера, на котором установлен prometheus.
Прометеус показывает 2 цели: первая - сервер, где мы устанавливали node_exporter, 2 - сам прометеус (localhost). Отлично.
Теперь на этот же сервер с прометеусом мы устанавливаем графану, чтобы как-то визуализировать всю собирающуюся статистику.
# устанавливаем графану одной командой sudo apt-get install -y adduser libfontconfig1 && \ wget https://dl.grafana.com/oss/release/grafana_8.0.6_amd64.deb && \ sudo dpkg -i grafana_8.0.6_amd64.deb
# запускаем сервис 'grafana-server' sudo systemctl daemon-reload && \ sudo systemctl enable grafana-server && \ sudo systemctl restart grafana-server
# смотрим логи sudo journalctl -u grafana-server -f
Переходим в браузере на своём домашнем устройстве по адресу: http://<server_IP>:3000/, где <server_IP> - IP сервера, на котором установлен prometheus и grafana.
Если всё прошло удачно, нас встречает приветственное окно графаны:
Теперь задаём собственный пароль:
Следующим шагом станет добавление Data Sources. Выбираем Prometheus:
Указываем в графе URL адрес к своему серверу с прометеусом и графаной:
После чего нажимаем Save & test.
Если всё настроили правильно - отобразится зелёная галочка:
Теперь нам нужно импортировать дашборд, чтобы наконец-то увидеть графики:
Чтобы импортировать дашборд по ID, нам, прежде всего, этот ID нужно узнать.
Переходим к каталогу дашбордов и выбираем любой понравившийся.
К сожалению, не все дашборды из каталога будут работать, но, если потрудиться, то можно найти рабочие решения. Далее в статье я представлю свой дашборд.
Выбираем имя для дашборда и источник прометеуса:
И вот уже начинают заполняться некоторые графики и панели:
Но как добавить в один дашборд несколько нод? Ведь не интересно создавать для каждой ноды отдельный дашборд в отдельной вкладке - это не удобно.
Я решил не показывать весь процесс настройки своего дашборда. Я нашёл классный трафарет в каталоге, но пока довёл его до ума прошёл не один час. Запечатлеть все мои действия в статье не представляется возможным.
Но зато я создал 2 темплейта для коммьюнити, возможно вам понравится.
Как вы могли заметить, я добавил возможность получать общую статистику со всех добавленных нод в виде таблицы. Как по мне, это супер удобно. У нас будет только 1 дашборд для всех нод:
Плюс к этому, в левом углу есть поле Node, в выпадающем списке можно выбрать интересующую ноду и посмотреть её метрики более детально:
Теперь расскажу, как импортировать один из этих дашбордов себе и как добавить несколько нод в таблицу.
Первым делом, заходим на мой гитхаб и скачиваем архив с двумя json-файлами:
Затем открываем сессии с нужными нам серверами и устанавливаем на каждый сервер (откуда хотите собирать статистику) node-exporter из соответствующего раздела статьи.
Проверяем, чтобы экспортёр установился корректно на каждом сервере.
Мы устанавливаем только node-exporter и только на те машины, с которых хотим собирать метрики.
Grafana и Prometheus устанавливаем только на один сервер, который мы выделили, как ноду-обработчик.
После того, как экспортёры настроены, открываем файл конфига прометеуса на ноде-обработчике:
nano $HOME/prometheus/prometheus.yml
Нас интересует только раздел static_configs.
targets - это цель, определённая машина, на которую мы устанавливали ноду-экспортёр и откуда желаем собирать метрики.
label - название этого сервера для отображения в графане.
targets: [<IP>:9100] - меняем только IP.
label: "<label>" - меняем на своё название сервера.
Строго соблюдаем синтаксис: каждый отступ - 2 пробела.
Не рекомендую исопользовать пробелы в названиях лейблов, у меня так не работало.
# так будет выглядеть конфиг для одной ноды global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: "node_exporter" static_configs: - targets: [<IP>:9100] labels: label: "<label_1>" # так будет выглядеть конфиг для четырёх нод global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: "node_exporter" static_configs: - targets: [<IP-1>:9100] labels: label: "<label_1>" - targets: [<IP-2>:9100] labels: label: "<label_2>" - targets: [<IP-3>:9100] labels: label: "<label_3>" - targets: [<IP-4>:9100] labels: label: "<label_4>"
По аналогии можно добавить хоть бесконечность таргетов, главное сохранять синтаксис и отступы.
После того, как настроили конфиг - сохраняем изменения и перезапускаем графану и прометеус:
sudo systemctl daemon-reload && \ sudo systemctl enable grafana-server && \ sudo systemctl restart grafana-server && \ sudo systemctl restart prometheusd
Возвращаемся в графану и импортируем один из скачанных с гитхаба дашбордов:
Вуаля! Выглядит бомбически, мне очень нравится.
Если вам не нравится форма или размер виджета/панели, можно легко их редактировать: просто потянув за правый нижний угол виджета.
Например, если у вас много нод в списке и не удобно просматривать список с помощью скрола - просто увеличиваем высоту виджета:
Главное, нажать на кнопку сохранения в правом верхнем углу страницы, чтобы изменения вступили в силу:
Возможно, в будущем добавлю ещё несколько вариаций дашбордов, если затянет. Подписываемся на обновления, хаха!
мамичу за то, что родила такого гения.
@how_to_node - канал, где я выкладываю свои гайды.