Использование журналов контроллера#

Для хранения служебных сообщений в виде журналов в 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 может одновременно обрабатывать данные, полученные от разных поставщиков.

../../_images/logstash-opensearch-scheme-light.svg ../../_images/logstash-opensearch-scheme-dark.svg

Чтобы настроить Automation Controller на передачу журналов в систему OpenSearch через агрегатор Logstash, выполните следующие действия:

  1. В настройках журналирования задайте значения следующих параметров:

    • Агрегатор протоколирования: http://10.10.10.10:5050.

    • Тип агрегатора ведения журнала: logstash.

    • Имя пользователя агрегатора ведения журнала: aac.

    • Пароль/токен агрегатора ведения журнала: пароль для подключения к Logstash.

    • Протокол ведения журналов: HTTPS/HTTP.

    • Включить/отключить проверку сертификата HTTPS: выкл.

    • Порог уровня агрегатора ведения журнала: INFO.

    • Включить внешнее ведение журнала: вкл.

    ../../_images/aac-logstash-settings.png
  2. Установите Logstash согласно инструкции.

  3. Для работы с 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:

../../_images/logging-result-opensearch.png

Журналирование с помощью Logstash и Elasticsearch#

Чтобы настроить Automation Controller на передачу журналов в систему Elasticsearch через агрегатор Logstash, в настройках журналирования укажите значения следующих параметров:

  • Агрегатор протоколирования – FQDN сервера Elasticsearch, например, test-elastic.zapto.org.

  • Порт агрегатора протоколирования – порт сервера Elasticsearch, например, 50000.

  • Тип агрегатора ведения журналаlogstash.

  • Протокол ведения журналовTCP.

  • Порог уровня агрегатора ведения журналаINFO.

  • Включить внешнее ведение журнала – вкл.

Пример визуализации журналов контроллера в режиме Stream:

../../_images/logging-result-elastic.png