В современном цифровом мире системный мониторинг стал неотъемлемой частью обеспечения производительности и стабильности онлайн-приложений и сервисов. Системные администраторы и рабочие группы должны постоянно следить за состоянием своих систем, выявляя и устраняя проблемы до того, как они затронут конечных пользователей. Именно здесь на помощь приходит Prometheus, мощный инструмент мониторинга и оповещения, разработанный специально для современных инфраструктурных сред.

Node Exporter: агент ведения журнала и сборщик метрик
Node Exporter — это фундаментальный компонент экосистемы Prometheus. Это агент сбора метрик, разработанный специально для систем на базе Linux. Его основная функция — извлекать и предоставлять метрики из операционной системы и оборудования узла или сервера, чтобы Prometheus мог собирать и хранить эти данные.

Prometheus: система хранения метрик
Prometheus использует подход, основанный на извлечении метрик, что означает, что он напрямую подключается к службам и приложениям, которые необходимо отслеживать, и периодически извлекает из них метрики. основа. Эти показатели могут включать такие данные, как использование ЦП, потребление памяти, задержка в сети и многие другие аспекты, связанные с производительностью и работоспособностью системы.

После того, как Prometheus собрал метрики, он сохраняет их в высокоэффективной базе данных временных рядов. Это позволяет администраторам выполнять сложные запросы и анализ исторических данных.

Grafana: визуализация и анализ журналов
Grafana предоставляет платформу для визуализации и анализа в реальном времени данных журналов, собранных Promtail и сохраненных в Loki. Grafana позволяет создавать интерактивные и настраиваемые информационные панели с графиками и диаграммами, которые облегчают понимание и анализ журналов.

Процесс установки:

Экспортер узлов:

# wget https://github.com/prometheus/node_exporter/releases/download/v1.3.0/node_exporter-1.3.0.linux-amd64.tar.gz -P /opt
# tar -xzf /opt/node_exporter-*linux-amd64.tar.gz
# mv /opt/node_exporter-*linux-amd64 /opt/node_exporter
# nano /etc/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/opt/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl enable node_exporter
# systemctl start node_exporter

Node Exporter (докер версии):

version: '3.8'
networks:
  monitoring:
    driver: bridge
volumes:
  prometheus_data: {}
services:
  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: unless-stopped
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
      - '--collector.netclass.ignored-devices=^(veth.*)$$'
    ports:
      - 9200:9100
    networks:
      - monitoring
    labels:
      org.label-schema.group: "monitoring"

Прометей (версия докера):

mkdir ./prometheus
version: '3.8'
services:
  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus/:/etc/prometheus/
      - ./prometheus_data/prometheus_data:/prometheus
    environment:
      - PUID=1001
      - PGID=1001
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
      - '--web.config.file=/etc/prometheus/web.yml'
    ports:
      - 40005:9090
    restart: always

Пароль Прометея:

Первое, что нам нужно для настройки базовой аутентификации для Prometheus, — это хешированный пароль. По сути, это зашифрованный пароль, поэтому нам не нужно указывать пароль в виде простого текста в файле конфигурации. "ГЕНЕРАТОР ПАРОЛЕЙ"

Создайте файл web.yml

# touch /etc/prometheus/web.yml

Внутри файла мы должны добавить пользователя, с которым мы хотим получить доступ, и пароль — это хэш, который мы создали ранее.

basic_auth_users:
    admin: $2b$12$hNf2lSsxfm0.i4a.1kVpSOVyBCfIB51VRjgBUyv6kdnyTlgWj81Ay

Графана (версия докера):

mkdir ./grafana
touch ./grafana/config.monitoring
vi ./grafana/config.monitoring
GF_SECURITY_ADMIN_PASSWORD=XXX
GF_USERS_ALLOW_SIGN_UP=false
version: '3.8'
services:
  grafana:
    image: grafana/grafana
    user: "472"
    ports:
      - 3000:3000
    volumes:
      - ./grafana/grafana_data:/var/lib/grafana
      - ./grafana/grafana/provisioning/:/etc/grafana/provisioning/
    env_file:
      - ./grafana/config.monitoring
    restart: always

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

# nano /etc/prometheus.yml

global:
  scrape_interval:     15s
  evaluation_interval: 15s
  external_labels:
    cluster: 'local'

scrape_configs:
  - job_name: 'cloud'
    static_configs:
    - targets: ['XXX.XXX.XXX.XXX:9100']
      labels:
        instance: server 1
    - targets: ['XXX.XXX.XXX.XXX:9100']
      labels:
        instance: server 2

  - job_name: 'onpremise'
    static_configs:
    - targets: ['XXX.XXX.XXX.XXX:9100']
      labels:
        instance: server 3
    - targets: ['XXX.XXX.XXX.XXX:9200']
      labels:
        instance: server 4

Заходим в дашборды и импортируем .json или указываем ID дашборда

ID: 11074

И наши данные должны начать появляться.

Если вам понравилась эта статья и вы хотите угостить меня кофе ☕️подпишитесь на BuyMeACoffe Link