Почему мониторинг выделенного сервера важен
Выделенные серверы от Valebyte предлагают беспрецедентную производительность, безопасность и возможности кастомизации. Однако с большой мощностью приходит необходимость в проактивном управлении. Без надежного мониторинга вы работаете вслепую, уязвимы для неожиданных сбоев, узких мест в производительности и исчерпания ресурсов. Получение информации в реальном времени о вашем ЦП, памяти, дисковых операциях ввода-вывода, сетевом трафике и метриках приложений имеет решающее значение для:
- Предотвращение простоев: Выявляйте и устраняйте проблемы до того, как они перерастут в сбои в работе сервисов.
- Оптимизация производительности: Определяйте ресурсоемкие процессы и узкие места, чтобы обеспечить максимальную эффективность работы ваших приложений.
- Планирование мощностей: Понимайте тенденции использования ресурсов для принятия обоснованных решений о масштабировании вашей инфраструктуры.
- Устранение неполадок: Быстро диагностируйте первопричину проблем с помощью исторических данных и подробных метрик.
- Безопасность: Отслеживайте необычную активность или всплески ресурсов, которые могут указывать на нарушение безопасности.
Независимо от того, запускаете ли вы высоконагруженные веб-приложения, требовательный игровой сервер, сложные базы данных, потоковые сервисы или конвейеры CI/CD, хорошо реализованное решение для мониторинга является вашей первой линией защиты и ключом к операционному совершенству.
Понимание Prometheus и Grafana
Prometheus и Grafana образуют мощный стек мониторинга с открытым исходным кодом, который стал отраслевым стандартом. Они идеально дополняют друг друга: Prometheus занимается сбором и хранением данных, а Grafana предоставляет уровень визуализации.
Prometheus: Сборщик метрик
Prometheus — это набор инструментов для мониторинга и оповещения систем с открытым исходным кодом, изначально разработанный в SoundCloud. Он разработан для обеспечения надежности и масштабируемости, что делает его идеальным для bare metal сред. Ключевые особенности включают:
- Многомерная модель данных: Данные временных рядов идентифицируются по имени метрики и парам ключ/значение.
- Гибкий язык запросов (PromQL): Позволяет выполнять мощные и точные запросы к собранным метрикам.
- Модель Pull: Prometheus активно собирает метрики с настроенных целей через заданные интервалы.
- Обнаружение сервисов: Интегрируется с различными механизмами для автоматического обнаружения новых целей.
- Оповещение: Интегрируется с Alertmanager для обработки оповещений на основе выражений PromQL.
Для мониторинга bare metal Prometheus обычно собирает метрики с 'экспортеров'. Наиболее распространенным экспортером для метрик на уровне хоста является Node Exporter.
Grafana: Мощный инструмент визуализации
Grafana — это веб-приложение для аналитики и интерактивной визуализации с открытым исходным кодом. Оно подключается к различным источникам данных, включая Prometheus, для создания красивых и информативных дашбордов. С Grafana вы можете:
- Создавать динамические дашборды: Создавайте настраиваемые дашборды с различными типами панелей (графики, одиночные статистики, таблицы, тепловые карты и т. д.).
- Исследовать данные: Детализируйте метрики с помощью мощных конструкторов запросов.
- Настраивать оповещения: Настраивайте оповещения прямо из ваших дашбордов на основе пороговых значений метрик.
- Сотрудничать: Делитесь дашбордами и разрешайте членам команды просматривать или редактировать их.
Предварительные требования для мониторинга bare metal
Прежде чем приступить к установке, убедитесь, что у вас есть следующее:
- Выделенный сервер от Valebyte: С правами root или sudo. Это руководство предполагает использование сервера Ubuntu 22.04 LTS, но шаги в значительной степени аналогичны для других дистрибутивов на основе Debian.
- Базовые знания командной строки Linux: Знакомство с командами, такими как
cd,mkdir,cp,wget,tar,systemctl. - Подключение к Интернету: Для загрузки необходимых пакетов и бинарных файлов.
- Настройка брандмауэра: Вам потребуется открыть определенные порты. В качестве примера мы будем использовать UFW (Uncomplicated Firewall).
- Требуемые порты:
- Prometheus: Порт по умолчанию
9090(для веб-интерфейса) - Node Exporter: Порт по умолчанию
9100(для метрик) - Grafana: Порт по умолчанию
3000(для веб-интерфейса)
- Prometheus: Порт по умолчанию
Сначала обновите список пакетов вашей системы:
sudo apt update
sudo apt upgrade -y
Установите curl и wget, если они еще не установлены, так как они полезны для загрузки файлов:
sudo apt install -y curl wget
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Пошаговое руководство по установке
Для простоты мы установим Prometheus, Node Exporter и Grafana на одном и том же выделенном сервере. Для более крупных развертываний вы можете запустить Node Exporter на нескольких серверах, а Prometheus/Grafana — на выделенном сервере мониторинга.
1. Настройка Prometheus
Создание пользователя и каталогов Prometheus
Для обеспечения наилучших практик безопасности запускайте Prometheus под выделенной учетной записью пользователя.
sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
Загрузка и установка Prometheus
Посетите страницу загрузки Prometheus, чтобы получить последнюю стабильную версию. На момент написания мы будем использовать версию-заполнитель.
# Проверьте последнюю версию на странице загрузки Prometheus
PROMETHEUS_VERSION="2.48.0" # Замените на последнюю стабильную версию
wget https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz
tar xvf prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz
cd prometheus-${PROMETHEUS_VERSION}.linux-amd64
sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
sudo cp -r consoles /etc/prometheus
sudo cp -r console_libraries /etc/prometheus
Настройка Prometheus
Создайте файл конфигурации Prometheus /etc/prometheus/prometheus.yml. Пока мы начнем с базовой конфигурации.
sudo nano /etc/prometheus/prometheus.yml
Добавьте следующее содержимое:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
Установите соответствующие права владения для файла конфигурации:
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
Создание службы Systemd для Prometheus
Это позволяет Prometheus работать как фоновая служба и автоматически запускаться при загрузке.
sudo nano /etc/systemd/system/prometheus.service
Добавьте следующее содержимое:
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target
Перезагрузите systemd, запустите Prometheus и включите его автозапуск при загрузке:
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
Проверка статуса Prometheus
sudo systemctl status prometheus
Вы должны увидеть статус 'active (running)' (активно (работает)). Вы также можете проверить логи:
sudo journalctl -u prometheus -f
2. Настройка Node Exporter
Node Exporter предоставляет широкий спектр аппаратных метрик и метрик ОС (ЦП, память, дисковые операции ввода-вывода, сетевая статистика и т. д.) с сервера, на котором он запущен.
Создание пользователя и каталогов Node Exporter
sudo useradd --no-create-home --shell /bin/false node_exporter
Загрузка и установка Node Exporter
Посетите страницу загрузки Prometheus для получения последней версии Node Exporter.
# Проверьте последнюю версию на странице загрузки Prometheus
NODE_EXPORTER_VERSION="1.7.0" # Замените на последнюю стабильную версию
wget https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
tar xvf node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
cd node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64
sudo mv node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
Создание службы Systemd для Node Exporter
sudo nano /etc/systemd/system/node_exporter.service
Добавьте следующее содержимое:
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
Перезагрузите systemd, запустите Node Exporter и включите его автозапуск при загрузке:
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
Проверка статуса Node Exporter
sudo systemctl status node_exporter
Вы должны увидеть статус 'active (running)' (активно (работает)). Вы также можете проверить метрики непосредственно с вашего сервера:
curl http://localhost:9100/metrics
Это выведет большое количество метрик в виде обычного текста.
3. Настройка Grafana
Установка Grafana
Grafana предоставляет официальные репозитории APT для простой установки.
sudo apt install -y apt-transport-https software-properties-common wget
wget -q -O - https://apt.grafana.com/gpg.key | sudo gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/trusted.gpg.d/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana -y
Запуск и включение Grafana
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Проверка статуса Grafana
sudo systemctl status grafana-server
Вы должны увидеть статус 'active (running)' (активно (работает)).
4. Настройка брандмауэра (UFW)
Чтобы получить доступ к веб-интерфейсам Prometheus и Grafana, вам необходимо открыть соответствующие порты в вашем брандмауэре. Предполагая, что UFW включен:
sudo ufw allow 9090/tcp comment 'Разрешить веб-интерфейс Prometheus'
sudo ufw allow 9100/tcp comment 'Разрешить метрики Node Exporter'
sudo ufw allow 3000/tcp comment 'Разрешить веб-интерфейс Grafana'
sudo ufw reload
Если у вас включен SSH (что рекомендуется), убедитесь, что порт 22 также открыт: sudo ufw allow 22/tcp.
Настройка Prometheus для сбора метрик с Node Exporter
Теперь, когда Node Exporter запущен и предоставляет метрики, нам нужно указать Prometheus собирать их. Отредактируйте файл конфигурации Prometheus:
sudo nano /etc/prometheus/prometheus.yml
Добавьте новый job_name в раздел scrape_configs для Node Exporter. Поскольку Node Exporter находится на том же сервере, мы будем использовать localhost:9100.
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100'] # Или замените localhost на IP вашего целевого сервера
Сохраните и выйдите из файла. Затем перезапустите Prometheus, чтобы применить изменения:
sudo systemctl restart prometheus
Настройка источника данных и дашборда Grafana
1. Доступ к веб-интерфейсу Grafana
Откройте веб-браузер и перейдите по адресу http://YOUR_SERVER_IP:3000. Вы должны увидеть страницу входа в Grafana.
Учетные данные для входа по умолчанию:
- Имя пользователя:
admin - Пароль:
admin
Вам будет предложено немедленно изменить пароль по умолчанию. Выберите надежный, безопасный пароль.
2. Добавление Prometheus в качестве источника данных
- В левом меню наведите курсор на значок шестеренки (Configuration) и нажмите Data sources (Источники данных).
- Нажмите Add data source (Добавить источник данных).
- Найдите и выберите Prometheus.
- В разделе 'HTTP' установите 'URL' на
http://localhost:9090(поскольку Prometheus находится на том же сервере). - Прокрутите вниз и нажмите Save & test (Сохранить и проверить). Вы должны увидеть сообщение, подтверждающее "Data source is working." (Источник данных работает).
3. Импорт дашборда Node Exporter
Сила Grafana заключается в ее обширной библиотеке дашбордов, созданных сообществом. Популярным дашбордом для метрик Node Exporter является Node Exporter Full (ID 1860).
- В левом меню наведите курсор на значок '+' (Create) и нажмите Import (Импорт).
- В поле 'Import via grafana.com' введите
1860и нажмите Load (Загрузить). - На следующем экране выберите ваш источник данных Prometheus из выпадающего списка.
- Нажмите Import (Импорт).
Теперь вы должны увидеть комплексный дашборд, отображающий различные метрики с вашего выделенного сервера, включая использование ЦП, памяти, дисковые операции ввода-вывода, сетевой трафик и многое другое!
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Тестирование вашей настройки мониторинга
Чтобы убедиться, что все работает как ожидалось:
- Веб-интерфейс Prometheus: Перейдите по адресу
http://YOUR_SERVER_IP:9090. Нажмите 'Status' -> 'Targets' (Статус -> Цели). Вы должны увидеть цели 'prometheus' и 'node_exporter' со статусом 'UP' (работает). В противном случае проверьте логи и конфигурацию Prometheus. - Метрики Node Exporter: Откройте
http://YOUR_SERVER_IP:9100/metricsв вашем браузере. Вы должны увидеть страницу, полную необработанных метрик. - Дашборд Grafana: Взаимодействуйте с дашбордом Node Exporter Full. Изменяйте временные диапазоны, наблюдайте за данными в реальном времени и убедитесь, что все панели отображают данные корректно.
Расширенные аспекты мониторинга
Оповещение с помощью Alertmanager
Хотя это руководство сосредоточено на базовой настройке, полное решение для мониторинга включает оповещение. Alertmanager Prometheus обрабатывает оповещения, отправленные клиентскими приложениями, группируя, дедуплицируя и маршрутизируя их в каналы уведомлений, такие как электронная почта, Slack, PagerDuty и т. д.
Мониторинг нескольких серверов
Чтобы отслеживать несколько выделенных серверов Valebyte, просто установите Node Exporter на каждый сервер, который вы хотите мониторить. Затем в файле prometheus.yml вашего центрального сервера Prometheus добавьте IP-адрес каждого сервера и порт Node Exporter (например, 192.168.1.10:9100) в список целей задания node_exporter. Не забудьте открыть порт 9100 на брандмауэре каждого отслеживаемого сервера.
Лучшие практики безопасности для мониторинга
- Брандмауэр: Открывайте порты мониторинга (9090, 9100, 3000) только для доверенных сетей или IP-адресов. Для Grafana рассмотрите возможность размещения ее за обратным прокси (например, Nginx или Apache) с HTTPS для безопасного доступа.
- Аутентификация: Всегда меняйте пароли Grafana по умолчанию. Рассмотрите возможность интеграции Grafana с внешним поставщиком аутентификации (LDAP, OAuth) для производственных сред.
- Выделенные пользователи: Запуск Prometheus и Node Exporter под непривилегированными пользователями (как показано в этом руководстве) ограничивает потенциальный ущерб в случае компрометации службы.
Устранение распространенных проблем
Даже при тщательном выполнении шагов вы можете столкнуться с проблемами. Вот как их диагностировать:
1. Служба не запускается (Prometheus, Node Exporter, Grafana)
- Проверьте статус службы:
Ищите 'active (running)' (активно (работает)) или конкретные сообщения об ошибках.sudo systemctl status prometheus sudo systemctl status node_exporter sudo systemctl status grafana-server - Изучите логи:
Логи — ваш лучший помощник для понимания того, почему служба не запустилась. Ищите ошибки разрешений, проблемы с файлом конфигурации или конфликты портов.sudo journalctl -u prometheus -f sudo journalctl -u node_exporter -f sudo journalctl -u grafana-server -f - Синтаксис файла конфигурации: Для Prometheus вы можете проверить
prometheus.ymlна наличие синтаксических ошибок:
Это покажет вам, есть ли какие-либо ошибки парсинга./usr/local/bin/promtool check config /etc/prometheus/prometheus.yml
2. Prometheus не собирает метрики с целей (отсутствуют метрики Node Exporter)
- Проверьте цели в веб-интерфейсе Prometheus: Перейдите по адресу
http://YOUR_SERVER_IP:9090/targets. Если Node Exporter указан, но имеет статус 'DOWN' (не работает), проверьте столбец 'Error' (Ошибка) для получения подсказок. - Брандмауэр на отслеживаемом сервере: Убедитесь, что порт 9100 (Node Exporter) открыт на сервере, где запущен Node Exporter. Если Prometheus находится на другом сервере, убедитесь, что его IP-адрес разрешен брандмауэром сервера Node Exporter.
- Node Exporter запущен: Убедитесь, что Node Exporter активен и доступен локально на отслеживаемом сервере:
Еслиsudo systemctl status node_exporter curl http://localhost:9100/metricscurlне работает, Node Exporter не запущен или не прослушивает ожидаемый порт/интерфейс. - Конфигурация Prometheus: Дважды проверьте запись
targetsв/etc/prometheus/prometheus.ymlна наличие опечаток (например,localhost:9100или правильный IP-адрес). Не забудьте перезапустить Prometheus после любых изменений конфигурации.
3. Grafana не отображает данные или "Ошибка источника данных"
- Подключение к источнику данных Prometheus: В Grafana перейдите в 'Configuration' (Конфигурация) -> 'Data sources' (Источники данных), нажмите на ваш источник данных Prometheus и нажмите 'Save & test' (Сохранить и проверить). Если это не удается, проверьте IP-адрес и порт сервера Prometheus в конфигурации источника данных Grafana.
- Брандмауэр на сервере Prometheus: Убедитесь, что порт 9090 (Prometheus) открыт на сервере, где запущен Prometheus, что позволяет Grafana подключаться.
- Prometheus запущен и собирает метрики: Убедитесь, что Prometheus запущен и активно собирает метрики Node Exporter (согласно шагу 2 по устранению неполадок). Если Prometheus не собирает данные, Grafana не сможет ничего отобразить.
- Конфигурация дашборда: Если некоторые панели пусты, убедитесь, что запросы внутри этих панелей верны и ссылаются на правильные метрики. Иногда дашбордам сообщества могут потребоваться небольшие корректировки для конкретных версий Prometheus или имен метрик.
4. Проблемы с разрешениями
Если службы не запускаются или не записывают данные, проверьте разрешения файлов и каталогов. Убедитесь, что выделенные пользователи (prometheus, node_exporter) владеют своими соответствующими каталогами и файлами, как это настроено в файлах службы systemd.
ls -la /usr/local/bin/prometheus
ls -la /etc/prometheus/prometheus.yml
ls -la /var/lib/prometheus
Систематически проверяя эти пункты, вы сможете решить большинство распространенных проблем, возникающих при настройке вашего стека мониторинга Prometheus и Grafana на выделенном сервере Valebyte.