Logstash, соответствующий ceph клиенту и серверу

Итак, у меня новая установка logstash, и я пытаюсь развернуть logstash, чтобы получить доступ к журналам.

Я прохожу и буду в конечном итоге сегментировать фильтры logstash на основе подсистемы, и в настоящее время я работаю над анализом журналов osd.

Вот пример строки, с которой я работаю:

2015-06-02 16:45:49.515277 7f4968cfe700  0 -- 10.16.64.68:6813/97613 >> 10.16.64.29:6805/35260 pipe(0x25e36500 sd=538 :6813 s=2 pgs=15426 cs=623 l=0 c=0x1586fa20).fault with nothing to send, going to standby

Мой фильтр в настоящее время выглядит так:

%{TIMESTAMP_ISO8601:date} %{BASE16FLOAT:osd_epoch}  %{NUMBER:error_bool} -- %{CEPH_HOST:client_A} %{FROMTO} %{CEPH_HOST:client_B}

Где ${CEPH_HOST} и ${FROMTO} - просто короткие шаблоны::

FROMTO (?:[<|>]){1,2}
CEPH_HOST (%{IPORHOST:ip}\:%{POSINT:port}/%{POSINT:socket})

Проблема заключается в том, что в IP сейчас размещены два адреса.

  "client_A": [
[
  "10.16.64.68:6813/97613"
]
],
"ip": [
[
  "10.16.64.68",
  "10.16.64.29"
]
],
"HOSTNAME": [
[
  "10.16.64.68",
  "10.16.64.29"

Я хотел бы, чтобы это так client_a имеет IP и client_b имеет IP.

Однако имеет ли это значение в конце?

Могу ли я оставить все как есть?

Если так, смогу ли я отсортировать это позже? Если нет, то как мне сегментировать его так, чтобы client_a а также client_b отделены?

Нужно ли создавать "уникальный" шаблон для обоих?

1 ответ

Решение

Я не уверен, что вы когда-нибудь работали над тем, как это сделать, но я искал что-то похожее для своей среды, и я думаю, что единственный способ сделать это - настроить шаблоны для каждого клиента.

Я проверил их обоих в конструкторе grok, и они возвращают допустимые поля.

Если вы просто хотите иметь поле для клиента A (10.16.64.68:6813/97613) и клиента B (10.16.64.29:6805/35260), это будет работать:

%{TIMESTAMP_ISO8601:date} %{BASE16FLOAT:osd_epoch}  %{NUMBER:error_bool} -- (?<client_a>(%{IPORHOST}\:%{POSINT}/%{POSINT})) %{FROMTO} (?<client_b>(%{IPORHOST}\:%{POSINT}/%{POSINT}))

2015-06-02 16: 45: 49.515277 7f4968cfe700 0 - 10.16.64.68:6813/97613 10.16.64.29:6805/35260 СОГЛАСОВАНО
client_a: 10.16.64.68:6813/97613
client_b: 10.16.64.29:6805/35260
error_bool: 0
дата: 2015-06-02 · 16: 45: 49.515277
osd_epoch: 7f4968cfe700

Если вам также нужны отдельные поля для каждого элемента этого соединения (клиент a/b IP, клиент a / b порт, клиент a / b сокет), этот шаблон должен работать:

%{TIMESTAMP_ISO8601:date} %{BASE16FLOAT:osd_epoch}  %{NUMBER:error_bool} -- (?<client_a>(%{IPORHOST:client_a_ip}\:%{POSINT:client_a_port}/%{POSINT:client_a_socket})) %{FROMTO} (?<client_b>(%{IPORHOST:client_b_ip}\:%{POSINT:client_b_port}/%{POSINT:client_b_socket}))

2015-06-02 16: 45: 49.515277 7f4968cfe700 0 - 10.16.64.68:6813/97613 10.16.64.29:6805/35260 СОГЛАСОВАНО
client_a: 10.16.64.68:6813/97613
client_b: 10.16.64.29:6805/35260
client_a_ip: 10.16.64.68
client_b_ip: 10.16.64.29
client_a_port: 6813
client_b_port: 6805
client_a_socket: 97613
client_b_socket: 35260
error_bool: 0
дата: 2015-06-02 · 16: 45: 49.515277
osd_epoch: 7f4968cfe700

Другие вопросы по тегам