Skip to content

Monitoring

Vladislav Kuznecov edited this page Sep 30, 2021 · 7 revisions

Настройка мониторинга

Для мониторинга используется Prometheus + Grafana

Общая настройка для всех машин

Установка Prometheus Node Exporter:

sudo useradd --no-create-home --shell /bin/false node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gz
sudo cp node_exporter-1.2.2.linux-amd64/node_exporter /usr/local/bin/
rm tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gz
rm tar -xvzf node_exporter-1.2.2.linux-amd64
sudo ufw allow 9100/tcp
sudo mkdir /etc/node_exporter

Конфигурация доступа

Вот тут sudo vim /etc/node_exporter/web.yml

basic_auth_users:
  dusic: bcryptedpassword

Конфигурация демона

Вот тут: sudo vim /etc/systemd/system/node_exporter.service

[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 --web.config=/etc/node_exporter/web.yml

[Install]
WantedBy=default.target

Запуск демона

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

Настройка exporter'а для nginx

  1. wget https://github.com/martin-helmich/prometheus-nginxlog-exporter/releases/download/v1.9.0/prometheus-nginxlog-exporter_1.9.0_linux_amd64.deb
  2. sudo apt install ./prometheus-nginxlog-exporter_1.9.0_linux_amd64.deb
  3. rm prometheus-nginxlog-exporter_1.9.0_linux_amd64.deb
  4. sudo chmod 644 /var/log/nginx/access.log
  5. Вот тут: sudo vim /etc/logrotate.d/nginx поменять разрешения новых log файлов на 644
  6. sudo systemctl status prometheus-nginxlog-exporter - проверяем экспортер
  7. sudo ufw allow from 0.0.0.0 to any port 4040 proto tcp - разрешаем серверу с Prometheus доступ к нужному порту (тут надо подставить нужный IP)

Установка Prometheus

  1. sudo useradd --no-create-home --shell /bin/false prometheus
  2. wget https://github.com/prometheus/prometheus/releases/download/v2.30.0/prometheus-2.30.0.linux-amd64.tar.gz
  3. tar -xvzf prometheus-2.30.0.linux-amd64.tar.gz
  4. sudo cp prometheus-2.30.0.linux-amd64/prometheus /usr/local/bin/
  5. sudo cp prometheus-2.30.0.linux-amd64/promtool /usr/local/bin/
  6. sudo mkdir /etc/prometheus
  7. sudo cp -r prometheus-2.30.0.linux-amd64/consoles/ /etc/prometheus/consoles
  8. sudo cp -r prometheus-2.30.0.linux-amd64/console_libraries/ /etc/prometheus/console_libraries
  9. sudo chown -R prometheus:prometheus /etc/prometheus
  10. sudo mkdir /var/lib/prometheus
  11. sudo chown prometheus:prometheus /var/lib/prometheus
  12. rm -rf prometheus-2.30.0.linux-amd64
  13. rm prometheus-2.30.0.linux-amd64.tar.gz

Конфигурация Prometheus

Вот тут sudo vim /etc/prometheus/prometheus.yml

global:
  scrape_interval: 15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: "client-canary"
    basic_auth:
      username: "dusic"
      password: "overComplicatedPassword"
    static_configs:
      - targets: ["0.0.0.0:9100"] # Setup correct IP and port
  # ...
  - job_name: "backend-nginx"
    static_configs:
      - targets: ["0.0.0.0:4040"] # Setup correct IP and port

Конфигурация демона

Вот тут sudo vim /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
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=default.target

Запуск демона:

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

Установка Grafana

sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_8.1.5_amd64.deb
sudo dpkg -i grafana_8.1.5_amd64.deb
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo ufw allow 3000/tcp

Конфигурация

Дополнить следующим образом:

# ...
[server]
domain = dusic.fizvlad.com
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/
serve_from_sub_path = true
# ...

Рестарт сервера: sudo systemctl restart grafana-server

Настройка импорта данных

Если Nginx настроен правильно, то настройка идёт через интерфейс на /grafana