Grok Exporter
Grok exporter - экспортер для мониторинга логов. Он парсит логи применяя регулярки, и отдает prometheus метрики. Части строк логов можно мапить в качестве лейбла метрики, или даже ее значения.
Ссылка на репозиторий: https://github.com/fstab/grok_exporter
Пример конфига:
global: config_version: 3 input: type: file path: ./example/example.log readall: true imports: - type: grok_patterns dir: ./logstash-patterns-core/patterns metrics: - type: counter name: grok_example_lines_total help: Counter metric example with labels. match: '%{DATE} %{TIME} %{USER:user} %{NUMBER}' labels: user: '{{.user}}' logfile: '{{base .logfile}}' server: port: 9144
Как можно увидеть в примере, grok уже содержит в себе определенные паттерны, предназначение которых - упростить написание выражения, и повысить читаемость конфига.
Ознакомиться с этими паттернами можно в репозитории, либо на сервере, в папке с конфигом грока (/etc/grok_exporter/patterns).
Чтобы добавить свои паттерны, нужно включить в конфиг секцию grok_patterns:
grok_patterns:
- 'EXIM_MESSAGE [a-zA-Z ]*'
- 'EXIM_SENDER_ADDRESS F=<%{EMAILADDRESS}>'
Можно мониторить сразу несколько логов одним конфигов, если указать из словарем:
input:
type: file
paths:
- /var/log/nginx/pay-api.digitalspb.com_access.log
- /var/log/nginx/pay.digitalspb.com_access.log
readall: false
fail_on_missing_logfile: true
Пример реального конфига:
global:
config_version: 3
input:
type: file
paths:
- /var/log/nginx/pay-api.digitalspb.com_access.log
- /var/log/nginx/pay.digitalspb.com_access.log
readall: false
fail_on_missing_logfile: true
imports:
- type: grok_patterns
dir: "/etc/grok_exporter/patterns"
grok_patterns:
- 'PL3ENDPOINT (/Teko/callback\?type=refund %{DATA}|/Teko/callback\?type=payment %{DATA}|/Mts/PayClick/callback/tarif
fication/subscription %{DATA}|/Mts/MtsStream2/callback %{DATA}|/API/XML/InvoiceManagementService.ashx %{DATA})'
- help: HTTP respcodes by endpoint
labels:
logfile: '{{base .logfile}}'
request: '{{.rawrequest}}'
method: '{{.method}}'
value: '{{.response}}'
match: '%{IPORHOST} %{DATA} \[%{HTTPDATE}\] %{WORD} "(?:%{WORD:method} %{PL3ENDPOINT:rawrequest})" %{NUMBER:response} %{NUMBER} %{DATA} %{DATA} "%{URIHOST}"'
name: planet3_respcodes_by_endpoint
type: gauge
server:
host: 172.27.247.16
protocol: http
port: 9144
Ссылки:
- Более подробно с форматом конфиг-файла, типом метрик, и т.д можно ознакомиться в официальной документации.
- Для дебага выражений есть незаменимая тулза - Grok debugger.
No Comments