Логи
Semaphore пишет серверные логи в stdout, а логи задач и активности хранит в базе данных, централизуя ключевую информацию и избавляя от необходимости отдельно резервировать лог-файлы. Единственные данные, хранящиеся в файловой системе, — это кэш.
Серверный лог
Semaphore не пишет логи в файлы. Вместо этого все логи приложения выводятся в stdout.
Если Semaphore запущен как сервис systemd, просмотреть логи можно следующей командой:
journalctl -u semaphore.service -f
Если Semaphore запущен в контейнере Docker, просмотреть логи можно следующей командой:
docker logs -f my-semaphore-container
Это позволяет просматривать логи в реальном времени (потоково).
Лог активности
Лог активности фиксирует действия пользователей в Semaphore, включая:
- Добавление или удаление ресурсов (например, шаблонов, инвентарей, репозиториев).
- Добавление или удаление участников команды.
Pro-версия 2.10 и новее Pro
Semaphore Pro 2.10+ поддерживает зап ись лога активности и лога задач в файл. Чтобы включить эту возможность, добавьте следующую конфигурацию в ваш config.json:
{
"log": {
"events": {
"enabled": true,
"logger": {
"filename": "./events.log"
// other logger options
}
},
"tasks": {
"enabled": true,
"logger": {
"filename": "./tasks.log"
// other logger options
},
"result_logger": {
"filename": "./task_results.log"
// other logger options
}
}
}
}
Или сделайте это с помощью следующих переменных окружения:
export SEMAPHORE_EVENT_LOG_ENABLED=True
export SEMAPHORE_EVENT_LOGGER={"filename": "./events.log"}
export SEMAPHORE_TASK_LOG_ENABLED=True
export SEMAPHORE_TASK_LOGGER={"filename": "./tasks.log"}
Параметры логирования активности (событий)
Параметры логирования активности (событий) позволяют настроить, как Semaphore записывает действия пользователей и системные события в файл. Эти настройки управляют поведением логирования событий: включено ли оно, в каком формате записываются записи и какие параметры используются логгером. Когда логирование включено, действия пользователей (создание шаблонов, управление командами и т. д.) записываются в указанный лог-файл в соответствии с этими настройк ами.
| Параметр | Переменные окружения | Описание |
|---|---|---|
enabled | SEMAPHORE_EVENT_LOG_ENABLED | Включить логирование событий в файл. |
format | SEMAPHORE_EVENT_LOG_FORMAT | Формат записи лога. Оставьте пустым для raw-формата или укажите json. |
logger | SEMAPHORE_EVENT_LOGGER | Параметры логгера. |
Параметры логирования задач
Параметры логирования задач позволяют настроить, как Semaphore записывает сведения о выполнении задач в файл. Эти настройки управляют логированием событий, связанных с задачами: их запуск, завершение и статус выполнения. Когда логирование включено, все операции с задачами и их результаты записываются в указанный лог-файл в соответствии с этими настройками, обеспечивая подробный аудит истории выполнения задач.
| Параметр | Переменные окружения | Описание |
|---|---|---|
enabled | SEMAPHORE_TASK_LOG_ENABLED | Включить логирование задач в файл. |
format | SEMAPHORE_TASK_LOG_FORMAT | Формат записи лога. Оставьте пустым для raw-формата или укажите json. |
logger | SEMAPHORE_TASK_LOGGER | Параметры логгера. |
result_logger | SEMAPHORE_TASK_RESULT_LOGGER | Параметры логгера. |
Параметры логгера
| Параметр | Тип | Описание |
|---|---|---|
filename | String | Путь и имя файла, в который записываются логи. Резервные копии лог-файлов сохраняются в том же каталоге. Если значение пустое, используется processname-lumberjack.log во временном каталоге. |
maxsize | Integer | Максимальный размер лог-файла в мегабайтах, после которого выполняется ротация. По умолчанию — 100 мегабайт. |
maxage | Integer | Максимальное количество дней хранения старых лог-файлов на основе метки времени в их имени. Обратите внимание: день определяется как 24 часа и может не совпадать с календарными днями из-за перехода на летнее время, високосных секунд и т. п. По умолчанию старые лог-файлы не удаляются по возрасту. |
maxbackups | Integer | Максимальное количество хранимых старых лог-файлов. По умолчанию сохраняются все старые лог-файлы (хотя MaxAge всё равно может привести к их удалению). |
localtime | Boolean | Определяет, используется ли локальное время компьютера для форматирования меток времени в резервных файлах. По умолчанию используется UTC. |
compress | Boolean | Определяет, нужно ли сжимать ротированные лог-файлы с помощью gzip. По умолчанию сжатие не выполняется. |
Каждая строка в файле имеет следующий формат:
2024-01-03 12:00:34 user=234234 object=template action=delete
История задач
Semaphore хранит информацию о выполнении задач в базе данных. История задач предоставляет подробное представление всех выполненных задач, включая их статус и логи. Вы можете отслеживать задачи в реальном времени или просматривать исторические логи через веб-интерфейс.
Настройка хранения задач
По умолчанию Semaphore хранит все задачи в базе данных. Если вы запускаете большое количество задач, они могут занимать значительный объём дискового пространства.
Вы можете настроить, сколько задач хранится для каждого шаблона, одним из следующих способов:
- Переменная окружения
SEMAPHORE_MAX_TASKS_PER_TEMPLATE=30 - Параметр в
config.json{
"max_tasks_per_template": 30
}
Когда количество задач превышает этот лимит, самые старые логи задач автоматически удаляются.
Поддержка протокола syslog Enterprise
Semaphore может пересылать записи лога активности и лога задач во внешний коллектор syslog для долгосрочного хранения или централизованного мониторинга. По умолчанию пересылка в syslog отключена.
Настройте поддержку syslog в config.json:
"syslog": {
"enabled": true,
"network": "udp",
"address": "logs.example.com:514",
"tag": "semaphore"
}
Те же параметры доступны через переменные окружения, если вы предпочитаете не редактировать JSON-файл:
SEMAPHORE_SYSLOG_ENABLED=true
SEMAPHORE_SYSLOG_NETWORK=udp
SEMAPHORE_SYSLOG_ADDRESS=logs.example.com:514
SEMAPHORE_SYSLOG_TAG=semaphore
Параметры syslog
| Параметр | Переменные окружения | Описание |
|---|---|---|
enabled | SEMAPHORE_SYSLOG_ENABLED | Включить или выключить пересылку в syslog. |
network | SEMAPHORE_SYSLOG_NETWORK | Протокол для подключения к коллектору, например udp или tcp. |
address | SEMAPHORE_SYSLOG_ADDRESS | Адрес коллектора в формате host:port. |
tag | SEMAPHORE_SYSLOG_TAG | Необязательный идентификатор, добавляемый в начало каждого сообщения. |
После изменения этих значений перезапустите сервис Semaphore, чтобы применилось новое назначение syslog.
Интеграция с SIEM
Входы в систему и изменения учётных записей, например новые пользователи, роли и API-токены, можно записывать в журнал аудита. Semaphore Pro умеет отправлять его в SIEM.
Итоги
- Серверный лог: пишется в stdout; при работе под systemd доступен через
journalctl. - Лог активности и задач: отслеживает все действия пользователей. Опционально Pro 2.10+ может записывать их в файл.
- История задач: хранит логи выполнения задач в реальном времени и ист орические. Срок хранения настраивается для каждого шаблона.
- Журнал аудита: записывает входы в систему и изменения учётных записей. По умолчанию выключен.
Следование этим рекомендациям обеспечивает надлежащую прозрачность работы Semaphore UI при контроле использования хранилища и срока хранения логов.