Гид по технологиям

Установка Sensu и Uchiwa на Ubuntu 20.04

• 6 min read • Инфраструктура • Обновлено 23 Nov 2025
Установка Sensu и Uchiwa на Ubuntu 20.04
Установка 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.
  • Доступ в интернет для добавления внешних репозиториев.

Подготовка системы

  1. Обновите индексы пакетов и установите утилиты:
sudo apt-get update -y
sudo apt-get install gnupg2 curl wget unzip -y
  1. Рекомендуется настроить базовый 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.

  1. Добавьте 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
  1. Установите RabbitMQ:
sudo apt-get install rabbitmq-server -y
  1. Создайте vhost и пользователя для Sensu и выдайте разрешения:
sudo rabbitmqctl add_vhost /sensu
sudo rabbitmqctl add_user sensu password
sudo rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"

Замените пароль на безопасный в продакшн‑среде и храните его в менеджере секретов.

  1. Установите 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 и установим пакет.

  1. Импорт 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
  1. Установка Sensu:
sudo apt-get install sensu -y

Примечание: репозиторий указывает “bionic” — это рабочая практика для некоторого ПО; проверьте совместимость пакетов и, при необходимости, используйте пакетный менеджер с осторожностью.

Базовая конфигурация Sensu

Sensu читает JSON‑файлы конфигурации из /etc/sensu/conf.d/. Создадим минимальные файлы для API, Redis и RabbitMQ.

  1. API
sudo nano /etc/sensu/conf.d/api.json

Добавьте:

{
  "api": {
    "host": "localhost",
    "bind": "0.0.0.0",
    "port": 4567
  }
}
  1. Redis
sudo nano /etc/sensu/conf.d/redis.json

Добавьте:

{
  "redis": {
    "host": "127.0.0.1",
    "port": 6379
  }
}
  1. 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) для нужных сервисов.

Доступ к дашборду

Откройте в браузере:

http://your-server-ip:3000

Вы должны увидеть интерфейс Uchiwa. В левой панели выберите «client», чтобы увидеть состояние sensu-server.

Изображение: логотип Sensu и обзор архитектуры

Интерфейс Sensu в Uchiwa

Статус клиента в Uchiwa

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).

Мини‑методология развёртывания (быстрая)

  1. Подготовка ОС, резервная копия конфигураций.
  2. Установка зависимостей (Redis, RabbitMQ).
  3. Установка Sensu и Uchiwa, базовая конфигурация.
  4. Запуск сервисов и проверка доступа к API/дашборду.
  5. Настройка checks и handlers, тестовые оповещения.
  6. Харднинг безопасности и мониторинг самого мониторинга.

Тесты и критерии приёмки (короткие тест‑кейсы)

  • 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 — могу подготовить.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро