Мониторинг серверов и сервисов с помощью Grafana

Оцените статью

Я хотел написать про Grafana и его друзей Consul, Loki и т.п. потом передумал, это будет лютый лонгрид и поехали просто как графану установить.

Установка Grafana.

Импортируем ключ репозитория.

# wget -q -O gpg.key https://rpm.grafana.com/gpg.key

Создаем файл описания репозитория в файле /etc/yum.repos.d/grafana.repo.

[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://rpm.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

Обратите внимание, что из РФ в свете последних событий вас пошлют лесом с такой вот ошибкой.

Errors during downloading metadata for repository ‘grafana’:
 — Status code: 403 for https://rpm.grafana.com/repodata/repomd.xml (IP: 151.101.130.217)
Error: Failed to download metadata for repo ‘grafana’: Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried

И в этом случае у нас есть два варианта. Можем поднять клон репозиория который мы скачаем через зарубежный прокси или напрямую укажем использовать прокси для этого репозиторя добавив наш прокси в конфигурационный файл одной строкой.

proxy=http://45.138.27.6:3128

Естественно, что вместо 45.138.27.6 надо будет указать ваш прокси сервер и если ипользуется авторизация, то запись будет выглядеть вот так.

proxy=http://user:password@proxy.example.com:3128

Теперь мы устанавливаем графану как сервис, активируем и запускаем.

# dnf install grafana
# systemctl enable grafana-server
# systemctl start grafana-server

Сервис доступен на порту 3000 и логин-пароль по умолчанию admin/admin. Если у вас активен Firewalld, то добавляем разрешения.

# firewall-cmd --permanent --add-port=3000/tcp
success
# firewall-cmd --reload

Графана готова и можно пробовать авторизоваться.

По IP-Port ходить не кошерно и сделаем реверс-прокси отсучением по IP-адресам внутренный сети примерно такого содержания (поправить по вкусу).

  server {
    listen   80;
    include acme;
    server_name sms-grafana.smsfinanceit.ru;
        location / {
      if ($request_method = GET) {
        rewrite  ^ https://$host$request_uri? permanent;
      }
      return 405;
    }
  }

  server {
    listen   443 ssl;
    http2 on;
    server_name sms-grafana.smsfinanceit.ru;
    include acme;

  ssl_protocols TLSv1.1 TLSv1.2;
  ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384;
  ssl_prefer_server_ciphers on;
  ssl_session_timeout 10m;
  ssl_certificate      /etc/letsencrypt/live/sms-grafana.smsfinanceit.ru/fullchain.pem;
  ssl_certificate_key  /etc/letsencrypt/live/sms-grafana.smsfinanceit.ru/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/sms-grafana.smsfinanceit.ru/chain.pem;

         access_log /var/log/nginx/sms-grafana.smsfinanceit.ru_access.log;
         error_log  /var/log/nginx/sms-grafana.smsfinanceit.ru_error.log;

    proxy_set_header   Host                 $http_host;
    proxy_set_header   X-Forwarded-Proto    $scheme;
    proxy_set_header   X-Forwarded-For      $remote_addr;

    proxy_read_timeout 120s;
    proxy_send_timeout 120s;
    send_timeout 120s;
    resolver_timeout 120s;
    client_body_timeout 120s;

    client_max_body_size 50m;
    client_body_buffer_size 200k;

    location / {
      allow 34.22.136.63;
      deny all;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
      add_header Strict-Transport-Security "max-age=31536000";
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Scheme $scheme;
      proxy_pass http://10.54.110.94:3000;
    }
  }

Конфиг достаточно типовой и особых вопросов думаю не вызывает.

Установка Prometheus

Сразу, чтобы два раза не вставать откроем нужные порты.

# firewall-cmd --permanent --zone=public --add-port=9090/tcp --add-port=9093/tcp --add-port=9094/{tcp,udp} --add-port=9100/tcp
# firewall-cmd --reload

Я честно говоря не пониаю за каким чертом они поставляют свое решение в виде tar.gz, а не репозиторием, хотя у них есть конечно докер образ, но мы решили bare-metal пусть так оно и будет. Посему скачиваем текущую стабильную версию с официального сайта https://prometheus.io/download/.

# wget https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz

Дальше по классике, все то что бы за нас сделал докер, мы сделаем руками. Создадим пользователя, распакуем образ, напишем скрипты для запуска и т.п. и если вам лень, то берите образ докера, там все тоже самое.

# useradd --no-create-home --shell /bin/bash prometheus
# usermod --home /opt/prometheus prometheus
# mkdir /etc/prometheus
# mkdir /var/lib/prometheus
....
Дальше лень копипастить.

В принципе ничего интересного расписывать, тупо раскидываем бинарники по каталогам, меняем владельца и погнали. Единственное, что стоит отметь два бинаря promtool и prometheus симлинками лучше загнать в /usr/local/bin/, чисто для красоты.

Теперь, мы попробуем запустить это чудо локально от имени пользователя которго мы создали и проверим, что оно у нас вообще запускается перед тем как сервис рисовать.

# su prometheus -s /bin/bash
$ /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus/ --web.console.templates=/opt/prometheus/consoles --web.console.libraries=/opt/prometheus/console_libraries

Если веб-интерфейс на порту 9090 отображается, то значит мы все правильно сделали.

Рисуем сервис в файле /etc/systemd/system/prometheus.service

[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=/opt/prometheus/consoles --web.console.libraries=/opt/prometheus/console_libraries
[Install]
WantedBy=multi-user.target

Дальше, классика активируем и включаем. Тюнить все это хозайство будем позже.

# systemctl enable prometheus
# systemctl start prometheus

Похожие записи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования