Анализ журнала ошибок Apache 2 с помощью Grok Debugger

Я пытаюсь настроить шаблон в отладчике Grok по адресу http://grokdebug.herokuapp.com/

Вход:

[Sat Aug 01 21:54:54.048805 2015] [:error] [pid 4384:tid 140066215139072] [client 192.168.1.1:62028] PHP Notice:  Undefined index: foo in /home/koan/websightdesigns/websightdesigns.com/ierr.php on line 3

Шаблон:

\[(?<timestamp>%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\]\s\[:%{LOGLEVEL:loglevel}\]

То, что у меня пока работает, выводит:

{
  "timestamp": [
    [
      "Sat Aug 01 21:54:54.048805 2015"
    ]
  ],
  "day": [
    [
      "Sat"
    ]
  ],
  "month": [
    [
      "Aug"
    ]
  ],
  "MONTHDAY": [
    [
      "01"
    ]
  ],
  "TIME": [
    [
      "21:54:54.048805"
    ]
  ],
  "HOUR": [
    [
      "21"
    ]
  ],
  "MINUTE": [
    [
      "54"
    ]
  ],
  "SECOND": [
    [
      "54.048805"
    ]
  ],
  "YEAR": [
    [
      "2015"
    ]
  ],
  "loglevel": [
    [
      "error"
    ]
  ]
}

Все идет нормально. Однако проблема, с которой я сталкиваюсь, заключается в том, что если я попытаюсь добавить к своему шаблону, чтобы получить следующий раздел, раздел [pid 4384:tid 140066215139072], я получаю ошибку компиляции, как бы я ни пытался.

Я пробовал:

\[(?<timestamp>%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\]\s\[:%{LOGLEVEL:loglevel}\]\s\[%{PID:pid}\]

И:

\[(?<timestamp>%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\]\s\[:%{LOGLEVEL:loglevel}\]\s\[%{PID:pid}:%{TID:tid}\]

Как и другие шаблоны, но вроде ничего не работает. Кто-нибудь знает, что я делаю неправильно, пытаясь преобразовать [pid 4384:tid 140066215139072] в переменные?


person Ezra Free    schedule 02.08.2015    source источник


Ответы (1)


Поработав над этим еще немного, теперь у меня работает следующий шаблон:

\[(?<timestamp>%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[.*:%{LOGLEVEL:loglevel}\] \[pid %{NUMBER:pid}:tid %{NUMBER:tid}\] \[client %{IP:clientip}:.*\] %{GREEDYDATA:errormsg}
person Ezra Free    schedule 02.08.2015