所以我有一个全新的 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