Многострочная обработка единого файла журнала с помощью promtail

#logging #grafana-loki

#ведение журнала #графана-локи

Вопрос:

У меня есть один файл журнала, к которому постоянно добавляются следующие поля, заключенные в квадратные скобки:

введите описание изображения здесь

Я планирую использовать 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"
}
  

В promtail не так много хороших материалов и советов по устранению неполадок, или я плохо разбираюсь в этом 🙂