March 8, 2023

Dashboard Master Nolus

В первую очередь необходимо проверить соединение с prometheus в$HOME/.nolus/config/config.toml, если нет:

directory=.nolus
binary=nolusd

sed -i -e "s/prometheus = false/prometheus = true/" $HOME/$directory/config/config.toml
systemctl restart $binary

Порт по умолчанию у нас будет порт 26660, далее необходимо проверить метрики в браузере

echo -e "\033[0;32mhttp://$(wget -qO- eth0.me):26660/\033[0m"

Получаем следующий вывод http://80.241.219.135:26660/

После этого вставляем ссылку в браузер и смотрим на метрики

Далее необходимо создать учетную запись в node_exporter

useradd --no-create-home --shell /bin/false node_exporter

Далее необходимо загрузить Prometheus

cd wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz

tar xvf node_exporter-1.5.0.linux-amd64.tar.gz

Копируем бинарные файлы в /usr/local/bin

sudo cp node_exporter-1.5.0.linux-amd64/node_exporter /usr/local/bin

sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Проверяем версию

node_exporter --version

Видим следующий ввод

Создаем сервисный файл

tee /etc/systemd/system/node_exporterd.service > /dev/null <<EOF
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=default.target
EOF

Запускаем

systemctl daemon-reload
systemctl enable node_exporterd
systemctl restart node_exporterd && journalctl -u node_exporterd -f -o cat

Проверяем, что метрики отдаются

curl 'localhost:9100/metrics'

Проверяем метрики в браузере

echo -e "\033[0;32mhttp://$(wget -qO- eth0.me):9100/\033[0m"

Далее создаем учетную запись cosmos_exporter

useradd --no-create-home --shell /bin/false cosmos_exporter

Устанавливаем

cd
wget https://github.com/solarlabsteam/cosmos-exporter/releases/download/v0.3.0/cosmos-exporter_0.3.0_Linux_x86_64.tar.gz
tar xvf cosmos-exporter*

Копируем бинарные файлы в /usr/local/bin

cp cosmos-exporter /usr/local/bin
chown cosmos_exporter:cosmos_exporter /usr/local/bin/cosmos-exporter
rm -rf cosmos-exporter*

Добавляем нужные переменные demon и bench_prefix

DENOM=unls
BECH_PREFIX=nolus
DENOM_COEFFICIENT=1000000
TENDERMINT_RPC=http://localhost:26657
NODE=localhost:9090

Создаем сервисный файл

tee /etc/systemd/system/cosmos-exporterd.service > /dev/null <<EOF
[Unit]
Description=Cosmos Exporter
After=network-online.target

[Service]
User=cosmos_exporter
Group=cosmos_exporter
TimeoutStartSec=0
CPUWeight=95
IOWeight=95
ExecStart=/usr/local/bin/cosmos-exporter --denom $DENOM --denom-coefficient $DENOM_COEFFICIENT --bech-prefix $BECH_PREFIX --node $NODE --tendermint-rpc $TENDERMINT_RPC
Restart=always
RestartSec=2
LimitNOFILE=800000
KillSignal=SIGTERM

[Install]
WantedBy=multi-user.target
EOF

Запускаем и видим следующее

systemctl daemon-reload
systemctl enable cosmos-exporterd
systemctl restart cosmos-exporterd && journalctl -u cosmos-exporterd -f -o cat

Далее необходимо установить Prometheus и Grafana, и делаем это на отдельном сервере

Подготовка сервера

apt update && apt upgrade -y

Устанавливаем необходимые дополнения

apt install curl iptables build-essential git wget jq make gcc nano tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y
apt install python3-pip -y
pip install yq

Устанавливаем File2Ban

apt install fail2ban -y && \
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local && \
nano /etc/fail2ban/jail.local

Далее необходимо раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 <ip>

После этого сделать рестарт

systemctl restart fail2ban

Создание пользователя Prometheus

useradd --no-create-home --shell /bin/false prometheus

Далее создадим необходимые каталоги для хранения файлов и данных Prometheus

