Многострочная обработка одного файла журнала с помощью promtail
У меня есть один файл журнала, к которому постоянно добавляются следующие поля, заключенные в скобки:
Я планирую использовать Promtail для анализа этого единственного файла в режиме реального времени по мере добавления к нему новых записей.
Возможно ли такое с Промтейлом? Я не уверен, что он может обрабатывать многострочную обработку. Если это действительно так, то чего ожидает Promtail? Один файл с единственной записью, которая постоянно перезаписывается новой информацией?
1 ответ
Это довольно старый вопрос, но все же:
Да, это возможно. Я использую его в похожем сценарии. Сервис добавляет новую строку (JSON) в конец файла, а затем она обрабатывается Promtail.
Конфигурация promtail выглядит примерно так:
scrape_configs:
- job_name: <name>
pipeline_stages:
- json:
expressions:
thread: thread
level: level
message: message
timestamp: timestamp
traceID: trace-id
correlationID: correlation-id
- labels:
level:
- template:
source: new_key
template: 'thread={{ .thread }} level={{ .level | ToLower }} correlationID={{ .correlationID }} traceID={{ .traceID }} | {{ .message }}'
- output:
source: new_key
static_configs:
- targets:
- localhost
labels:
job: <some job name>
__path__: /log/output.json
строка json (предварительно настроенная) выглядит так:
{"instant": {
"epochSecond": 1613470246,
"nanoOfSecond": 779983000
},
"thread": "thread-name",
"level": "WARN",
"loggerName": "it.issome.logger.class.name",
"message": "Some kind of message",
"endOfBatch": false,
"loggerFqcn": "org.apache.logging.slf4j.Log4jLogger",
"threadId": 31,
"threadPriority": 5,
"correlation-id": "correlation-id",
"trace-id": "d6555df8asdf456a",
"timestamp": "2021-02-16T10:10:46.779+0000"
}
Там не так много хороших материалов и советов по устранению неполадок, связанных с промтейлом, или я плохо его ищу :)