Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация

Что
Один из лучших способов отслеживания проблем в среде выполнения API — регистрация сообщений. Вы можете подключить и настроить политику регистрации сообщений в своем API для регистрации пользовательских сообщений на локальном диске (только Edge для частного облака) или в системном журнале.
Образцы
Системный журнал
<MessageLogging name="LogToSyslog"> <Syslog> <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message> <Host>logs-01.loggly.com</Host> <Port>514</Port> <Protocol>TCP</Protocol> <FormatMessage>true</FormatMessage> <DateFormat>yyyy-MM-dd'T'HH:mm:ss.SSSZ</DateFormat> </Syslog> <logLevel>ALERT</logLevel> </MessageLogging>
Обычно тип политики MessageLogging используется для входа в учетную запись системного журнала. При настройке системного журнала прокси-сервер API будет пересылать сообщения журнала из Apigee Edge на удаленный сервер системного журнала. У вас уже должен быть доступен сервер системного журнала. В противном случае доступны общедоступные службы управления журналами, такие как Splunk, Sumo Logic и Loggly. см. Настройка сторонних служб управления журналами .
Например, представьте, что вам нужно регистрировать информацию о каждом сообщении запроса, которое ваш API получает от потребительских приложений. Значение 3f509b58
представляет собой значение ключа, специфичное для службы loggly. Если у вас есть учетная запись loggly, замените свой ключ loggly. Создаваемое сообщение журнала будет заполнено четырьмя значениями: организацией, прокси-сервером API и именем среды, связанной с транзакцией, а также значением параметра запроса в сообщении запроса.
Если у вас есть развертывание Edge для частного облака, вы также можете записывать сообщения журнала в файл.
Системный журнал через TLS/SSL
<MessageLogging name="LogToSyslog"> <Syslog> <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message> <Host>logs-01.loggly.com</Host> <Port>6514</Port> <Protocol>TCP</Protocol> <FormatMessage>true</FormatMessage> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> <DateFormat>yyMMdd-HH:mm:ss.SSS</DateFormat> </Syslog> <logLevel>WARN</logLevel> </MessageLogging>
Вы можете отправлять сообщения сторонним поставщикам журналов сообщений через TLS/SSL, добавив блок <SSLInfo>
.
Поворот файла: размер
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>SIZE</FileRotationType> <MaxFileSizeInMB>10</MaxFileSizeInMB> <MaxFilesToRetain>10</MaxFilesToRetain> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Ротация файлов в зависимости от размера файла.
Ротация файлов: время
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>TIME</FileRotationType> <RotationFrequency unit="minute">10</RotationFrequency> <MaxFilesToRetain>10</MaxFilesToRetain> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Ротация файлов по времени.
Ротация файлов: время и размер
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>TIME_SIZE</FileRotationType> <MaxFileSizeInMB>10</MaxFileSizeInMB> <MaxFilesToRetain>10</MaxFilesToRetain> <RotationFrequency unit="minute">10</RotationFrequency> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Ротация файлов в зависимости от времени и размера.
Потоковая поддержка
<MessageLogging name="LogPolicy"> <File> .... .... </File> <BufferMessage>true</BufferMessage> </MessageLogging>
Потоковое ведение журнала сообщений
Ссылка на элемент
Используйте следующие элементы для настройки типа политики MessageLogging.
Имя поля | Поле Описание | |
---|---|---|
Локальное место назначения файла. (Журналирование файлов поддерживается только в развертываниях Edge для частного облака.) Информацию о том, где хранятся файлы, см. в разделе Расположение файла журнала в Edge для частного облака . | Message | Создайте сообщение для отправки в файл журнала, объединив текст с переменными для сбора нужной информации. См. Образцы . |
FileName | Базовое имя файла журнала. Не указывайте путь к файлу. Например, этот элемент FileName указывает путь к файлу и является недопустимым:<FileName>/opt/apigee/var/log/messages/mylog.log</FileName> Этот код указывает только имя файла и действителен: <FileName>mylog.log</FileName> Информацию о том, где хранится файл, см. в разделе Расположение файла журнала в Edge для частного облака . | |
FileRotationOptions | ||
rotateFileOnStartup | Атрибут. Допустимые значения: Если установлено значение true, файл журнала будет ротироваться каждый раз при перезапуске механизма обмена сообщениями. | |
FileRotationType | Указывает политику ротации ( size или time ) файла журнала. | |
MaxFileSizeInMB | (При выборе size в качестве типа ротации) Указывает размер файла журнала, при котором сервер перемещает сообщения журнала в отдельный файл. После того, как файл журнала достигнет указанного размера, сервер переименовывает текущий файл журнала. | |
RotationFrequency | (При выборе time в качестве типа ротации) Указывает время в минутах, в течение которого сервер перемещает сообщения журнала в отдельный файл. По истечении указанного интервала текущий файл журнала переименовывается. | |
MaxFilesToRetain | Указывает максимальное количество файлов, которые будут храниться в контексте настроек ротации. Значение по умолчанию — 8 . Если вы укажете ноль (0), файлы журналов будут храниться неопределенно долго, но с учетом ваших настроек ротации файлов, однако ни один из файлов не будет удален или переименован. Поэтому, чтобы избежать будущих ошибок переполнения диска, установите для этого значения значение больше нуля или внедрите обычную автоматизированную систему очистки или архивирования старых сохраненных файлов журналов. | |
BufferMessage | Если для вашего прокси включена потоковая передача HTTP , сообщения запроса/ответа не буферизуются. Если вы хотите регистрировать содержимое, требующее анализа сообщения потока, установите для BufferMessage значение true. Пример см. на вкладке образца «С поддержкой потоков». По умолчанию: ложь | |
Назначение системного журнала. Чтобы отправить системный журнал в Splunk, Sumo Logic или Loggly, см. раздел Настройка сторонних служб управления журналами . | Message | Создайте сообщение для отправки в системный журнал, объединив текст с переменными для сбора нужной информации. См. Образцы . Примечание. Переменные ответа не будут доступны в PostClientFlow после потока ошибок. Используйте переменные сообщения для регистрации информации об ответах как для ошибок, так и для ситуаций успеха. См. также Примечания по использованию . |
Host | Имя хоста или IP-адрес сервера, на который должен отправляться системный журнал. Если вы не включите этот элемент, по умолчанию используется localhost. | |
Port | Порт, на котором работает системный журнал. Если вы не включите этот элемент, значение по умолчанию — 514. | |
Protocol | TCP или UDP (по умолчанию). Хотя UDP более эффективен, протокол TCP гарантирует доставку журнала сообщений на сервер системного журнала. Для отправки сообщений системного журнала через TLS/SSL поддерживается только TCP. | |
FormatMessage | Необязательно, но для использования с Loggly требуется Этот элемент позволяет вам управлять форматом контента, сгенерированного Apigee, добавляемого к сообщению. Если установлено значение true, к сообщению системного журнала добавляется фиксированное количество символов, что позволяет фильтровать эту информацию из сообщений. Вот пример фиксированного формата: Информация, генерируемая Apigee, включает в себя:
Если установлено значение false (по умолчанию), к сообщению не добавляются эти фиксированные символы. | |
PayloadOnly | Этот элемент устанавливает формат сообщений, сгенерированных Apigee, так, чтобы они содержали только тело сообщения системного журнала без добавленных символов, указанных в FormatMessage . Если вы не включите этот элемент или оставите его пустым, значение по умолчанию будет См. ФорматСообщение . | |
DateFormat | Необязательный. Строка шаблона форматирования, используемая для форматирования отметки времени для каждого сообщения журнала. По умолчанию Apigee использует | |
SSLInfo | Позволяет регистрировать сообщения через SSL/TLS. Используйте с подэлементом Если вы не включите этот элемент или оставите его пустым, значение по умолчанию будет ложным (без TLS/SSL). <SSLInfo> <Enabled>true</Enabled> </SSLInfo> Вы можете настроить тег <SSLInfo> так же, как и в TargetEndpoint, включая включение двустороннего TLS/SSL, как описано в справочнике по настройке прокси-сервера API . Поддерживается только протокол TCP . | |
logLevel | Необязательный. Допустимые значения: Установите определенный уровень информации, которая будет включена в журнал сообщений. Если вы используете элемент |
Схемы
Примечания по использованию
Прикрепляя политику MessageLogging к потоку прокси-сервера API, рассмотрите возможность размещения ее в ответе ProxyEndpoint в специальном потоке PostClientFlow. PostClientFlow выполняется после отправки ответа запрашивающему клиенту, что гарантирует, что все метрики доступны для регистрации. Подробную информацию об использовании PostClientFlow см. в справочнике по настройке прокси-сервера API .
PostClientFlow особенный по двум причинам:
- Он выполняется только как часть потока ответов.
- Это единственный поток, выполняемый после того, как прокси-сервер переходит в состояние ошибки.
Поскольку он выполняется независимо от того, успешно или нет прокси-сервер, вы можете поместить политики MessageLogging в PostClientFlow и быть уверенными, что они всегда выполняются.
На следующем изображении трассировки показана политика MessageLogging, выполняемая как часть PostClientFlow после выполнения DefaultFaultRule:
В этом примере политика проверки ключа API вызвала ошибку из-за недопустимого ключа.
Ниже показано определение ProxyEndpoint, включающее PostClientFlow:
<ProxyEndpoint name="default"> ... <PostClientFlow> <Response> <Step> <Name>Message-Logging-1</Name> </Step> </Response> </PostClientFlow> ... </ProxyEndpoint>
Edge регистрирует сообщения в виде простого текста, и вы можете настроить ведение журнала, включив в него переменные, такие как дата и время получения запроса или ответа, идентификатор пользователя в запросе, исходный IP-адрес, с которого был отправлен запрос, и т. д. Edge регистрирует сообщения асинхронно, что означает, что в ваш API не возникает задержек, которые могут быть вызваны блокировкой вызовов.
Политика MessageLogging записывает зарегистрированные сообщения в память в буфер. Регистратор сообщений считывает сообщения из буфера, а затем записывает их в указанное вами место назначения. Каждый пункт назначения имеет свой собственный буфер.
Если скорость записи в буфер превысит скорость чтения, буфер переполнится и регистрация не удастся. Если это произойдет, в файле журнала вы можете найти сообщение, содержащее следующее:
Log message size exceeded. Increase the max message size setting
Если вы столкнулись с этой проблемой в Edge для частного облака 4.15.07 и более ранних версий, найдите файл message-logging.properties
и воспользуйтесь этим решением:
Увеличьте значение свойства max.log.message.size.in.kb
(значение по умолчанию = 128 КБ) в файле message-logging.properties
.
Для Edge для частного облака 4.16.01 и более поздних версий установите параметр conf/message-logging.properties+max. log.message.size.in.kb
в файле /opt/apigee/customer/application/message-processor.properties и перезапустите процессор сообщений. Обратите внимание, что это свойство изначально закомментировано по умолчанию.
Примечание. Переменные ответного сообщения в Edge недоступны из потока ошибок. Эти переменные также недоступны в PostClientFlow, если предыдущий поток был потоком ошибок. Если вы хотите регистрировать информацию об ответе из PostClientFlow, используйте объект сообщения . Вы можете использовать этот объект для получения заголовков и другой информации из ответа независимо от того, произошла ли ошибка. См. Переменные сообщения для получения дополнительной информации и примера.
Управление меткой времени сообщения журнала в Edge для частного облака
По умолчанию временная метка во всех сообщениях журнала имеет следующий формат:
yyyy-MM-dd'T'HH:mm:ss.SSSZ
Это общесистемное значение по умолчанию можно переопределить для мест назначения системного журнала с помощью элемента DateFormat
. Поведение этого шаблона описано в документации Java-класса SimpleDateFormat . Согласно этому определению, yyyy
будет заменен четырехзначным годом, MM
будет заменен двухзначным номером месяца и так далее. Приведенный выше формат может привести к строке следующего вида:
2022-09-28T22:38:11.721+0000
Вы можете использовать свойство conf_system_apigee.syslogger.dateFormat в Edge Message Processor для управления этим форматом. Например, изменив формат сообщения на:
yy/MM/dd'T'HH:mm:ss.SSSZ
..замена тире косой чертой и сокращение до двухзначного года записывает временную метку в виде:
22/09/28T22:38:11.721+0000
Чтобы изменить формат:
- Откройте файл message-processor.properties в редакторе. Если файл не существует, создайте его:
> vi /opt/apigee/customer/application/message-processor.properties - Установите свойства по желанию:
conf_system_apigee.syslogger.dateFormat=гг/ММ/дд'Т'ЧЧ:мм:сс.SSSZ - Сохраните изменения.
- Убедитесь, что файл свойств принадлежит пользователю apigee:
> chown apigee:apigee /opt/apigee/customer/application/message-processor.properties - Перезапустите пограничный процессор сообщений:
> /opt/apigee/apigee-service/bin/apigee-service перезапуск процессора Edge-message
Расположение файла журнала в Edge для частного облака
Edge для частного облака 4.16.01 и более поздних версий
По умолчанию журналы сообщений частного облака расположены в следующем каталоге на узлах процессора сообщений:
/opt/apigee/var/log/edge-message-processor/messagelogging/org_name/environment/api_proxy_name/revision/logging_policy_name/
Вы можете изменить местоположение журнала по умолчанию, изменив свойства в файле message-logging.properties на процессорах сообщений:
- bin_setenv_data_dir — устанавливает корневой путь для хранения файлов журналов. Например,
bin_setenv_data_dir=/opt/apigee/var/log
- conf_message-logging_log.root.dir — если вы установите относительный путь, например
conf/message-logging.properties+log.root.dir=custom/folder/
, the path is appended to the bin_setenv_data_dir location.
Если вы установите для этого параметра абсолютный путь, напримерconf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages
, журналы сообщений будут храниться в/opt/apigee/var/log/messages/messagelog/
. Абсолютный путь имеет приоритет надbin_setenv_data_dir
.
Обратите внимание, что вам необходимо ссылаться на это свойство как conf/message-logging.properties+log.root.dir, поскольку по умолчанию оно закомментировано. Дополнительную информацию см. в разделе Установка токена, который в настоящее время закомментирован .
Если вы хотите хранить файлы журналов в плоской файловой структуре, чтобы все файлы журналов помещались в один и тот же каталог, установите для параметра conf/message-logging.properties+enable.flat.directory.structure значение true в файле message-logging.properties. Сообщения хранятся в каталоге, указанном вышеприведенными свойствами, а имена файлов принимают форму {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename}
.
Чтобы установить эти свойства:
- Откройте файл message-processor.properties в редакторе. Если файл не существует, создайте его:
> vi /opt/apigee/customer/application/message-processor.properties - Установите свойства по желанию:
conf/message-logging.properties+log.root.dir= /opt/apigee/var/log/messages - Сохраните изменения.
- Убедитесь, что файл свойств принадлежит пользователю apigee:
> chown apigee:apigee /opt/apigee/customer/application/message-processor.properties - Перезапустите компонент Edge:
> /opt/apigee/apigee-service/bin/apigee-service перезапуск процессора Edge-message
Edge для частного облака 4.15.07 и более ранних версий
По умолчанию журналы сообщений располагаются в следующем месте на процессорах сообщений:
/opt/apigee4/var/log/apigee/message-processor/messagelog/{org}/{environment}/{api_proxy_name}/{revision}/{logging_policy_name}/
Вы можете изменить расположение журнала по умолчанию, изменив следующие свойства в файле message-logging.properties на процессорах сообщений:
- data.dir — устанавливает корневой путь для хранения файлов журналов. Например, data.dir=/opt/apigee4/var/log.
- log.root.dir — если вы установили относительный путь, например log.root.dir=custom/folder/, путь добавляется к местоположению data.dir.
Например, комбинация этих двух свойств установит каталог журнала /opt/apigee4/var/log/custom/folder/messagelog/ (обратите внимание, что /messagelog добавляется автоматически).
Если вы установите для этого параметра абсолютный путь, например log.root.dir=/opt/apigee4/var/log/messages , журналы сообщений будут храниться в /opt/apigee4/var/log/messages/messagelog/. Абсолютный путь в log.root.dir имеет приоритет над data.dir .
Если вы хотите хранить файлы журналов в плоской файловой структуре, чтобы все файлы журналов помещались в один и тот же каталог, установите для свойства Enable.flat.directory.structure значение true в файле message-logging.properties на процессорах сообщений. Сообщения хранятся в каталоге, указанном вышеприведенными свойствами, а имена файлов принимают форму {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename} .
Значения по умолчанию для переменных в шаблоне сообщения
Значения по умолчанию можно указать для каждой переменной в шаблоне сообщения отдельно. Например, если переменную request.header.id
разрешить невозможно, ее значение заменяется значением unknown
.
<Message>This is a test message. id = {request.header.id:unknown}</Message>
Для всех неразрешенных переменных можно указать общее значение по умолчанию, установив атрибут defaultVariableValue
в элементе Message
:
<Message defaultVariableValue="unknown">This is a test message. id = {request.header.id}</Message>
Настройка сторонних служб управления журналами
Политика MessageLogging позволяет отправлять сообщения системного журнала в сторонние службы управления журналами, такие как Splunk, Sumo Logic и Loggly. Если вы хотите отправить системный журнал в одну из этих служб, см. документацию этой службы, чтобы настроить хост, порт и протокол службы, а затем соответствующим образом установите элемент Syslog в этой политике.
См. следующую документацию для настройки стороннего управления журналами:
- Splunk (выберите версию продукта)
Также ознакомьтесь с этим сообщением сообщества Apigee: https://community.apigee.com/content/kbentry/13298/log-messages-into-splunk.html. - Сумо Логика
- Также ознакомьтесь с этим сообщением сообщества Apigee: https://community.apigee.com/questions/5226/setting-up-logging-with-sumo-logic-that-host-shou.html.
- Полный пример использования Sumo Logic в качестве службы ведения журналов см. в следующем сообщении сообщества Apigee. В решении используется единая политика JavaScript для отправки запросов HTTP POST к сборщику исходного кода HTTP Sumo Logic: https://community.apigee.com/articles/32286/logging-to-sumo-logic-using-javascript-and-http.html .
- Логгли
При использовании Loggly в политике требуется<FormatMessage>true</FormatMessage>
как дочерний элемент<Syslog>
.
Также ознакомьтесь с этим сообщением сообщества Apigee для получения дополнительной информации о регистрации сообщений в Loggly: https://community.apigee.com/content/kbentry/14798/log-messages-into-loggly.html
Ссылка на ошибку
В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые устанавливаются Edge, когда эта политика вызывает ошибку. Эту информацию важно знать, если вы разрабатываете правила обработки ошибок. Дополнительные сведения см. в разделах Что нужно знать об ошибках политики и Обработка ошибок .
Ошибки выполнения
Эти ошибки могут возникнуть при выполнении политики.
Код неисправности | Статус HTTP | Причина |
---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed | 500 | См. строку ошибки. |
Ошибки развертывания
Эти ошибки могут возникнуть при развертывании прокси-сервера, содержащего эту политику.
Название ошибки | Причина | Исправить |
---|---|---|
InvalidProtocol | Развертывание политики MessageLogging может завершиться с ошибкой из-за этой ошибки, если протокол, указанный в элементе <Protocol> , недействителен. Допустимые протоколы: TCP и UDP. Для отправки сообщений системного журнала через TLS/SSL поддерживается только TCP. | build |
InvalidPort | Развертывание политики регистрации сообщений может завершиться с ошибкой из-за этой ошибки, если номер порта не указан в элементе <Port> или если он недействителен. Номер порта должен быть целым числом, большим нуля. | build |
Переменные неисправности
Эти переменные устанавливаются при возникновении ошибки во время выполнения. Дополнительные сведения см. в разделе Что нужно знать об ошибках политики .
Переменные | Где | Пример |
---|---|---|
fault.name=" fault_name " | fault_name — это имя ошибки, как указано в таблице ошибок времени выполнения выше. Имя неисправности — это последняя часть кода неисправности. | fault.name Matches "StepDefinitionExecutionFailed" |
messagelogging. policy_name .failed | policy_name — указанное пользователем имя политики, вызвавшей ошибку. | messagelogging.ML-LogMessages.failed = true |
Пример ответа об ошибке
{ "fault":{ "detail":{ "errorcode":"steps.messagelogging.StepDefinitionExecutionFailed" }, "faultstring":"Execution failed" } }
Пример правила неисправности
<FaultRule name="MessageLogging"> <Step> <Name>ML-LogMessages</Name> <Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition> </Step> <Condition>(messagelogging.ML-LogMessages.failed = true) </Condition> </FaultRule>
Переменные потока
Следующие переменные заполняются в случае сбоя политики.
-
messagelogging.failed
-
messagelogging.{stepdefinition-name}.failed
Связанные темы
- Переменные, предоставляемые Edge: справочник по переменным
Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация

Что
Один из лучших способов отслеживать проблемы в среде выполнения API — регистрировать сообщения. Вы можете подключить и настроить политику регистрации сообщений в своем API для регистрации пользовательских сообщений на локальном диске (только Edge для частного облака) или в системном журнале.
Образцы
Системный журнал
<MessageLogging name="LogToSyslog"> <Syslog> <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message> <Host>logs-01.loggly.com</Host> <Port>514</Port> <Protocol>TCP</Protocol> <FormatMessage>true</FormatMessage> <DateFormat>yyyy-MM-dd'T'HH:mm:ss.SSSZ</DateFormat> </Syslog> <logLevel>ALERT</logLevel> </MessageLogging>
Обычно тип политики MessageLogging используется для входа в учетную запись системного журнала. При настройке системного журнала прокси-сервер API будет пересылать сообщения журнала из Apigee Edge на удаленный сервер системного журнала. У вас уже должен быть доступен сервер системного журнала. В противном случае доступны общедоступные службы управления журналами, такие как Splunk, Sumo Logic и Loggly. см. Настройка сторонних служб управления журналами .
Например, представьте, что вам нужно регистрировать информацию о каждом сообщении запроса, которое ваш API получает от потребительских приложений. Значение 3f509b58
представляет собой значение ключа, специфичное для службы loggly. Если у вас есть учетная запись loggly, замените свой ключ loggly. Создаваемое сообщение журнала будет заполнено четырьмя значениями: организацией, прокси-сервером API и именем среды, связанной с транзакцией, а также значением параметра запроса в сообщении запроса.
Если у вас есть развертывание Edge для частного облака, вы также можете записывать сообщения журнала в файл.
Системный журнал через TLS/SSL
<MessageLogging name="LogToSyslog"> <Syslog> <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message> <Host>logs-01.loggly.com</Host> <Port>6514</Port> <Protocol>TCP</Protocol> <FormatMessage>true</FormatMessage> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> <DateFormat>yyMMdd-HH:mm:ss.SSS</DateFormat> </Syslog> <logLevel>WARN</logLevel> </MessageLogging>
Вы можете отправлять сообщения сторонним поставщикам журналов сообщений через TLS/SSL, добавив блок <SSLInfo>
.
Поворот файла: размер
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>SIZE</FileRotationType> <MaxFileSizeInMB>10</MaxFileSizeInMB> <MaxFilesToRetain>10</MaxFilesToRetain> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Ротация файлов в зависимости от размера файла.
Ротация файлов: время
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>TIME</FileRotationType> <RotationFrequency unit="minute">10</RotationFrequency> <MaxFilesToRetain>10</MaxFilesToRetain> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Ротация файлов по времени.
Ротация файлов: время и размер
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>TIME_SIZE</FileRotationType> <MaxFileSizeInMB>10</MaxFileSizeInMB> <MaxFilesToRetain>10</MaxFilesToRetain> <RotationFrequency unit="minute">10</RotationFrequency> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Ротация файлов в зависимости от времени и размера.
Потоковая поддержка
<MessageLogging name="LogPolicy"> <File> .... .... </File> <BufferMessage>true</BufferMessage> </MessageLogging>
Потоковое ведение журнала сообщений
Ссылка на элемент
Используйте следующие элементы для настройки типа политики MessageLogging.
Имя поля | Поле Описание | |
---|---|---|
Локальное место назначения файла. (Журналирование файлов поддерживается только в развертываниях Edge для частного облака.) Информацию о том, где хранятся файлы, см. в разделе Расположение файла журнала в Edge для частного облака . | Message | Создайте сообщение для отправки в файл журнала, объединив текст с переменными для сбора нужной информации. См. Образцы . |
FileName | Базовое имя файла журнала. Не указывайте путь к файлу. Например, этот элемент FileName указывает путь к файлу и является недопустимым:<FileName>/opt/apigee/var/log/messages/mylog.log</FileName> Этот код указывает только имя файла и действителен: <FileName>mylog.log</FileName> Информацию о том, где хранится файл, см. в разделе Расположение файла журнала в Edge для частного облака . | |
FileRotationOptions | ||
rotateFileOnStartup | Атрибут. Допустимые значения: Если установлено значение true, файл журнала будет ротироваться каждый раз при перезапуске механизма обмена сообщениями. | |
FileRotationType | Указывает политику ротации ( size или time ) файла журнала. | |
MaxFileSizeInMB | (При выборе size в качестве типа ротации) Указывает размер файла журнала, при котором сервер перемещает сообщения журнала в отдельный файл. После того, как файл журнала достигнет указанного размера, сервер переименовывает текущий файл журнала. | |
RotationFrequency | (При выборе time в качестве типа ротации) Указывает время в минутах, в течение которого сервер перемещает сообщения журнала в отдельный файл. По истечении указанного интервала текущий файл журнала переименовывается. | |
MaxFilesToRetain | Указывает максимальное количество файлов, которые будут храниться в контексте настроек ротации. Значение по умолчанию — 8 . Если вы укажете ноль (0), файлы журналов будут храниться неопределенно долго, но с учетом ваших настроек ротации файлов, однако ни один из файлов не будет удален или переименован. Поэтому, чтобы избежать будущих ошибок переполнения диска, установите для этого значения значение больше нуля или внедрите обычную автоматизированную систему очистки или архивирования старых сохраненных файлов журналов. | |
BufferMessage | Если для вашего прокси включена потоковая передача HTTP , сообщения запроса/ответа не буферизуются. Если вы хотите регистрировать содержимое, требующее анализа сообщения потока, установите для BufferMessage значение true. Пример см. на вкладке образца «С поддержкой потоков». По умолчанию: ложь | |
Назначение системного журнала. Чтобы отправить системный журнал в Splunk, Sumo Logic или Loggly, см. раздел Настройка сторонних служб управления журналами . | Message | Создайте сообщение для отправки в системный журнал, объединив текст с переменными для сбора нужной информации. См. Образцы . Примечание. Переменные ответа не будут доступны в PostClientFlow после потока ошибок. Используйте переменные сообщения для регистрации информации об ответах как для ошибок, так и для ситуаций успеха. См. также Примечания по использованию . |
Host | Имя хоста или IP-адрес сервера, на который должен отправляться системный журнал. Если вы не включите этот элемент, по умолчанию используется localhost. | |
Port | Порт, на котором работает системный журнал. Если вы не включите этот элемент, значение по умолчанию — 514. | |
Protocol | TCP или UDP (по умолчанию). Хотя UDP более эффективен, протокол TCP гарантирует доставку журнала сообщений на сервер системного журнала. Для отправки сообщений системного журнала через TLS/SSL поддерживается только TCP. | |
FormatMessage | Необязательно, но для использования с Loggly требуется Этот элемент позволяет вам управлять форматом контента, сгенерированного Apigee, добавляемого к сообщению. Если установлено значение true, к сообщению системного журнала добавляется фиксированное количество символов, что позволяет фильтровать эту информацию из сообщений. Вот пример фиксированного формата: Информация, генерируемая Apigee, включает в себя:
Если установлено значение false (по умолчанию), к сообщению не добавляются эти фиксированные символы. | |
PayloadOnly | Этот элемент устанавливает формат сообщений, сгенерированных Apigee, так, чтобы они содержали только тело сообщения системного журнала без добавленных символов, указанных в FormatMessage . Если вы не включите этот элемент или оставите его пустым, значение по умолчанию будет См. ФорматСообщение . | |
DateFormat | Необязательный. Строка шаблона форматирования, используемая для форматирования отметки времени для каждого сообщения журнала. По умолчанию Apigee использует | |
SSLInfo | Позволяет регистрировать сообщения через SSL/TLS. Используйте с подэлементом Если вы не включите этот элемент или оставите его пустым, значение по умолчанию будет ложным (без TLS/SSL). <SSLInfo> <Enabled>true</Enabled> </SSLInfo> Вы можете настроить тег <SSLInfo> так же, как и в TargetEndpoint, включая включение двустороннего TLS/SSL, как описано в справочнике по настройке прокси-сервера API . Поддерживается только протокол TCP . | |
logLevel | Необязательный. Допустимые значения: Установите определенный уровень информации, которая будет включена в журнал сообщений. Если вы используете элемент |
Схемы
Примечания по использованию
Прикрепляя политику MessageLogging к потоку прокси-сервера API, рассмотрите возможность размещения ее в ответе ProxyEndpoint в специальном потоке PostClientFlow. PostClientFlow выполняется после отправки ответа запрашивающему клиенту, что гарантирует, что все метрики доступны для регистрации. Подробную информацию об использовании PostClientFlow см. в справочнике по настройке прокси-сервера API .
PostClientFlow особенный по двум причинам:
- Он выполняется только как часть потока ответов.
- Это единственный поток, выполняемый после того, как прокси-сервер переходит в состояние ошибки.
Поскольку он выполняется независимо от того, успешно или нет прокси-сервер, вы можете поместить политики MessageLogging в PostClientFlow и быть уверенными, что они всегда выполняются.
На следующем изображении трассировки показана политика MessageLogging, выполняемая как часть PostClientFlow после выполнения DefaultFaultRule:
В этом примере политика проверки ключа API вызвала ошибку из-за недопустимого ключа.
Ниже показано определение ProxyEndpoint, включающее PostClientFlow:
<ProxyEndpoint name="default"> ... <PostClientFlow> <Response> <Step> <Name>Message-Logging-1</Name> </Step> </Response> </PostClientFlow> ... </ProxyEndpoint>
Edge регистрирует сообщения в виде простого текста, и вы можете настроить ведение журнала, включив в него переменные, такие как дата и время получения запроса или ответа, идентификатор пользователя в запросе, исходный IP-адрес, с которого был отправлен запрос, и т. д. Edge регистрирует сообщения асинхронно, что означает, что в ваш API не возникает задержек, которые могут быть вызваны блокировкой вызовов.
Политика MessageLogging записывает зарегистрированные сообщения в память в буфер. Регистратор сообщений считывает сообщения из буфера, а затем записывает их в указанное вами место назначения. Каждый пункт назначения имеет свой собственный буфер.
Если скорость записи в буфер превысит скорость чтения, буфер переполнится и регистрация не удастся. Если это произойдет, в файле журнала вы можете найти сообщение, содержащее следующее:
Log message size exceeded. Increase the max message size setting
Если вы столкнулись с этой проблемой в Edge для частного облака 4.15.07 и более ранних версий, найдите файл message-logging.properties
и воспользуйтесь этим решением:
Увеличьте значение свойства max.log.message.size.in.kb
(значение по умолчанию = 128 КБ) в файле message-logging.properties
.
Для Edge для частного облака 4.16.01 и более поздних версий установите параметр conf/message-logging.properties+max. log.message.size.in.kb
в файле /opt/apigee/customer/application/message-processor.properties и перезапустите процессор сообщений. Обратите внимание, что это свойство изначально закомментировано по умолчанию.
Примечание. Переменные ответного сообщения в Edge недоступны из потока ошибок. Эти переменные также недоступны в PostClientFlow, если предыдущий поток был потоком ошибок. Если вы хотите регистрировать информацию об ответе из PostClientFlow, используйте объект сообщения . Вы можете использовать этот объект для получения заголовков и другой информации из ответа независимо от того, произошла ли ошибка. См. Переменные сообщения для получения дополнительной информации и примера.
Управление меткой времени сообщения журнала в Edge для частного облака
По умолчанию временная метка во всех сообщениях журнала имеет следующий формат:
yyyy-MM-dd'T'HH:mm:ss.SSSZ
Это общесистемное значение по умолчанию можно переопределить для мест назначения системного журнала с помощью элемента DateFormat
. Поведение этого шаблона описано в документации Java-класса SimpleDateFormat . Согласно этому определению, yyyy
будет заменен четырехзначным годом, MM
будет заменен двухзначным номером месяца и так далее. Приведенный выше формат может привести к строке следующего вида:
2022-09-28T22:38:11.721+0000
Вы можете использовать свойство conf_system_apigee.syslogger.dateFormat в Edge Message Processor для управления этим форматом. Например, изменение формата сообщения на:
yy/MM/dd'T'HH:mm:ss.SSSZ
.. Пересмотр приливок с помощью ударов и сокращения до двухзначного года, записывает временную метку в форме:
22/09/28T22:38:11.721+0000
Чтобы изменить формат:
- Откройте файл сообщения Processor.properties в редакторе. Если файл не существует, создайте его:
> vi /opt/apigee/customer/application/message-processor.properties - Установите свойства по желанию:
conf_system_apige.syslogger.dateformat = yy/mm/dd't'hh: mm: ss.sssz - Сохраните свои изменения.
- Убедитесь, что файл свойств принадлежит пользователю «Apigee»:
> chown apigee: apigee/opt/apigee/customer/application/message-processor.properties - Перезагрузить процессор сообщений Edge:
>/opt/apigee/apigee-service/bin/apigee-service edge-message-processor перезапуск
Расположение файла журнала в Edge для частного облака
Edge для частного облака 4.16.01, а затем и позже
По умолчанию журналы личных облачных сообщений находятся в следующем каталоге на узлах процессора сообщений:
/opt/apigee/var/log/edge-message-processor/messagelogging/org_name/environment/api_proxy_name/revision/logging_policy_name/
Вы можете изменить местоположение журнала по умолчанию, изменяя свойства в файле Logging.properties в процессах сообщений:
- BIN_SETENV_DATA_DIR - устанавливает корневой путь для хранения файлов журнала. Например,
bin_setenv_data_dir=/opt/apigee/var/log
- conf_message-logging_log.root.dir -если вы установите это в относительный путь, например
conf/message-logging.properties+log.root.dir=custom/folder/
, the path is appended to the bin_setenv_data_dir location.
Если вы установите это на абсолютный путь, напримерconf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages
, журналы сообщений будут сохранены в/opt/apigee/var/log/messages/messagelog/
. Абсолютный путь имеет приоритет надbin_setenv_data_dir
.
Обратите внимание, что вы должны ссылаться на свойство как conf/logging.properties+log.root.dir, потому что оно комментируется по умолчанию. См. Установление токена, который в настоящее время прокомментирован для большего.
Если вы хотите сохранить файлы журнала в плоской структуре файлов, чтобы все файлы журнала были размещены в одном и том же каталоге, установите Conf/Message-logging.properties+enable.flat.directory.structure на true в файле roperties. Сообщения хранятся в каталоге, указанном приведенными выше свойствами, и имена файлов принимают форму {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename}
.
Чтобы установить эти свойства:
- Откройте файл сообщения Processor.properties в редакторе. Если файл не существует, создайте его:
> vi /opt/apigee/customer/application/message-processor.properties - Установите свойства по желанию:
conf/message-logging.properties+log.root.dir = /opt/apigee/var/log/messages - Сохраните свои изменения.
- Убедитесь, что файл свойств принадлежит пользователю «Apigee»:
> chown apigee: apigee/opt/apigee/customer/application/message-processor.properties - Перезагрузить компонент края:
>/opt/apigee/apigee-service/bin/apigee-service edge-message-processor перезапуск
Edge для частного облака 4.15.07 и ранее
По умолчанию журналы сообщений находятся в следующем месте на процессорах сообщений:
/opt/apigee4/var/log/apigee/message-processor/messagelog/{org}/{environment}/{api_proxy_name}/{revision}/{logging_policy_name}/
Вы можете изменить местоположение журнала по умолчанию, изменив следующие свойства в файле Logging.properties в процессе сообщений:
- data.dir - Устанавливает корневой путь для хранения файлов журнала. Например, data.dir =/opt/apigee4/var/log
- log.root.dir - если вы установите это на относительный путь, такой как log.root.dir = custom/folder/, Путь добавляется к местоположению data.dir.
Например, комбинация двух свойств установит каталог журнала AT/OPT/APIGEE4/var/log/custom/folder/messageLog/(обратите внимание, что/MessageLog добавляется автоматически).
Если вы установите это на абсолютный путь, например , log.root.dir =/opt/apigee4/var/log/messages , журналы сообщений будут сохранены в/opt/apigee4/var/log/message/messagelog/. Абсолютный путь в log.root.dir имеет приоритет над data.dir .
Если вы хотите сохранить файлы журнала в плоской структуре файлов, чтобы все файлы журнала были размещены в одном и том же каталоге, установите свойство enable.flat.directory.structure на true в файле Logging.properties в процессах сообщений. Сообщения хранятся в каталоге, указанном приведенными выше свойствами, и имена файлов принимают форму {org} _ {среда} _ {api_proxy_name} _ {Revision} _ {logging_policy_name} _ {filename} .
Значения по умолчанию для переменных в шаблоне сообщения
Значения по умолчанию могут быть указаны для каждой переменной в шаблоне сообщения отдельно. Например, если переменная request.header.id
не может быть разрешена, то его значение заменяется unknown
значением.
<Message>This is a test message. id = {request.header.id:unknown}</Message>
Общее значение по умолчанию может быть указано для всех неразрешенных переменных, установив атрибут defaultVariableValue
на элементе Message
:
<Message defaultVariableValue="unknown">This is a test message. id = {request.header.id}</Message>
Настройка сторонних служб управления журналами
Политика MessageLogging позволяет отправлять сообщения Syslog в сторонние службы управления журналами, такие как Splunk, Sumo Logic и Loggly. Если вы хотите отправить Syslog в одну из этих служб, см. Документацию этой службы, чтобы настроить хост, порт и протокол службы, а затем установите элемент системного журнала на настоящую Политику соответственно.
Смотрите следующую документацию для сторонней конфигурации управления журналами:
- Splunk (выберите версию продукта)
Также см . В этом сообществе сообщества Apige - Сумо логика
- Также см. В этом сообществе Apigee Post: https://community.apigee.com/questions/5226/setting-up-logging-with-sumo-logic-which-host-shou.html
- Полный пример с использованием логики SUMO в качестве службы журнала, см. Следующий пост сообщества Apigee. Решение использует одну политику JavaScript для выполнения запросов HTTP POST в SUMO Logic HTTP Source Collector: https://community.apigee.com/articles/32286/logging-to-sumo-logic-using-javascript-and-http.html
- Loggly
При использовании loggly,<FormatMessage>true</FormatMessage>
требуется в политике как ребенок элемента<Syslog>
.
Также см. В этом сообщении Apigee сообщество для получения дополнительной информации о регистрации сообщений в Loggly: https://community.apigee.com/content/kbentry/14798/log-messages-into-loggly.html
Ссылка на ошибку
В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые устанавливаются Edge, когда эта политика вызывает ошибку. Эту информацию важно знать, если вы разрабатываете правила обработки ошибок. Дополнительные сведения см. в разделах Что нужно знать об ошибках политики и Обработка ошибок .
Ошибки выполнения
Эти ошибки могут возникнуть при выполнении политики.
Код неисправности | Статус HTTP | Причина |
---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed | 500 | См. строку ошибки. |
Ошибки развертывания
Эти ошибки могут возникнуть при развертывании прокси-сервера, содержащего эту политику.
Название ошибки | Причина | Исправить |
---|---|---|
InvalidProtocol | Развертывание политики MessageLogging может завершиться с ошибкой из-за этой ошибки, если протокол, указанный в элементе <Protocol> , недействителен. Допустимые протоколы: TCP и UDP. Для отправки сообщений системного журнала через TLS/SSL поддерживается только TCP. | build |
InvalidPort | Развертывание политики регистрации сообщений может завершиться с ошибкой из-за этой ошибки, если номер порта не указан в элементе <Port> или если он недействителен. Номер порта должен быть целым числом, большим нуля. | build |
Переменные неисправности
Эти переменные устанавливаются при возникновении ошибки во время выполнения. Дополнительные сведения см. в разделе Что нужно знать об ошибках политики .
Переменные | Где | Пример |
---|---|---|
fault.name=" fault_name " | fault_name — это имя ошибки, как указано в таблице ошибок времени выполнения выше. Имя неисправности — это последняя часть кода неисправности. | fault.name Matches "StepDefinitionExecutionFailed" |
messagelogging. policy_name .failed | policy_name — указанное пользователем имя политики, вызвавшей ошибку. | messagelogging.ML-LogMessages.failed = true |
Пример ответа об ошибке
{ "fault":{ "detail":{ "errorcode":"steps.messagelogging.StepDefinitionExecutionFailed" }, "faultstring":"Execution failed" } }
Пример правила неисправности
<FaultRule name="MessageLogging"> <Step> <Name>ML-LogMessages</Name> <Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition> </Step> <Condition>(messagelogging.ML-LogMessages.failed = true) </Condition> </FaultRule>
Переменные потока
Следующие переменные заполнены сбоем политики.
-
messagelogging.failed
-
messagelogging.{stepdefinition-name}.failed
Связанные темы
- Переменные, выявленные по краю: variables reference
Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee x . информация

Что
Одним из лучших способов отслеживать проблемы в среде выполнения API является регистрация сообщений. Вы можете прикрепить и настроить политику MessageLogging на свой API для регистрации пользовательских сообщений на локальный диск (Edge только для частного облака) или в Syslog.
Образцы
Системный журнал
<MessageLogging name="LogToSyslog"> <Syslog> <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message> <Host>logs-01.loggly.com</Host> <Port>514</Port> <Protocol>TCP</Protocol> <FormatMessage>true</FormatMessage> <DateFormat>yyyy-MM-dd'T'HH:mm:ss.SSSZ</DateFormat> </Syslog> <logLevel>ALERT</logLevel> </MessageLogging>
Распространенное использование типа политики MessageLogging заключается в том, чтобы войти в учетную запись Syslog. При настройке для системного журнала прокси API будет пересылать сообщения журналов от Apigee Edge на сервер удаленного системного журнала. У вас уже есть доступный сервер системного журнала. Если нет, доступны услуги управления публичными журналами, такая всплеска, логика SUMO и loggly. См. Настройку сторонних служб управления журналами .
Например, представьте, что вам нужно войти в систему информации о каждом сообщении запроса, которое получает ваш API от приложений для потребителей. Значение 3f509b58
представляет значение ключа, специфичное для службы LogGLY. Если у вас есть учетная запись Loggly, замените ключ Loggly. Сгенерированное сообщение журнала будет заполнено четырьмя значениями: организация, прокси -сервер API и имя среды, связанные с транзакцией, вместе со значением для параметра запроса в сообщении запроса.
Если у вас есть преимущество для развертывания частного облака, вы также можете записать сообщения журнала в файл.
Syslog Over TLS/SSL
<MessageLogging name="LogToSyslog"> <Syslog> <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message> <Host>logs-01.loggly.com</Host> <Port>6514</Port> <Protocol>TCP</Protocol> <FormatMessage>true</FormatMessage> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> <DateFormat>yyMMdd-HH:mm:ss.SSS</DateFormat> </Syslog> <logLevel>WARN</logLevel> </MessageLogging>
Вы можете отправить сообщения сторонним поставщикам журнала сообщений по сравнению с TLS/SSL, добавив блок <SSLInfo>
.
Вращение файла: размер
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>SIZE</FileRotationType> <MaxFileSizeInMB>10</MaxFileSizeInMB> <MaxFilesToRetain>10</MaxFilesToRetain> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Вращение файла на основе размера файла.
Вращение файла: время
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>TIME</FileRotationType> <RotationFrequency unit="minute">10</RotationFrequency> <MaxFilesToRetain>10</MaxFilesToRetain> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Вращение файла в зависимости от времени.
Вращение файла: время и размер
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>TIME_SIZE</FileRotationType> <MaxFileSizeInMB>10</MaxFileSizeInMB> <MaxFilesToRetain>10</MaxFilesToRetain> <RotationFrequency unit="minute">10</RotationFrequency> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Вращение файла в зависимости от времени и размера.
Поток с поддержкой
<MessageLogging name="LogPolicy"> <File> .... .... </File> <BufferMessage>true</BufferMessage> </MessageLogging>
Потоковая регистрация сообщений
Ссылка на элемент
Используйте следующие элементы для настройки типа политики MessageLogging.
Имя поля | Описание поля | |
---|---|---|
Местный пункт назначения файла. (Регистрация файлов поддерживается только в Edge для развертывания частного облака.) Для получения информации о том, где хранятся файлы, см. Местоположение файла журнала в Edge для частного облака . | Message | Создайте сообщение, которое будет отправлено в файл журнала, объединяя текст с переменными, чтобы захватить нужную информацию. Смотрите образцы . |
FileName | Базовое имя файла журнала. Не указывайте путь файла. Например, этот элемент FileName определяет путь к файлу и недействителен:<FileName>/opt/apigee/var/log/messages/mylog.log</FileName> Этот код определяет только имя файла и действителен: <FileName>mylog.log</FileName> Для получения информации о том, где хранится файл, см. Местоположение файла журнала в Edge для частного облака . | |
FileRotationOptions | ||
rotateFileOnStartup | Атрибут. Допустимые значения: Если установить True, то файл журнала вращается каждый раз, когда перезапускается двигатель обмена сообщениями. | |
FileRotationType | Определяет политику вращения ( size или time ) файла журнала. | |
MaxFileSizeInMB | (При выборе size в виде типа вращения) Указывает размер файла журнала, который запускает сервер для перемещения сообщений журнала в отдельный файл. После того, как файл журнала достигает указанного размера, сервер переименовает текущий файл журнала. | |
RotationFrequency | (При выборе time в качестве типа вращения) Указывает время в минуты, которое запускает сервер для перемещения сообщений журнала в отдельный файл. После того, как указанный интервал истекает, текущий файл журнала переименована в переименование. | |
MaxFilesToRetain | Определяет максимальное количество файлов, которые будут сохранены в контексте ваших настроек вращения. Значение по умолчанию составляет 8 . Если вы указываете Zero (0), файлы журналов сохраняются на неопределенный срок, но при условии, что ваши настройки вращения файлов, хотя ни один из файлов не удален или переименован в переименование. Следовательно, чтобы избежать будущих ошибок, полных дисков, установите это на значение, превышающее ноль, или реализовать регулярную автоматизированную систему очистки или архивирования старых сохраняемых файлов журнала. | |
BufferMessage | Если потоковая передача HTTP включена для вашего прокси, сообщения запроса/ответа не буферируются. Если вы хотите использовать содержимое, которое требует проанализированного сообщения, установите Buffermessage на True. Смотрите вкладку «Образец» примера «Стоковой с поддержкой». По умолчанию: ложь | |
Пункт назначения системного журнала. Чтобы отправить Syslog в Splunk, Sumo Logic или Loggly, см. Настройку сторонних служб управления журналами . | Message | Создайте сообщение, которое будет отправлено в системный журнал, объединяя текст с переменными, чтобы захватить нужную информацию. Смотрите образцы . ПРИМЕЧАНИЕ. Переменные ответа не будут доступны в PostClientFlow после потока ошибок. Используйте переменные сообщения для регистрации информации о ответе как для ситуаций ошибок, так и для успеха. Смотрите также заметки об использовании . |
Host | Имя хоста или IP -адрес сервера, на котором следует отправлять системный журнал. Если вы не включаете этот элемент, по умолчанию по умолчанию Localhost. | |
Port | Порт, где работает системный журнал. Если вы не включаете этот элемент, по умолчанию составляет 514. | |
Protocol | TCP или UDP (по умолчанию). В то время как UDP более эффективен, протокол TCP гарантирует доставку журнала сообщений на сервер Syslog. Для отправки сообщений системного журнала через TLS/SSL поддерживается только TCP. | |
FormatMessage | Необязательно, но Этот элемент позволяет вам контролировать формат контента, сгенерированного Apigee, приготовленного к сообщению. Если установлено значение True, сообщение Syslog приготовляется с фиксированным количеством символов, что позволяет вам отфильтровать эту информацию из сообщений. Вот пример для фиксированного формата: Информация, сгенерированная Apigee, включает в себя:
Если установлено значение false (по умолчанию), сообщение не готовится с этими фиксированными символами. | |
PayloadOnly | Этот элемент устанавливает формат сообщений, сгенерированных Apigee, содержать только тело сообщения Syslog, без приготовленных символов, указанных FormatMessage . Если вы не включаете этот элемент и не оставляете его пустым, значение по умолчанию См. Formatmessage . | |
DateFormat | Необязательный. Строка шаблона форматирования для форматирования временной метки для каждого сообщения журнала. По умолчанию Apigee использует | |
SSLInfo | Позволяет регистрировать сообщения через SSL/TLS. Используйте с подэлементом Если вы не включаете этот элемент и не оставляете его пустым, значение по умолчанию является false (без TLS/SSL). <SSLInfo> <Enabled>true</Enabled> </SSLInfo> Вы можете настроить тег <sslinfo> так же, как и на целевой точке, включая включение двустороннего TLS/SSL, как описано в ссылке на конфигурацию Proxy API . Поддерживается только протокол TCP . | |
logLevel | Необязательный. Допустимые значения: Установите определенный уровень информации, который будет включен в журнал сообщений. Если вы используете элемент |
Схемы
Примечания по использованию
При прикреплении политики в области MessageLogging к прокси -потоку API рассмотрите возможность размещения ее в ответе ProxyendPoint, в специальном потоке, называемом PostClientFlow. PostClientFlow выполняется после того, как ответ отправляется запрашивающему клиенту, что гарантирует, что все метрики доступны для регистрации. Для получения подробной информации об использовании PostClientFlow см. Ссылку на конфигурацию прокси API .
PostClientFlow особенный по двум способам:
- Он выполняется только как часть потока отклика.
- Это единственный поток, выполненный после того, как прокси входит в состояние ошибки.
Поскольку он выполняется независимо от того, преуспел ли прокси успел или потерпел неудачу, вы можете поместить политики MessageLogging в PostClientFlow и быть гарантированным, что они всегда выполняют.
Следующее изображение трассировки показывает политику MessageLogging, выполняемая в рамках PostClientFlow, после выполнения по умолчанию fultrule:
В этом примере политика «Проверка ключа API» вызвала ошибку из -за неверного ключа.
Ниже показано определение ProxyendPoint, которое включает в себя PostClientFlow:
<ProxyEndpoint name="default"> ... <PostClientFlow> <Response> <Step> <Name>Message-Logging-1</Name> </Step> </Response> </PostClientFlow> ... </ProxyEndpoint>
Регирует сообщения как простой текст, и вы можете настроить журнал для включения переменных, таких как дата и время, когда был получен запрос или ответ, идентификация пользователя в запросе, IP -адрес источника, с которого был отправлен запрос, и так далее. Сообщение о преимуществах журналов асинхронно, что означает, что в вашем API не введена задержка, которая может быть вызвана блокировкой вызовов.
Политика MessageLogging записывает зарегистрированные сообщения в памяти в буфер. Регистратор сообщений считывает сообщения из буфера, а затем записывает в пункт назначения, которое вы настраиваете. У каждого пункта назначения есть собственный буфер.
Если скорость записи в буфере увеличивается за пределы скорости чтения, переполнение буфера и регистрация потерпит неудачу. Если это произойдет, вы можете найти сообщение, содержащее следующее в файле журнала:
Log message size exceeded. Increase the max message size setting
Если вы столкнетесь с этой проблемой в Edge для частного облака 4.15.07 и ранее, найдите файл message-logging.properties
и используйте это решение:
Увеличьте свойство max.log.message.size.in.kb
(значение по умолчанию = 128 т.п.н.) в файле message-logging.properties
.
Для Edge для частного облака 4.16.01, а затем установите conf/message-logging.properties+max. log.message.size.in.kb
в файле /opt/apigee/ customer/application/message-processor.properties и перезапустите процессор сообщений. Обратите внимание, что это свойство изначально прокомментировано по умолчанию.
ПРИМЕЧАНИЕ. Переменные сообщения ответа в Edge недоступны от потока ошибок. Эти переменные также недоступны в PostClientFlow, если предыдущий поток был потоком ошибок. Если вы хотите войти в систему информации о ответе из PostClientFlow, используйте объект сообщения . Вы можете использовать этот объект, чтобы получить заголовки и другую информацию из ответа, была ли ошибка. См. Переменные сообщения для получения дополнительной информации и примера.
Управление временной меткой сообщений журнала в Edge для частного облака
По умолчанию, временная метка во всех сообщениях журнала имеет формат:
yyyy-MM-dd'T'HH:mm:ss.SSSZ
Этот общеобразовательный по умолчанию может быть переоборудована для направлений системного журнала с использованием элемента DateFormat
. Поведение этого шаблона описано в документации для класса Java SimpleDateFormat . Согласно этому определению, yyyy
будет заменен на 4-значный год, MM
будет заменен на двухзначный номер месяца и так далее. Приведенный выше формат может привести к строке этой формы:
2022-09-28T22:38:11.721+0000
Вы можете использовать свойство conf_system_apige.syslogger.dateformat на процессоре сообщения Edge для управления этим форматом. Например, изменение формата сообщения на:
yy/MM/dd'T'HH:mm:ss.SSSZ
.. Пересмотр приливок с помощью ударов и сокращения до двухзначного года, записывает временную метку в форме:
22/09/28T22:38:11.721+0000
Чтобы изменить формат:
- Откройте файл сообщения Processor.properties в редакторе. Если файл не существует, создайте его:
> vi /opt/apigee/customer/application/message-processor.properties - Установите свойства по желанию:
conf_system_apige.syslogger.dateformat = yy/mm/dd't'hh: mm: ss.sssz - Сохраните свои изменения.
- Убедитесь, что файл свойств принадлежит пользователю «Apigee»:
> chown apigee: apigee/opt/apigee/customer/application/message-processor.properties - Перезагрузить процессор сообщений Edge:
>/opt/apigee/apigee-service/bin/apigee-service edge-message-processor перезапуск
Расположение файла журнала в Edge для частного облака
Edge для частного облака 4.16.01, а затем и позже
По умолчанию журналы личных облачных сообщений находятся в следующем каталоге на узлах процессора сообщений:
/opt/apigee/var/log/edge-message-processor/messagelogging/org_name/environment/api_proxy_name/revision/logging_policy_name/
Вы можете изменить местоположение журнала по умолчанию, изменяя свойства в файле Logging.properties в процессах сообщений:
- BIN_SETENV_DATA_DIR - устанавливает корневой путь для хранения файлов журнала. Например,
bin_setenv_data_dir=/opt/apigee/var/log
- conf_message-logging_log.root.dir -если вы установите это в относительный путь, например
conf/message-logging.properties+log.root.dir=custom/folder/
, the path is appended to the bin_setenv_data_dir location.
Если вы установите это на абсолютный путь, напримерconf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages
, журналы сообщений будут сохранены в/opt/apigee/var/log/messages/messagelog/
. Абсолютный путь имеет приоритет надbin_setenv_data_dir
.
Обратите внимание, что вы должны ссылаться на свойство как conf/logging.properties+log.root.dir, потому что оно комментируется по умолчанию. См. Установление токена, который в настоящее время прокомментирован для большего.
Если вы хотите сохранить файлы журнала в плоской структуре файлов, чтобы все файлы журнала были размещены в одном и том же каталоге, установите Conf/Message-logging.properties+enable.flat.directory.structure на true в файле roperties. Сообщения хранятся в каталоге, указанном приведенными выше свойствами, и имена файлов принимают форму {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename}
.
Чтобы установить эти свойства:
- Откройте файл сообщения Processor.properties в редакторе. Если файл не существует, создайте его:
> vi /opt/apigee/customer/application/message-processor.properties - Установите свойства по желанию:
conf/message-logging.properties+log.root.dir = /opt/apigee/var/log/messages - Сохраните свои изменения.
- Убедитесь, что файл свойств принадлежит пользователю «Apigee»:
> chown apigee: apigee/opt/apigee/customer/application/message-processor.properties - Перезагрузить компонент края:
>/opt/apigee/apigee-service/bin/apigee-service edge-message-processor перезапуск
Edge для частного облака 4.15.07 и ранее
По умолчанию журналы сообщений находятся в следующем месте на процессорах сообщений:
/opt/apigee4/var/log/apigee/message-processor/messagelog/{org}/{environment}/{api_proxy_name}/{revision}/{logging_policy_name}/
Вы можете изменить местоположение журнала по умолчанию, изменив следующие свойства в файле Logging.properties в процессе сообщений:
- data.dir - Устанавливает корневой путь для хранения файлов журнала. Например, data.dir =/opt/apigee4/var/log
- log.root.dir - если вы установите это на относительный путь, такой как log.root.dir = custom/folder/, Путь добавляется к местоположению data.dir.
Например, комбинация двух свойств установит каталог журнала AT/OPT/APIGEE4/var/log/custom/folder/messageLog/(обратите внимание, что/MessageLog добавляется автоматически).
Если вы установите это на абсолютный путь, например , log.root.dir =/opt/apigee4/var/log/messages , журналы сообщений будут сохранены в/opt/apigee4/var/log/message/messagelog/. Абсолютный путь в log.root.dir имеет приоритет над data.dir .
Если вы хотите сохранить файлы журнала в плоской структуре файлов, чтобы все файлы журнала были размещены в одном и том же каталоге, установите свойство enable.flat.directory.structure на true в файле Logging.properties в процессах сообщений. Сообщения хранятся в каталоге, указанном приведенными выше свойствами, и имена файлов принимают форму {org} _ {среда} _ {api_proxy_name} _ {Revision} _ {logging_policy_name} _ {filename} .
Значения по умолчанию для переменных в шаблоне сообщения
Значения по умолчанию могут быть указаны для каждой переменной в шаблоне сообщения отдельно. Например, если переменная request.header.id
не может быть разрешена, то его значение заменяется unknown
значением.
<Message>This is a test message. id = {request.header.id:unknown}</Message>
Общее значение по умолчанию может быть указано для всех неразрешенных переменных, установив атрибут defaultVariableValue
на элементе Message
:
<Message defaultVariableValue="unknown">This is a test message. id = {request.header.id}</Message>
Настройка сторонних служб управления журналами
Политика MessageLogging позволяет отправлять сообщения Syslog в сторонние службы управления журналами, такие как Splunk, Sumo Logic и Loggly. Если вы хотите отправить Syslog в одну из этих служб, см. Документацию этой службы, чтобы настроить хост, порт и протокол службы, а затем установите элемент системного журнала на настоящую Политику соответственно.
Смотрите следующую документацию для сторонней конфигурации управления журналами:
- Splunk (выберите версию продукта)
Также см . В этом сообществе сообщества Apige - Сумо логика
- Также см. В этом сообществе Apigee Post: https://community.apigee.com/questions/5226/setting-up-logging-with-sumo-logic-which-host-shou.html
- Полный пример с использованием логики SUMO в качестве службы журнала, см. Следующий пост сообщества Apigee. Решение использует одну политику JavaScript для выполнения запросов HTTP POST в SUMO Logic HTTP Source Collector: https://community.apigee.com/articles/32286/logging-to-sumo-logic-using-javascript-and-http.html
- Loggly
При использовании loggly<FormatMessage>true</FormatMessage>
требуется в политике в качестве ребенка элемента<Syslog>
.
Также см. В этом сообщении Apigee сообщество для получения дополнительной информации о регистрации сообщений в Loggly: https://community.apigee.com/content/kbentry/14798/log-messages-into-loggly.html
Ссылка на ошибку
В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые устанавливаются Edge, когда эта политика вызывает ошибку. Эту информацию важно знать, если вы разрабатываете правила обработки ошибок. Дополнительные сведения см. в разделах Что нужно знать об ошибках политики и Обработка ошибок .
Ошибки выполнения
Эти ошибки могут возникнуть при выполнении политики.
Код неисправности | Статус HTTP | Причина |
---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed | 500 | См. строку ошибки. |
Ошибки развертывания
Эти ошибки могут возникнуть при развертывании прокси-сервера, содержащего эту политику.
Название ошибки | Причина | Исправить |
---|---|---|
InvalidProtocol | Развертывание политики MessageLogging может завершиться с ошибкой из-за этой ошибки, если протокол, указанный в элементе <Protocol> , недействителен. Допустимые протоколы: TCP и UDP. Для отправки сообщений системного журнала через TLS/SSL поддерживается только TCP. | build |
InvalidPort | Развертывание политики регистрации сообщений может завершиться с ошибкой из-за этой ошибки, если номер порта не указан в элементе <Port> или если он недействителен. Номер порта должен быть целым числом, большим нуля. | build |
Переменные неисправности
Эти переменные устанавливаются при возникновении ошибки во время выполнения. Дополнительные сведения см. в разделе Что нужно знать об ошибках политики .
Переменные | Где | Пример |
---|---|---|
fault.name=" fault_name " | fault_name — это имя ошибки, как указано в таблице ошибок времени выполнения выше. Имя неисправности — это последняя часть кода неисправности. | fault.name Matches "StepDefinitionExecutionFailed" |
messagelogging. policy_name .failed | policy_name — указанное пользователем имя политики, вызвавшей ошибку. | messagelogging.ML-LogMessages.failed = true |
Пример ответа об ошибке
{ "fault":{ "detail":{ "errorcode":"steps.messagelogging.StepDefinitionExecutionFailed" }, "faultstring":"Execution failed" } }
Пример правила неисправности
<FaultRule name="MessageLogging"> <Step> <Name>ML-LogMessages</Name> <Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition> </Step> <Condition>(messagelogging.ML-LogMessages.failed = true) </Condition> </FaultRule>
Переменные потока
Следующие переменные заполнены сбоем политики.
-
messagelogging.failed
-
messagelogging.{stepdefinition-name}.failed
Связанные темы
- Переменные, выявленные по краю: variables reference
Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee x . информация