mkdir /etc/prometheus
mkdir /var/lib/prometheus

Установим права пользователя и группы в новых каталогах для пользователя prometheus

chown prometheus:prometheus /etc/prometheus
chown prometheus:prometheus /var/lib/prometheus

Установка Prometheus

cd && \
wget https://github.com/prometheus/prometheus/releases/download/v2.38.0/prometheus-2.38.0.linux-amd64.tar.gz && \
tar xvf prometheus-2.38.0.linux-amd64.tar.gz

Копируем бинарные файлы в /usr/local/bin

cp prometheus-2.38.0.linux-amd64/prometheus /usr/local/bin/
cp prometheus-2.38.0.linux-amd64/promtool /usr/local/bin/

Устанавливаем права собственности пользователя и группы на бинарные файлы

chown prometheus:prometheus /usr/local/bin/prometheus
chown prometheus:prometheus /usr/local/bin/promtool

Копируем consoles, console_libraries и prometheus.yml в /etc/prometheus

cp -r prometheus-2.38.0.linux-amd64/consoles /etc/prometheus
cp -r prometheus-2.38.0.linux-amd64/console_libraries /etc/prometheus
cp prometheus-2.38.0.linux-amd64/prometheus.yml /etc/prometheus/

Установим права собственности пользователя и группы в каталогах для пользователя prometheus

chown -R prometheus:prometheus /etc/prometheus

Удаляем ненужные файлы

rm -rf prometheus-2.38.0.linux-amd64.tar.gz prometheus-2.38.0.linux-amd64

Проверяем версии

prometheus --version
promtool --version

Настраиваем Prometheus и копируем дефолтный конфиг

curl -sSL https://raw.githubusercontent.com/lesnikutsa/cosmos-monitoring/main/prometheus.yml > /etc/prometheus/prometheus.yml

Задаем переменные для нашего конфига

VALIDATOR_IP=80.241.219.135
VALOPER_ADDRESS=nolusvaloper153ar58plwg2x8a8zsxhyjgkqyngkhkzw464k3d
WALLET_ADDRESS=nolus153ar58plwg2x8a8zsxhyjgkqyngkhkzwv2qnjs
PROJECT_NAME=nolus
$HOME/prometheus/add_node.sh $VALIDATOR_IP $VALOPER_ADDRESS $WALLET_ADDRESS $PROJECT_NAME

Создаем сервисный файл

tee /etc/systemd/system/prometheusd.service > /dev/null <<EOF
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target
EOF

Запускаем и проверяем статус

systemctl daemon-reload && \
systemctl enable prometheusd && \
systemctl restart prometheusd && sudo systemctl status prometheusd

Проверяем, что метрики отдаются

curl 'localhost:9090/metrics'

Проверяем информацию в браузере

echo -e "\033[0;32mhttp://$(wget -qO- eth0.me):9090/\033[0m"

Вставляем ссылку в браузер http://91.201.113.218:9090/

Выбираем раздел Status - Targets

Устанавливаем Grafana

sudo apt-get install -y adduser libfontconfig1 && \
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_9.1.3_amd64.deb && \
sudo dpkg -i grafana-enterprise_9.1.3_amd64.deb

Запускаем

systemctl daemon-reload && \
systemctl enable grafana-server && \
systemctl restart grafana-server && sudo systemctl status grafana-server

Узнаем адрес и вставляем в браузер

echo -e "\033[0;32mhttp://$(wget -qO- eth0.me):3000/\033[0m"

Переходим по ссылке http://91.201.113.218:3000/

Вводим логин и пароль - admin

Меняем пароль на другой (в моем случае это admin1 )

Заходим в конфигурацию и добавляем Prometheus, в моем случае Prometheus и Grafana на одном сервере, поэтому в URL указываю - http://localhost:9090 и после этого сохраняю.

Далее необходимо импортировать json в дашборд, я скачал здесь

https://grafana.com/grafana/dashboards/17100-cosmos-node-monitoring-from-neobase/

Теперь можно мониторить все метрики