Главная

Tuesday, 23 July 2024

Легкий старт з Prometheus.

Всім привіт.

Моніторинг сьогодні - фактично обов'язкова частина ІТ-інфраструктури для компанії будь-яких розмірів. Але сьогодні я не буду зупинятися на різноманітті програмного забезпечення для моніторингу, а просто покажу як легко можно дати старт такому функціоналу з одним із популярних рішень - пара на основі 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


Інсталюємо Node_Exporter для Windows:

#--------------------------------------------------------------------
# PowerShell Script to Install Prometheus Windows_Exporter on Windows
# Tested on Windows Server 2019, 2022
# Developed by Denis Astahov in 2024
#--------------------------------------------------------------------
# https://github.com/prometheus-community/windows_exporter/releases

$WINDOWS_EXPORTER_VERSION="0.25.1"
$URL="https://github.com/prometheus-community/windows_exporter/releases/download/v$WINDOWS_EXPORTER_VERSION/windows_exporter-$WINDOWS_EXPORTER_VERSION-amd64.msi"


Invoke-WebRequest $URL -OutFile window_exporter.msi
Start-Process "msiexec.exe" -ArgumentList "/i window_exporter.msi /qn" -Wait
Remove-Item window_exporter.msi
Get-Service windows_exporter


Файл prometheus.yaml для сервера Prometheus:
global:
  scrape_interval: 15s


scrape_configs:
# моніторинг самого серверу Рrometheus
  - job_name      : "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

# моніторинг Linux по IP
  - job_name      : "ubuntu-servers"
    static_configs:
      - targets:
          - 10.0.0.1:9100
          - 10:0.0.2:9100

# моніторинг Windows по IP
  - job_name      : "windows-servers"
    static_configs:
      - targets:
          - 10.0.0.3:9182
          - 10:0.0.4:9182

# динамічний моніторинг по tag
  - job_name      : "prod-servers"
    ec2_sd_configs:
    - port: 9100
      filters:
        - name  : tag:Environment
          values: ["prod"]

# динамічний моніторинг по tag
  - job_name      : "dev-servers"
    ec2_sd_configs:
    - port: 9100
      filters:
        - name  : tag:Environment
          values: ["dev"]

Ось і все, і це працює. Удачі.

No comments:

Post a Comment

А что вы думаете по этому поводу?