Всім привіт.
Моніторинг сьогодні - фактично обов'язкова частина ІТ-інфраструктури для компанії будь-яких розмірів. Але сьогодні я не буду зупинятися на різноманітті програмного забезпечення для моніторингу, а просто покажу як легко можно дати старт такому функціоналу з одним із популярних рішень - пара на основі 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
Інсталюємо сервер Grafana:
#!/bin/bash
#--------------------------------------------------------------------
# Script to Install Grafana Server on Linux Ubuntu (22.04, 24.04)
# Include Prometheus DataSource Configuration
# Developed by Denis Astahov in 2024
#--------------------------------------------------------------------
# https://grafana.com/grafana/download
# визначення глобальних констант (URL замінити на свій сервер Prometheus!)
GRAFANA_VERSION="10.4.2"
PROMETHEUS_URL="http://172.31.29.90:9090"
# отримання пакету GRAFANA з мережі internet та його інсталяція
apt-get install -y apt-transport-https software-properties-common wget
mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
apt-get update
apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/oss/release/grafana_${GRAFANA_VERSION}_amd64.deb
dpkg -i grafana_${GRAFANA_VERSION}_amd64.deb
echo "export PATH=/usr/share/grafana/bin:$PATH" >> /etc/profile
# визначення серверу PROMETHEUS як джерела даних для GRAFANA
cat <<EOF> /etc/grafana/provisioning/datasources/prometheus.yaml
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
url: ${PROMETHEUS_URL}
EOF
# запуск сервісу GRAFANA, перевірка його статусу, та визначення його на автозапуск
systemctl daemon-reload
systemctl enable grafana-server
systemctl start grafana-server
systemctl status grafana-server
Інсталюємо Node_Exporter для Linux:
#!/bin/bash
#--------------------------------------------------------------------
# Script to Install Prometheus Node_Exporter on Linux
# Tested on Ubuntu 22.04, 24.04, Amazon Linux 2023
# Developed by Denis Astahov in 2024
#--------------------------------------------------------------------
# https://github.com/prometheus/node_exporter/releases
NODE_EXPORTER_VERSION="1.7.0"
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v$NODE_EXPORTER_VERSION/node_exporter-$NODE_EXPORTER_VERSION.linux-amd64.tar.gz
tar xvfz node_exporter-$NODE_EXPORTER_VERSION.linux-amd64.tar.gz
cd node_exporter-$NODE_EXPORTER_VERSION.linux-amd64
mv node_exporter /usr/bin/
rm -rf /tmp/node_exporter*
useradd -rs /bin/false node_exporter
chown node_exporter:node_exporter /usr/bin/node_exporter
cat <<EOF> /etc/systemd/system/node_exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
Restart=on-failure
ExecStart=/usr/bin/node_exporter
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start node_exporter
systemctl enable node_exporter
systemctl status node_exporter
node_exporter --version
Ось і все, і це працює. Удачі.
No comments:
Post a Comment
А что вы думаете по этому поводу?