Grafana и Prometheus

Задача - организовать отдельную вм с Debian на которой будет связка Grafana и Prometheus. Без особых изьебов. Чтоб вот просто максимально Что собственно ставим?

  • Grafana - клевая и стильная система визуализации данных. Проект на гитхаб - Grafana Labs Github
  • Prometheus - система сбора данных. Проект на гитхаб - Prometheus
  • Prometheus Node Exporter - штука которая опрашивает метрики с операционной системы и отображает их по HTTP. Проект на гитхаб - Prometheus Node Exporter

Установка Grafana с deb-пакета

Методы описанные с установкой ключа и апдейта с репозиторием к сожалению не работают потому как в моем случае при запросе ключа я получаю:

mayekkuzu@linux-term:~$ curl https://apt.grafana.com/gpg.key
Sorry, the provided token is not valid

Поэтому и ставить будем просто установкой deb файла. Посмотреть можно на странице Download. На момент написания это OSS 12.1.0

sudo apt update
sudo apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/oss/release/grafana_12.1.0_amd64.deb
sudo dpkg -i grafana_12.1.0_amd64.deb
sudo systemctl daemon-reload
sudo systemctl enable grafana-server --now

Далее открываем ip-vm:3000 и авторизовываемся под admin/admin. Далее в профиле меняем пароль на свой.

Ставим Prometheus

Здесь просто ставим два пакета через apt

sudo apt install prometheus prometheus-node-exporter

После установки сервисы запустятся автоматически, но следует проверить запуск служб командой:

mayekkuzu@grafana:~$ sudo systemctl is-enabled prometheus
enabled
mayekkuzu@grafana:~$ sudo systemctl is-enabled prometheus-node-exporter
enabled

Так же смотрим что поднялись порты:

mayekkuzu@linux-term:~$ ss -tulpn
Netid      State       Recv-Q      Send-Q            Local Address:Port             Peer Address:Port      Process
tcp        LISTEN      0           100                   127.0.0.1:25                    0.0.0.0:*
tcp        LISTEN      0           4096                          *:22                          *:*
tcp        LISTEN      0           100                       [::1]:25                       [::]:*
tcp        LISTEN      0           4096                          *:9100                        *:*         # Это Node Exporter
tcp        LISTEN      0           4096                          *:9090                        *:*         # Это Prometheus

Проверяем Prometheus и Node Exporter

По умолчанию если посмотреть в конфигфаил /etc/prometheus/prometheus.yaml в конце можно увидеть в блоке scrape_configs:

- job_name: node
    # If prometheus-node-exporter is installed, grab stats about the local
    # machine by default.
    static_configs:
      - targets: ['localhost:9100']

Что говорит о том что Prometheus уже собирает метрики с этой вм. Но долетают ли они? Давайте посмотрим curl'ом. Если отсутствует то установите sudp apt install curl

mayekkuzu@linux-term:~$ curl localhost:9100/metrics
# HELP apt_autoremove_pending Apt packages pending autoremoval.
# TYPE apt_autoremove_pending gauge
apt_autoremove_pending 0
# HELP apt_package_cache_timestamp_seconds Apt update last run time.
# TYPE apt_package_cache_timestamp_seconds gauge
apt_package_cache_timestamp_seconds 1.754826140084365e+09
# HELP apt_upgrades_held Apt packages pending updates but held back.
# TYPE apt_upgrades_held gauge
apt_upgrades_held{arch="",origin=""} 0
# HELP apt_upgrades_pending Apt packages pending updates by origin.
# TYPE apt_upgrades_pending gauge
apt_upgrades_pending{arch="",origin=""} 0
...

Теперь перейдем в GUI Prometheus ip-or-fqdn:9090. Попробуем вывести какие-нибудь данные, например node_os_version должен вывести версию операционной системы.

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9