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