add monitoring post
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 241 KiB |
@@ -0,0 +1,206 @@
|
|||||||
|
---
|
||||||
|
slug: monitoring-pc-club
|
||||||
|
title: Мониторинг для компьютерного клуба
|
||||||
|
description: Система мониторинга в компьютерном клубе
|
||||||
|
image: ./monitoring-pc-club.png
|
||||||
|
tags: [docker, linux, prometheus, grafana, monitoring]
|
||||||
|
date: 2023-05-28
|
||||||
|
---
|
||||||
|
|
||||||
|
Система мониторинга дает возможность отслеживать и оперативно узнавать об ошибках в работе и общей нагрузке на оборудование.
|
||||||
|
|
||||||
|
[](/blog/monitoring-pc-club)
|
||||||
|
|
||||||
|
<!--truncate-->
|
||||||
|
## Зачем мониторинг?
|
||||||
|
|
||||||
|
Благодаря мониторингу можно увидеть полноценную картину использования и работоспособности оборудования.
|
||||||
|
|
||||||
|
Позволяет многие технические проблемы решать до их проявления и улучшать качество обслуживания пользователей.
|
||||||
|
|
||||||
|
|
||||||
|
## Что мониторить?
|
||||||
|
|
||||||
|
- CPU (нагрузка на процессор, температура)
|
||||||
|
- GPU (нагрузка на видеокарту, температура)
|
||||||
|
- RAM (нагрузка на оперативную память)
|
||||||
|
- SSD, HDD (состояние дисков, свободный объем)
|
||||||
|
- Любая другая полезная информация, которую необходимо вывести
|
||||||
|
|
||||||
|
## Как мониторить?
|
||||||
|
|
||||||
|
Основная связка Prometheus + Grafana
|
||||||
|
|
||||||
|
Это самые популярные сервисы для мониторинга, быстрые и удобные
|
||||||
|
|
||||||
|
### Prometheus
|
||||||
|
|
||||||
|
Собирает и хранит все метрики. Сам ходит к каждому компьютеры и собирает нужную информацию
|
||||||
|
|
||||||
|
|
||||||
|
### Grafana
|
||||||
|
|
||||||
|
Берет данные с Prometheus и позволяет красиво все отобразить. Главная панель мониторинга
|
||||||
|
|
||||||
|
|
||||||
|
### Exporters
|
||||||
|
|
||||||
|
**Экспортер** - представляет собой службу, которая собирает информацию о системе и подготавливает ее в формате понятным для Prometheus. На каждом компьютере с которого нужная информация, должен быть запущен exporter
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## Подготовка сервера
|
||||||
|
|
||||||
|
Сервер или виртуалка с Linux (я использовал Ubuntu но для docker разницы нет)
|
||||||
|
|
||||||
|
### docker-compose
|
||||||
|
|
||||||
|
Для удобства обслуживания будет использоваться docker-compose
|
||||||
|
|
||||||
|
```YAML
|
||||||
|
version: "3.7"
|
||||||
|
services:
|
||||||
|
prometheus:
|
||||||
|
image: prom/prometheus:v2.44.0
|
||||||
|
container_name: prometheus
|
||||||
|
command:
|
||||||
|
- '--config.file=/etc/prometheus/prometheus.yml'
|
||||||
|
- '--storage.tsdb.path=/prometheus'
|
||||||
|
- '--web.console.libraries=/etc/prometheus/console_libraries'
|
||||||
|
- '--web.console.templates=/etc/prometheus/consoles'
|
||||||
|
- '--storage.tsdb.retention.time=30d'
|
||||||
|
- '--web.enable-lifecycle'
|
||||||
|
- '--web.external-url=https://prom.akmalov.com'
|
||||||
|
environment:
|
||||||
|
- TZ="Asia/Yekaterinburg"
|
||||||
|
ports:
|
||||||
|
- 9090:9090
|
||||||
|
volumes:
|
||||||
|
- ./prometheus/config:/etc/prometheus/
|
||||||
|
- ./prometheus/data:/prometheus/
|
||||||
|
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
grafana:
|
||||||
|
image: grafana/grafana:9.5.3-ubuntu
|
||||||
|
container_name: grafana
|
||||||
|
depends_on:
|
||||||
|
- prometheus
|
||||||
|
ports:
|
||||||
|
- 3000:3000
|
||||||
|
volumes:
|
||||||
|
- ./grafana/data:/var/lib/grafana
|
||||||
|
- ./grafana/provisioning:/etc/grafana/provisioning
|
||||||
|
environment:
|
||||||
|
- GF_SECURITY_ADMIN_USER=admin
|
||||||
|
- GF_SECURITY_ADMIN_PASSWORD=12345
|
||||||
|
- GF_USERS_ALLOW_SIGN_UP=false
|
||||||
|
- TZ="Asia/Yekaterinburg"
|
||||||
|
- BROWSER_TZ="Asia/Yekaterinburg"
|
||||||
|
restart: unless-stopped
|
||||||
|
```
|
||||||
|
|
||||||
|
### Конфигурация prometheus
|
||||||
|
|
||||||
|
Создать файл конфига по пути:
|
||||||
|
``` ./prometheus/config/prometheus.yml ```
|
||||||
|
|
||||||
|
В данном примере добавлены 5 ПК, отдельные job для Windows и GPU экспортеров
|
||||||
|
|
||||||
|
```
|
||||||
|
global:
|
||||||
|
scrape_interval: 15s
|
||||||
|
evaluation_interval: 15s
|
||||||
|
|
||||||
|
- job_name: 'GPU'
|
||||||
|
metrics_path: '/metrics'
|
||||||
|
scrape_interval: 5s
|
||||||
|
static_configs:
|
||||||
|
- targets:
|
||||||
|
- 192.168.18.11:9835
|
||||||
|
- 192.168.18.12:9835
|
||||||
|
- 192.168.18.13:9835
|
||||||
|
- 192.168.18.14:9835
|
||||||
|
- 192.168.18.15:9835
|
||||||
|
labels:
|
||||||
|
metrics: nvidia
|
||||||
|
|
||||||
|
- job_name: 'Windows'
|
||||||
|
metrics_path: '/metrics'
|
||||||
|
scrape_interval: 5s
|
||||||
|
static_configs:
|
||||||
|
- targets:
|
||||||
|
- 192.168.18.11:9182
|
||||||
|
- 192.168.18.12:9182
|
||||||
|
- 192.168.18.13:9182
|
||||||
|
- 192.168.18.14:9182
|
||||||
|
- 192.168.18.15:9182
|
||||||
|
labels:
|
||||||
|
metrics: OS
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Создание config файла можно сильно упросить и автоматизировать с помощью Ansible
|
||||||
|
|
||||||
|
## Подготовка компьютеров
|
||||||
|
|
||||||
|
В данном случаи понадобиться установить два экспортера:
|
||||||
|
|
||||||
|
### [windows exporter](https://github.com/prometheus-community/windows_exporter)
|
||||||
|
|
||||||
|
[Windows Exporter](https://github.com/prometheus-community/windows_exporter) - позволяет мониторить состояние операционной системы Windows и собирать метрики для дальнейшей обработки, выводит различные параметры и характеристики Windows, такие как:
|
||||||
|
|
||||||
|
- Использование процессора и памяти;
|
||||||
|
- Загрузка дисков и средств хранения;
|
||||||
|
- Статистика сетевых интерфейсов;
|
||||||
|
- Статистика работы служб и сервисов Windows;
|
||||||
|
- Информация о запущенных процессах и открытых сокетах;
|
||||||
|
- Информация о состоянии производительности IIS и многие другие параметры.
|
||||||
|
|
||||||
|
Использование Windows Exporter позволяет проводить мониторинг и анализ состояния Windows и быстро реагировать на возможные проблемы, такие как ограниченная производительность, низкая доступность ресурсов и другие. Благодаря этому инструменту можно повысить стабильность и надежность работы системы Windows, а также улучшить качество обслуживания пользователей.
|
||||||
|
|
||||||
|
### [nvidia gpu exporter](https://github.com/utkuozdemir/nvidia_gpu_exporter)
|
||||||
|
|
||||||
|
[Nvidia GPU exporter](https://github.com/utkuozdemir/nvidia_gpu_exporter) - позволяет получать всю информация о видеокарте
|
||||||
|
|
||||||
|
## Настройка Grafana
|
||||||
|
|
||||||
|
Далее необходимо настроить Grafana (WEB интерфейс доступен по адресу сервера c docker на порту 3000)
|
||||||
|
|
||||||
|
`Configuration -> Data source -> Add Prometheus`
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Для того чтобы убедиться что все работает корректно, можно скачать и добавить готовые dashboard в графана
|
||||||
|
|
||||||
|
- [Windows exporter dashboard](https://grafana.com/grafana/dashboards/14694-windows-exporter-dashboard/)
|
||||||
|
- [Nvidia GPU dashboard](https://grafana.com/grafana/dashboards/14574-nvidia-gpu-metrics/)
|
||||||
|
|
||||||
|
`Dashboard -> Import -> JSON file`
|
||||||
|
|
||||||
|
### Windows exporter dashboard
|
||||||
|

|
||||||
|
|
||||||
|
### Nvidia GPU exporter dashboard
|
||||||
|

|
||||||
|
|
||||||
|
## Создание собственной панели мониторинга
|
||||||
|
|
||||||
|
Теперь осталась создать свой dashboard и собрать в удобном виде все необходимые метрики
|
||||||
|
|
||||||
|
Для себя выбрал следующий тип отображения (в одну линию все необходимые данные)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## Итоги
|
||||||
|
|
||||||
|
Prometheus и Grafana дают возможность настроить удобный монитиринг для компьютерного клуба.
|
||||||
|
Легко установить, использовать, обслуживать.
|
||||||
|
|
||||||
|
Для большого числа компьютеров удобнее использовать Ansible для автоматической установки экспортеров и подготовки конфигурационного файла с помощью шаблонизатора.
|
||||||
|
|
||||||
|
Так же экспортеры можно встроить в установку с операционной системой, в таком случаи все новые компьютеры автоматически будут попопадть в систему мониторинга.
|
||||||
|
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 304 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 237 KiB |
|
After Width: | Height: | Size: 147 KiB |
|
After Width: | Height: | Size: 226 KiB |
@@ -23,6 +23,7 @@ export const Highlight = ({children, color}) => (
|
|||||||
В IT с 2014 года, нравится учиться и получать новые знания в данной области.
|
В IT с 2014 года, нравится учиться и получать новые знания в данной области.
|
||||||
В свободное время пишу простейшие программы и скрипты для оптимизации и автоматизации однообразных или рутинных задач.
|
В свободное время пишу простейшие программы и скрипты для оптимизации и автоматизации однообразных или рутинных задач.
|
||||||
Стараюсь писать инструкции, полезные заметки, интересные статьи у себя на сайте и сторонних ресурсах.
|
Стараюсь писать инструкции, полезные заметки, интересные статьи у себя на сайте и сторонних ресурсах.
|
||||||
|
|
||||||
Изучаю инструменты и методологии <Highlight color="#339665">DevOps</Highlight> и программирование на <Highlight color="#306998">Python</Highlight>.
|
Изучаю инструменты и методологии <Highlight color="#339665">DevOps</Highlight> и программирование на <Highlight color="#306998">Python</Highlight>.
|
||||||
|
|
||||||
Интересные для меня направления:
|
Интересные для меня направления:
|
||||||
|
|||||||