Назад | Перейти на главную страницу

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 разделены?

Нужно ли мне создавать «уникальный» узор для обоих?

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

Я протестировал их оба в конструктор 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
дата: 02.06.2015 · 16: 45: 49.515277
osd_epoch: 7f4968cfe700

Если вам также нужны отдельные поля для каждого элемента этого соединения (IP-адрес клиента a / b, порт клиента 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
дата: 02.06.2015 · 16: 45: 49.515277
osd_epoch: 7f4968cfe700