Использование журналов контроллера#
Для хранения служебных сообщений в виде журналов в Automation Controller используется syslog-ng.
Общие сведения#
syslog-ng
позволяет передавать данные журналов в различные приемники: файлы на локальных и сетевых дисках, серверы журналирования, а также во внешние агрегаторы журналов.
Если сетевой приемник становится недоступным, syslog-ng
сохраняет сообщения на локальном диске.
При восстановлении соединения сообщения автоматически передаются из локальной копии в приемник в том же порядке, в котором они были получены.
При каждом изменении настроек журналирования происходит следующее:
обновляется содержимое конфигурационного файла
/var/lib/awx/syslogng/syslog-ng.conf
;для применения новых настроек перезапускается служба
awx-syslogng
.
Совет
Настройки журналирования рекомендуется изменять через графический интерфейс.
syslog-ng
поддерживает два режима дисковой буферизации:
Надежная (reliable):
Сообщения из буфера удаляются только при получении от приемника подтверждения записи.
Низкая производительность (по сравнению с нормальной дисковой буферизацией).
Обеспечивается сохранность сообщений при перезагрузке и перезапуске службы, потере подключения к приемнику или сбоя в работе самого
syslog-ng
.
Обычная (normal):
Высокая производительность.
Возможна потеря сообщений в случае сбоя
syslog-ng
.
Если Automation Controller настроен на передачу журналов во внешний агрегатор, для syslog-ng
используются настройки, реализующие следующее поведение:
Исходящие сообщения помещаются непосредственно в очередь вывода, если она не заполнена.
Если очередь вывода заполнена (количество сообщений в очереди достигло значения
mem-buf-length
), а параметруreliable
присвоено значениеno
, сообщения помещаются в обычный дисковый буфер.
Если контроллер настроен на передачу журналов во внешний агрегатор с использованием HTTP/TCP/UDP, по умолчанию используются следующие настройки дисковой буферизации:
disk-buffer(
dir("/var/lib/awx")
disk-buf-size(1073741824)
qout-size(1000)
mem-buf-length(131072)
reliable(no)
)
Некоторые из указанных настроек можно изменить только через API (точка доступа – /api/v2/settings/logging/
):
dir
– полный путь к локальному каталогу для хранения журналов.Параметр API –
LOG_AGGREGATOR_MAX_DISK_USAGE_PATH
.disk-buf-size
– размер дискового буфера в байтах.Параметр API –
LOG_AGGREGATOR_ACTION_MAX_DISK_USAGE_GB
.Важно
При изменении через API значение этого параметра следует указывать в гигабайтах.
mem-buf-length
– максимальное количество сообщений в очереди.Параметр API –
LOG_AGGREGATOR_ACTION_QUEUE_SIZE
.
Агрегаторы#
Automation Controller может быть настроен на передачу журналов в следующие внешние агрегаторы:
В агрегатор передаются только сообщения, важность которых выше или равна указанной (в порядке возрастания важности):
DEBUG – все сообщения журнала;
INFO – информационные сообщения;
WARNING – предупреждения;
ERROR – информация об ошибках;
CRITICAL – информация о критических событиях.
По умолчанию в агрегатор передаются записи, полученные от всех внутренних регистраторов Automation Controller:
awx
– общие журналы сервера;activity_stream
– запись изменений объектов в Automation Controller;job_events
– данные, возвращаемые модулем обратного вызова Ansible;system_tracking
– данные о фактах, собранные модулемsetup
;broadcast_websocket
– данные об отправленных сообщениях по WebSocket.
Журналирование с помощью Logstash и OpenSearch#
Программное обеспечение Logstash используется для хранения записей журналов различных форматов. Поддержка форматов реализуется расширениями. Для визуализации хранящихся данных могут быть использованы различные внешние системы, например, OpenSearch, Elasticsearch и так далее.
Logstash может одновременно обрабатывать данные, полученные от разных поставщиков.
Чтобы настроить Automation Controller на передачу журналов в систему OpenSearch через агрегатор Logstash, выполните следующие действия:
В настройках журналирования задайте значения следующих параметров:
Агрегатор протоколирования:
http://10.10.10.10:5050
.Тип агрегатора ведения журнала: logstash.
Имя пользователя агрегатора ведения журнала:
aac
.Пароль/токен агрегатора ведения журнала: пароль для подключения к Logstash.
Протокол ведения журналов: HTTPS/HTTP.
Включить/отключить проверку сертификата HTTPS: выкл.
Порог уровня агрегатора ведения журнала: INFO.
Включить внешнее ведение журнала: вкл.
Установите Logstash согласно инструкции.
Для работы с Automation Controller отредактируйте файл конфигурации агрегатора
logstash.conf
:input { http { port => <listen_port> user => <username> password => "<password>" codec => json { charset => "UTF-8" } } } output { opensearch { hosts => ["https://<opensearch_host>:<opensearch_port>"] index => "<aac-index-name>-%{+YYYY.MM.dd}" user => "<opensearch_user>" password => "<opensearch_password>" ssl => true ssl_certificate_verification => false } }
input { http { port => <listen_port> user => <username> password => "<password>" codec => json { charset => "UTF-8" } } } filter { json { source => "message" } } output { opensearch { hosts => ["https://<opensearch_host>:<opensearch_port>"] index => "<aac-index-name>-%{+YYYY.MM.dd}" user => "<opensearch_user>" password => "<opensearch_password>" ssl => true ssl_certificate_verification => false } }
где:
listen_port
– порт, на котором Logstash будет ожидать соединение;username
– название учетной записи для подключения к серверу Logstash;password
– пароль для подключения к серверу Logstash;opensearch_host
– IP-адрес или FQDN сервера OpenSearch;opensearch_port
– порт сервера OpenSearch;opensearch_user
– название учетной записи пользователя для подключения к серверу OpenSearch;opensearch_password
– пароль для подключения к серверу OpenSearch.
Пример визуализации журналов Automation Controller в режиме Discover:
Журналирование с помощью Logstash и Elasticsearch#
Чтобы настроить Automation Controller на передачу журналов в систему Elasticsearch через агрегатор Logstash, в настройках журналирования укажите значения следующих параметров:
Агрегатор протоколирования – FQDN сервера Elasticsearch, например,
test-elastic.zapto.org
.Порт агрегатора протоколирования – порт сервера Elasticsearch, например,
50000
.Тип агрегатора ведения журнала – logstash.
Протокол ведения журналов – TCP.
Порог уровня агрегатора ведения журнала – INFO.
Включить внешнее ведение журнала – вкл.
Пример визуализации журналов контроллера в режиме Stream: