Установка Sensu и Uchiwa на Ubuntu 20.04
Введение
Sensu — свободный и open‑source инструмент для мониторинга инфраструктуры и приложений. Он написан на Ruby, использует RabbitMQ для передачи сообщений и Redis для хранения временных данных и состояний. Sensu реализован в клиент‑серверной архитектуре: на каждом хосте, который нужно мониторить, устанавливается sensu-client; подлежат развёртыванию также sensu-server и sensu-api. Для визуализации часто используется Uchiwa — лёгкий веб‑дашборд.
Определение в одну строку: Sensu — это система проверки состояния и маршрутизации событий, RabbitMQ — брокер сообщений, Redis — in‑memory хранилище для состояний.
Важно: эта инструкция рассчитана на Ubuntu 20.04; многие команды подойдут и для других Debian‑производных, но репозитории и версии пакетов могут отличаться.
Что вы получите в итоге
- Запущенный Sensu Server, Sensu API, Sensu Client и Uchiwa.
- Подключённые RabbitMQ и Redis, корректные конфигурационные файлы.
- Базовый чеклист и правила безопасности для продакшн‑развёртывания.
Предварительные требования
- Сервер с Ubuntu 20.04 (x86_64). Достаточно 1–2 ГБ RAM для тестовой среды; для продакшна — рассчитывайте по нагрузке.
- Доступ root или пользователь с sudo.
- Доступ в интернет для добавления внешних репозиториев.
Подготовка системы
- Обновите индексы пакетов и установите утилиты:
sudo apt-get update -y
sudo apt-get install gnupg2 curl wget unzip -y- Рекомендуется настроить базовый firewall (ufw):
sudo apt-get install ufw -y
sudo ufw allow OpenSSH
sudo ufw enableПримечание: порты для Sensu/Uchiwa/RabbitMQ/Redis будут открываться позже по необходимости.
Установка RabbitMQ и Redis
Sensu использует RabbitMQ как брокер сообщений и Redis для хранения состояний и очередей. На Ubuntu 20.04 RabbitMQ в базовом репозитории может иметь старую версию, поэтому добавим официальный репозиторий Erlang/RabbitMQ.
- Добавьте GPG‑ключ Erlang Solutions и репозиторий:
wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | sudo apt-key add -
echo "deb http://binaries.erlang-solutions.com/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/erlang-solutions.list
sudo apt-get update -y- Установите RabbitMQ:
sudo apt-get install rabbitmq-server -y- Создайте vhost и пользователя для Sensu и выдайте разрешения:
sudo rabbitmqctl add_vhost /sensu
sudo rabbitmqctl add_user sensu password
sudo rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"Замените пароль на безопасный в продакшн‑среде и храните его в менеджере секретов.
- Установите Redis и включите автозапуск:
sudo apt-get install redis-server -y
sudo systemctl start redis-server
sudo systemctl enable redis-serverСоветы по надёжности: для production используйте конфигурацию Redis с persistence (AOF/RDB) и защитой паролем, настройте мониторинг latency и memory.
Установка Sensu (сервер и клиент)
Sensu в официальном репозитории Ubuntu может отсутствовать или быть старой версии. Добавим официальный репозиторий Sensu и установим пакет.
- Импорт GPG‑ключа Sensu и добавление репозитория:
wget -O- https://sensu.global.ssl.fastly.net/apt/pubkey.gpg | sudo apt-key add -
echo "deb https://sensu.global.ssl.fastly.net/apt bionic main" | sudo tee /etc/apt/sources.list.d/sensu.list
sudo apt-get update -y- Установка Sensu:
sudo apt-get install sensu -yПримечание: репозиторий указывает “bionic” — это рабочая практика для некоторого ПО; проверьте совместимость пакетов и, при необходимости, используйте пакетный менеджер с осторожностью.
Базовая конфигурация Sensu
Sensu читает JSON‑файлы конфигурации из /etc/sensu/conf.d/. Создадим минимальные файлы для API, Redis и RabbitMQ.
- API
sudo nano /etc/sensu/conf.d/api.jsonДобавьте:
{
"api": {
"host": "localhost",
"bind": "0.0.0.0",
"port": 4567
}
}- Redis
sudo nano /etc/sensu/conf.d/redis.jsonДобавьте:
{
"redis": {
"host": "127.0.0.1",
"port": 6379
}
}- RabbitMQ
sudo nano /etc/sensu/conf.d/rabbitmq.jsonДобавьте (замените пароль, если вы использовали другой):
{
"rabbitmq": {
"host": "127.0.0.1",
"port": 5672,
"vhost": "/sensu",
"user": "sensu",
"password": "password"
}
}Совет: храните секреты в шифрованном хранилище (Vault, Ansible Vault) и подставляйте их при развёртывании.
Установка и настройка Uchiwa (дашборд)
Uchiwa — веб‑интерфейс для просмотра клиентов и событий Sensu.
sudo apt-get install uchiwa -y
sudo nano /etc/sensu/uchiwa.jsonДобавьте:
{
"sensu": [
{
"name": "Sensu",
"host": "127.0.0.1",
"port": 4567,
"timeout": 10
}
],
"uchiwa": {
"host": "0.0.0.0",
"port": 3000,
"refresh": 10
}
}Убедитесь, что uchiwa слушает нужный интерфейс, и при необходимости ограничьте bind‑адрес для безопасности.
Добавление конфигурации клиента для сервера
Создадим файл клиента, чтобы мониторить сам сервер Sensu:
sudo nano /etc/sensu/conf.d/client.jsonДобавьте:
{
"client": {
"name": "sensu-server",
"address": "127.0.0.1",
"environment": "management",
"subscriptions": [
"dev",
"ubuntu"
],
"socket": {
"bind": "127.0.0.1",
"port": 3030
}
}
}Subscriptions — это способ группировки клиентов; используйте их для назначения проверок (checks) и handlers.
Запуск сервисов и проверка статусов
Запустите службы:
sudo systemctl start sensu-server
sudo systemctl start sensu-api
sudo systemctl start uchiwa
sudo systemctl start sensu-clientПроверьте статус всех служб:
sudo systemctl status sensu-server sensu-api sensu-client uchiwaЕсли всё в порядке, вы увидите Active: active (running) для нужных сервисов.
Доступ к дашборду
Откройте в браузере:
Вы должны увидеть интерфейс Uchiwa. В левой панели выберите «client», чтобы увидеть состояние sensu-server.