Что
Одним из лучших способов отслеживать проблемы в среде выполнения API является регистрация сообщений. Вы можете прикрепить и настроить политику MessageLogging на свой API для регистрации пользовательских сообщений на локальный диск (Edge только для частного облака) или в Syslog.
Образцы
Системный журнал
<MessageLogging name="LogToSyslog"> <Syslog> <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message> <Host>logs-01.loggly.com</Host> <Port>514</Port> <Protocol>TCP</Protocol> <FormatMessage>true</FormatMessage> <DateFormat>yyyy-MM-dd'T'HH:mm:ss.SSSZ</DateFormat> </Syslog> <logLevel>ALERT</logLevel> </MessageLogging>
Распространенное использование типа политики MessageLogging заключается в том, чтобы войти в учетную запись Syslog. При настройке для системного журнала прокси API будет пересылать сообщения журналов от Apigee Edge на сервер удаленного системного журнала. У вас уже есть доступный сервер системного журнала. Если нет, доступны услуги управления публичными журналами, такая всплеска, логика SUMO и loggly. См. Настройку сторонних служб управления журналами .
Например, представьте, что вам нужно войти в систему информации о каждом сообщении запроса, которое получает ваш API от приложений для потребителей. Значение 3f509b58
представляет значение ключа, специфичное для службы LogGLY. Если у вас есть учетная запись Loggly, замените ключ Loggly. Сгенерированное сообщение журнала будет заполнено четырьмя значениями: организация, прокси -сервер API и имя среды, связанные с транзакцией, вместе со значением для параметра запроса в сообщении запроса.
Если у вас есть преимущество для развертывания частного облака, вы также можете записать сообщения журнала в файл.
Syslog Over TLS/SSL
<MessageLogging name="LogToSyslog"> <Syslog> <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message> <Host>logs-01.loggly.com</Host> <Port>6514</Port> <Protocol>TCP</Protocol> <FormatMessage>true</FormatMessage> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> <DateFormat>yyMMdd-HH:mm:ss.SSS</DateFormat> </Syslog> <logLevel>WARN</logLevel> </MessageLogging>
Вы можете отправить сообщения сторонним поставщикам журнала сообщений по сравнению с TLS/SSL, добавив блок <SSLInfo>
.
Вращение файла: размер
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>SIZE</FileRotationType> <MaxFileSizeInMB>10</MaxFileSizeInMB> <MaxFilesToRetain>10</MaxFilesToRetain> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Вращение файла на основе размера файла.
Вращение файла: время
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>TIME</FileRotationType> <RotationFrequency unit="minute">10</RotationFrequency> <MaxFilesToRetain>10</MaxFilesToRetain> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Вращение файла в зависимости от времени.
Вращение файла: время и размер
<MessageLogging name="LogPolicy"> <File> <Message>This is a test message. Message id : {request.header.messageid}</Message> <FileName>test.log</FileName> <FileRotationOptions rotateFileOnStartup="true"> <FileRotationType>TIME_SIZE</FileRotationType> <MaxFileSizeInMB>10</MaxFileSizeInMB> <MaxFilesToRetain>10</MaxFilesToRetain> <RotationFrequency unit="minute">10</RotationFrequency> </FileRotationOptions> </File> <logLevel>ERROR</logLevel> </MessageLogging>
Вращение файла в зависимости от времени и размера.
Поток с поддержкой
<MessageLogging name="LogPolicy"> <File> .... .... </File> <BufferMessage>true</BufferMessage> </MessageLogging>
Потоковая регистрация сообщений
Ссылка на элемент
Используйте следующие элементы для настройки типа политики MessageLogging.
Имя поля | Описание поля | |
---|---|---|
Местный пункт назначения файла. (Регистрация файлов поддерживается только в Edge для развертывания частного облака.) Для получения информации о том, где хранятся файлы, см. Местоположение файла журнала в Edge для частного облака . | Message | Создайте сообщение, которое будет отправлено в файл журнала, объединяя текст с переменными, чтобы захватить нужную информацию. Смотрите образцы . |
FileName | Базовое имя файла журнала. Не указывайте путь файла. Например, этот элемент FileName определяет путь к файлу и недействителен:<FileName>/opt/apigee/var/log/messages/mylog.log</FileName> Этот код определяет только имя файла и действителен: <FileName>mylog.log</FileName> Для получения информации о том, где хранится файл, см. Местоположение файла журнала в Edge для частного облака . | |
FileRotationOptions | ||
rotateFileOnStartup | Атрибут. Допустимые значения: Если установить True, то файл журнала вращается каждый раз, когда перезапускается двигатель обмена сообщениями. | |
FileRotationType | Определяет политику вращения ( size или time ) файла журнала. | |
MaxFileSizeInMB | (При выборе size в виде типа вращения) Указывает размер файла журнала, который запускает сервер для перемещения сообщений журнала в отдельный файл. После того, как файл журнала достигает указанного размера, сервер переименовает текущий файл журнала. | |
RotationFrequency | (При выборе time в качестве типа вращения) Указывает время в минуты, которое запускает сервер для перемещения сообщений журнала в отдельный файл. После того, как указанный интервал истекает, текущий файл журнала переименована в переименование. | |
MaxFilesToRetain | Определяет максимальное количество файлов, которые будут сохранены в контексте ваших настроек вращения. Значение по умолчанию составляет 8 . Если вы указываете Zero (0), файлы журналов сохраняются на неопределенный срок, но при условии, что ваши настройки вращения файлов, хотя ни один из файлов не удален или переименован в переименование. Следовательно, чтобы избежать будущих ошибок, полных дисков, установите это на значение, превышающее ноль, или реализовать регулярную автоматизированную систему очистки или архивирования старых сохраняемых файлов журнала. | |
BufferMessage | Если потоковая передача HTTP включена для вашего прокси, сообщения запроса/ответа не буферируются. Если вы хотите использовать содержимое, которое требует проанализированного сообщения, установите Buffermessage на True. Смотрите вкладку «Образец» примера «Стоковой с поддержкой». По умолчанию: ложь | |
Пункт назначения системного журнала. Чтобы отправить Syslog в Splunk, Sumo Logic или Loggly, см. Настройку сторонних служб управления журналами . | Message | Создайте сообщение, которое будет отправлено в системный журнал, объединяя текст с переменными, чтобы захватить нужную информацию. Смотрите образцы . ПРИМЕЧАНИЕ. Переменные ответа не будут доступны в PostClientFlow после потока ошибок. Используйте переменные сообщения для регистрации информации о ответе как для ситуаций ошибок, так и для успеха. Смотрите также заметки об использовании . |
Host | Имя хоста или IP -адрес сервера, на котором следует отправлять системный журнал. Если вы не включаете этот элемент, по умолчанию по умолчанию Localhost. | |
Port | Порт, где работает системный журнал. Если вы не включаете этот элемент, по умолчанию составляет 514. | |
Protocol | TCP или UDP (по умолчанию). В то время как UDP более эффективен, протокол TCP гарантирует доставку журнала сообщений на сервер Syslog. For sending syslog messages over TLS/SSL, only TCP is supported. | |
FormatMessage | Optional, but This element lets you control the format of Apigee-generated content prepended to the message. If set to true, the syslog message is prepended by a fixed number of characters, which lets you filter out that information from messages. Here's an example for the fixed format: The Apigee-generated information includes:
If set to false (default), the message is not prepended with those fixed characters. | |
PayloadOnly | This element sets the format of Apigee-generated messages to contain only the body of the syslog message, without the prepended characters specified by FormatMessage . If you don't include this element or leave it empty, the default value is See FormatMessage . | |
DateFormat | Необязательный. A formatting template string to use to format the timestamp for each log message. By default, Apigee uses | |
SSLInfo | Lets you log messages through SSL/TLS. Use with sub-element If you don't include this element or leave it empty, the default value is false (no TLS/SSL). <SSLInfo> <Enabled>true</Enabled> </SSLInfo> You can configure the <SSLInfo> tag the same as you can on a TargetEndpoint, including enabling two-way TLS/SSL, as described in API proxy configuration reference . Only the TCP protocol is supported. | |
logLevel | Необязательный. Valid values: Set a specific level of information to be included in the message log. If you're using the |
Schemas
Примечания по использованию
When attaching a MessageLogging policy to an API proxy flow, consider placing it in the ProxyEndpoint response, in a special flow called PostClientFlow. The PostClientFlow executes after the response is sent to the requesting client, which ensures that all metrics are available for logging. For details on using PostClientFlow, see API proxy configuration reference .
The PostClientFlow is special in two ways:
- It only executed as part of the response flow.
- It is the only flow executed after the proxy enters the error state.
Because it is executed regardless of whether the proxy succeeded or failed, you can put MessageLogging policies in the PostClientFlow and be guaranteed that they always execute.
The following Trace image shows a MessageLogging policy executing as part of the PostClientFlow, after the DefaultFaultRule executes:
In this example, the Verify API Key policy caused the fault because of an invalid key.
Shown below is the ProxyEndpoint definition that includes the PostClientFlow:
<ProxyEndpoint name="default"> ... <PostClientFlow> <Response> <Step> <Name>Message-Logging-1</Name> </Step> </Response> </PostClientFlow> ... </ProxyEndpoint>
Edge logs messages as simple text, and you can configure logging to include variables, such as the date and time when the request or response was received, the user identity on the request, the source IP address from which the request was sent, and so on. Edge logs message asynchronously, meaning that no latency that might be caused by blocking callouts is introduced to your API.
The MessageLogging policy writes logged messages in memory to a buffer. The message logger reads messages from the buffer and then writes to the destination that you configure. Each destination has its own buffer.
If the write rate to the buffer increases beyond the read rate, the buffer overflows and logging will fail. If this happens, you might find a message containing the following in the log file:
Log message size exceeded. Increase the max message size setting
If you encounter this issue in Edge for Private Cloud 4.15.07 and earlier, locate the message-logging.properties
file and use this solution:
Increase the max.log.message.size.in.kb
property (default value = 128 KB) in the message-logging.properties
file.
For Edge for Private Cloud 4.16.01 and later, set the conf/message-logging.properties+max. log.message.size.in.kb
property in the /opt/apigee/customer/application/message-processor.properties file and restart the Message Processor. Please note that this property is initially commented out by default.
Note: The response message variables in Edge are not available from the Error Flow. These variables are also not available in PostClientFlow if the preceding flow was the Error Flow. If you want to log response information from the PostClientFlow, use the message object. You can use this object to get at headers and other information from the response whether or not there was an error. See Message variables for more information and an example.
Controlling log message timestamp in Edge for Private Cloud
By default, the timestamp in all log messages has the format:
yyyy-MM-dd'T'HH:mm:ss.SSSZ
This system-wide default can be overridden for syslog destinations using the DateFormat
element. The behavior of this template is described in the documentation for Java's SimpleDateFormat class . According to that definition, yyyy
will be replaced with a 4-digit year, MM
will be replaced with a 2-digit month number, and so on. The above format might result in a string of this form:
2022-09-28T22:38:11.721+0000
You can use the conf_system_apigee.syslogger.dateFormat property on the Edge Message Processor to control that format. For example, changing the message format to:
yy/MM/dd'T'HH:mm:ss.SSSZ
..replacing the dashes with slashes, and shortening to a 2-digit year, records a timestamp in the form:
22/09/28T22:38:11.721+0000
To change the format:
- Open the message-processor.properties file in an editor. If the file does not exist, create it:
> vi /opt/apigee/customer/application/message-processor.properties - Set the properties as desired:
conf_system_apigee.syslogger.dateFormat=yy/MM/dd'T'HH:mm:ss.SSSZ - Save your changes.
- Make sure the properties file is owned by the 'apigee' user:
> chown apigee:apigee /opt/apigee/customer/application/message-processor.properties - Restart the Edge Message Processor:
> /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Log file location in Edge for Private Cloud
Edge for Private Cloud 4.16.01 and later
By default, Private Cloud message logs are located in the following directory on Message Processor nodes:
/opt/apigee/var/log/edge-message-processor/messagelogging/org_name/environment/api_proxy_name/revision/logging_policy_name/
You can change the default log location by modifying properties in the message-logging.properties file on the Message Processors:
- bin_setenv_data_dir - Sets the root path for log file storage. For example,
bin_setenv_data_dir=/opt/apigee/var/log
- conf_message-logging_log.root.dir - If you set this to a relative path, such as
conf/message-logging.properties+log.root.dir=custom/folder/
, the path is appended to the bin_setenv_data_dir location.
If you set this to an absolute path, such asconf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages
, message logs will be stored in/opt/apigee/var/log/messages/messagelog/
. An absolute path takes precedence overbin_setenv_data_dir
.
Note that you have to reference the property as conf/message-logging.properties+log.root.dir because it is commented out by default. See Setting a token that is currently commented out for more.
If you want to store log files in a flat file structure so that all log files are put in the same directory, set the conf/message-logging.properties+enable.flat.directory.structure to true in the message-logging.properties file. Messages are stored in the directory specified by the properties above, and the file names take the form of {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename}
.
To set these properties:
- Open the message-processor.properties file in an editor. If the file does not exist, create it:
> vi /opt/apigee/customer/application/message-processor.properties - Set the properties as desired:
conf/message-logging.properties+log.root.dir= /opt/apigee/var/log/messages - Save your changes.
- Make sure the properties file is owned by the 'apigee' user:
> chown apigee:apigee /opt/apigee/customer/application/message-processor.properties - Restart the Edge component:
> /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge for Private Cloud 4.15.07 and earlier
By default, message logs are located in the following location on message processors:
/opt/apigee4/var/log/apigee/message-processor/messagelog/{org}/{environment}/{api_proxy_name}/{revision}/{logging_policy_name}/
You can change the default log location by modifying the following properties in the message-logging.properties file on the message processors:
- data.dir - Sets the root path for log file storage. For example, data.dir=/opt/apigee4/var/log
- log.root.dir - If you set this to a relative path, such as log.root.dir=custom/folder/, the path is appended to the data.dir location.
For example, the combination of the two properties would set the logging directory at /opt/apigee4/var/log/custom/folder/messagelog/ (note that /messagelog is added automatically).
If you set this to an absolute path, such as log.root.dir=/opt/apigee4/var/log/messages , message logs will be stored in /opt/apigee4/var/log/messages/messagelog/. An absolute path in log.root.dir takes precedence over data.dir .
If you want to store log files in a flat file structure so that all log files are put in the same directory, set the enable.flat.directory.structure property to true in the message-logging.properties file on Message Processors. Messages are stored in the directory specified by the properties above, and the file names take the form of {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename} .
Default values for variables in message template
Default values can be specified for each variable in message template separately. For example, if the variable request.header.id
cannot be resolved, then its value is replaced with the value unknown
.
<Message>This is a test message. id = {request.header.id:unknown}</Message>
A common default value can be specified for all the unresolved variables by setting the defaultVariableValue
attribute on the Message
element:
<Message defaultVariableValue="unknown">This is a test message. id = {request.header.id}</Message>
Configuring third-party log management services
The MessageLogging policy lets you send syslog messages to third-party log management services, such as Splunk, Sumo Logic, and Loggly. If you want to send syslog to one of those services, see that service's documentation to configure the service's host, port, and protocol, then set the Syslog element on this policy accordingly.
See the following documentation for third-party log management configuration:
- Splunk (select the product version)
Also see this Apigee Community post: https://community.apigee.com/content/kbentry/13298/log-messages-into-splunk.html - Sumo Logic
- Also see this Apigee Community post: https://community.apigee.com/questions/5226/setting-up-logging-with-sumo-logic-which-host-shou.html
- For a complete example using Sumo Logic as the logging service, see the following Apigee Community post. The solution uses a single JavaScript policy to make HTTP POST requests to Sumo Logic HTTP Source Collector: https://community.apigee.com/articles/32286/logging-to-sumo-logic-using-javascript-and-http.html
- Loggly
When using Loggly,<FormatMessage>true</FormatMessage>
is required in the policy as a child of the<Syslog>
element.
Also see this Apigee Community post for more information about message logging to Loggly: https://community.apigee.com/content/kbentry/14798/log-messages-into-loggly.html
Error reference
В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые устанавливаются Edge, когда эта политика вызывает ошибку. Эту информацию важно знать, если вы разрабатываете правила обработки ошибок. Дополнительные сведения см. в разделах Что нужно знать об ошибках политики и Обработка ошибок .
Ошибки выполнения
Эти ошибки могут возникнуть при выполнении политики.
Код неисправности | Статус HTTP | Причина |
---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed | 500 | См. строку ошибки. |
Ошибки развертывания
Эти ошибки могут возникнуть при развертывании прокси-сервера, содержащего эту политику.
Название ошибки | Причина | Исправить |
---|---|---|
InvalidProtocol | Развертывание политики MessageLogging может завершиться с ошибкой из-за этой ошибки, если протокол, указанный в элементе <Protocol> , недействителен. Допустимые протоколы: TCP и UDP. Для отправки сообщений системного журнала через TLS/SSL поддерживается только TCP. | build |
InvalidPort | Развертывание политики регистрации сообщений может завершиться с ошибкой из-за этой ошибки, если номер порта не указан в элементе <Port> или если он недействителен. Номер порта должен быть целым числом, большим нуля. | build |
Переменные неисправности
Эти переменные устанавливаются при возникновении ошибки во время выполнения. Дополнительные сведения см. в разделе Что нужно знать об ошибках политики .
Переменные | Где | Пример |
---|---|---|
fault.name=" fault_name " | fault_name — это имя ошибки, как указано в таблице ошибок времени выполнения выше. Имя неисправности — это последняя часть кода неисправности. | fault.name Matches "StepDefinitionExecutionFailed" |
messagelogging. policy_name .failed | policy_name — указанное пользователем имя политики, вызвавшей ошибку. | messagelogging.ML-LogMessages.failed = true |
Пример ответа об ошибке
{ "fault":{ "detail":{ "errorcode":"steps.messagelogging.StepDefinitionExecutionFailed" }, "faultstring":"Execution failed" } }
Пример правила неисправности
<FaultRule name="MessageLogging"> <Step> <Name>ML-LogMessages</Name> <Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition> </Step> <Condition>(messagelogging.ML-LogMessages.failed = true) </Condition> </FaultRule>
Flow variables
The following variables are populated on policy failure.
-
messagelogging.failed
-
messagelogging.{stepdefinition-name}.failed
Связанные темы
- Variables exposed by Edge: Variables reference