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