ALT примечание: изображения описаны для доступности; пути сохранены без изменений.
Рекомендации по безопасности и надёжности
- Замените учётные данные RabbitMQ на уникальные и сложные пароли.
- Включите TLS для RabbitMQ и Sensu API в продакшне.
- Настройте брандмауэр: откройте порты 4567 (Sensu API), 3000 (Uchiwa), 5672 (RabbitMQ), 6379 (Redis) только между доверенными хостами.
- Для Redis — включите авторизацию и ограничьте доступ по IP.
- Запустите службы под ограниченными пользователями и следите за правами доступа к конфигурационным файлам.
Альтернативные подходы и варианты развёртывания
- Docker / Docker Compose: удобно для тестов и изоляции. Контейнеры Redis, RabbitMQ, Sensu и Uchiwa можно собрать вместе.
- Kubernetes: используйте Helm‑чарты для развёртывания Sensu Enterprise/Community в k8s.
- Sensu Go vs Sensu Classic: инструкция выше описывает классический Sensu. Sensu Go — современная версия с другим стеком и моделью плагинов; рассмотрите её для новых проектов.
Пример docker‑compose для быстрой проверки (упрощённый):
version: '3'
services:
redis:
image: redis:6
rabbitmq:
image: rabbitmq:3-management
sensu:
image: sensu/sensu:latest
depends_on:
- redis
- rabbitmq
uchiwa:
image: sensu/uchiwa:latest
ports:
- "3000:3000"Отладка — частые ошибки и их решения
- Sensu не подключается к RabbitMQ: проверьте host/port/vhost/user/password и сетевую доступность (telnet host 5672).
- Uchiwa не отображает клиентов: убедитесь, что sensu‑api доступен по адресу и порту, указанным в uchiwa.json.
- Redis переполняется: проверьте memory и eviction policy; для больших нагрузок используйте внешние кластерные решения.
- Службы не запускаются: смотрите журналы systemd и файлы в /var/log/sensu/.
Команды для логов:
sudo journalctl -u sensu-server -f
sudo tail -n 200 /var/log/sensu/sensu-server.logЧеклист развёртывания — роль‑ориентированный
Для администратора (sysadmin):
- Установить и обновить систему.
- Настроить firewall, создать учётные записи и права.
- Обновить пароли RabbitMQ и Redis.
Для оператора (SRE):
- Проверить метрики памяти и нагрузки Redis/RabbitMQ.
- Настроить оповещения и handlers в Sensu.
- Подключить клиента(ов) для тестовых проверок.
Для разработчика (развертывание checks):
- Создать checks и handlers.
- Проверить корректность JSON‑конфигураций.
- Провести нагрузочное тестирование оповещений.
Критерии приёмки
- Sensu API принимает запросы на порт 4567 и отвечает без ошибок.
- Uchiwa доступен по порту 3000 и отображает хотя бы одного клиента.
- RabbitMQ имеет созданный vhost /sensu и пользователя sensu с правами.
- Redis запущен и отвечает на запросы.
- Все сервисы находятся в состоянии active (running).
Мини‑методология развёртывания (быстрая)
- Подготовка ОС, резервная копия конфигураций.
- Установка зависимостей (Redis, RabbitMQ).
- Установка Sensu и Uchiwa, базовая конфигурация.
- Запуск сервисов и проверка доступа к API/дашборду.
- Настройка checks и handlers, тестовые оповещения.
- Харднинг безопасности и мониторинг самого мониторинга.
Тесты и критерии приёмки (короткие тест‑кейсы)
- TC1: Проверка статуса служб — ожидается Active: running.
- TC2: Звонок на API Sensu — получен 200 OK.
- TC3: В Uchiwa виден клиент sensu-server.
- TC4: Handler корректно срабатывает при ложной проблеме (fire off event).
Часто задаваемые вопросы
Q: Можно ли использовать Sensu на Windows‑хостах?
A: Да — есть клиентские сборки и плагины, но чаще используют unix‑подобные агенты или SNMP/WinRM прокси.
Q: Нужно ли шифровать соединения между компонентами?
A: Рекомендуется для продакшна: TLS между клиентами/сервером и TLS для RabbitMQ.
Q: Как масштабировать Sensu?
A: Масштабирование достигается горизонтальным добавлением серверов/инстансов, использованием отказоустойчивого RabbitMQ и кластерного Redis или внешнего сториджа.
Заключение
Вы успешно установили и настроили Sensu и Uchiwa на Ubuntu 20.04. Дальше рекомендуем:
- перевести секреты в менеджер секретов,
- добавить защищённый канал связи (TLS),
- автоматически разворачивать конфигурации через Ansible/Chef/Terraform.
Если нужны примеры checks/handlers или docker/k8s‑манифесты для Sensu Go — могу подготовить.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента