Я использую Grok Exporter для экспорта метрик Prometheus, которые очищаются с интервалом 15 секунд, а затем сохраняются в InfxDB. Моя конфигурация экспортера Grok выглядит следующим образом:
global:
config_version: 2
retention_check_interval: 100ms
input:
type: file
fail_on_missing_logfile: false
path: /logs/*.log # Specify the location of the your log
readall: false # This should be True if you want to read whole log and False if you want to read only new lines.
grok:
patterns_dir: ./patterns
metrics:
- type: counter
name: my_logs
help: Counter metric example with labels.
retention: 15s
match: \[Name:(?<name>(.*)), Code:(?<code>(.*))\]
labels:
name: '{{ '{{' }} .name{{ '}}' }}'
code: '{{ '{{' }} .code{{ '}}' }}'
Предположим, 20 сообщений журнала с одинаковыми значениями меток записываются в течение 20 секунд. В первом цикле прометея через 15 сек мы получаем значение = 14 (совпадают 14 строк). Тогда, в идеале, при следующем цикле мы хотели бы видеть значение = 6 сейчас на Grok, и это сохраняется в infxDb с помощью prometheus. Вместо [14,6] , сохраняемых как записи в потоке, я получаю [14,20] , что не является истинным представителем количества сообщений журнала, полученных во время следующей очистки. .
Кто-нибудь знает, как я могу настроить prometheus и grok для получения правильных показателей, как описано? Любая помощь будет принята с благодарностью. Спасибо.