Всім привіт.
Моніторинг сьогодні - фактично обов'язкова частина ІТ-інфраструктури для компанії будь-яких розмірів. Але сьогодні я не буду зупинятися на різноманітті програмного забезпечення для моніторингу, а просто покажу як легко можно дати старт такому функціоналу з одним із популярних рішень - пара на основі Prometheus плюс Grafana.
То ж щодо теорії то вам сюди, бо далі сама практика від Дениса Астахова. Піднімемо сервер Prometheus та сервер Grafana, з'єднаємо їх, та запустимо моніторинг на інші сервери.
Інсталюємо сервер Prometheus:
#!/bin/bash
#--------------------------------------------------------------------
# Script to Install Prometheus Server on Linux Ubuntu
# Tested on Ubuntu 22.04, 24.04
# Developed by Denis Astahov in 2024
#--------------------------------------------------------------------
# визначення глобальних констант
PROMETHEUS_VERSION="2.51.1"
PROMETHEUS_FOLDER_CONFIG="/etc/prometheus"
PROMETHEUS_FOLDER_TSDATA="/etc/prometheus/data"
# отримання пакету PROMETHEUS з мережі internet
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v$PROMETHEUS_VERSION/prometheus-$PROMETHEUS_VERSION.linux-amd64.tar.gz
tar xvfz prometheus-$PROMETHEUS_VERSION.linux-amd64.tar.gz
cd prometheus-$PROMETHEUS_VERSION.linux-amd64
mv prometheus /usr/bin/
rm -rf /tmp/prometheus*
# створення теки для PROMETHEUS
mkdir -p $PROMETHEUS_FOLDER_CONFIG
mkdir -p $PROMETHEUS_FOLDER_TSDATA
# створення конфігурації для сервера PROMETHEUS
cat <<EOF> $PROMETHEUS_FOLDER_CONFIG/prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name : "prometheus"
static_configs:
- targets: ["localhost:9090"]
EOF
# визначення користувача PROMETHEUS та надання йому відповідних прав
useradd -rs /bin/false prometheus
chown prometheus:prometheus /usr/bin/prometheus
chown prometheus:prometheus $PROMETHEUS_FOLDER_CONFIG
chown prometheus:prometheus $PROMETHEUS_FOLDER_CONFIG/prometheus.yml
chown prometheus:prometheus $PROMETHEUS_FOLDER_TSDATA
# створення конфігурації PROMETHEUS як сервісу Linux
cat <<EOF> /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
After=network.target
[Service]
User=prometheus
Group=prometheus
Type=simple
Restart=on-failure
ExecStart=/usr/bin/prometheus \
--config.file ${PROMETHEUS_FOLDER_CONFIG}/prometheus.yml \
--storage.tsdb.path ${PROMETHEUS_FOLDER_TSDATA}
[Install]
WantedBy=multi-user.target
EOF
# запуск сервісу PROMETHEUS, перевірка його статусу, та визначення його на автозапуск
systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheus
systemctl status prometheus --no-pager
prometheus --version