Finer04's Blog
首页
乱写一通
脑洞破文
随便谈谈
当前播放.page
H3C/HUAWEI 交换机日志 grok 规则
Finer04
July 5, 2020
3265 字
文章目录
上个月被领导的暗示下,需要用新的日志收集系统替代老旧的 Kiwi Syslog,有一说一确实,公司的 kiwisyslog 还停留在 09 年的版本,不然以后写季报和年报都没什么新花样了。 目前还在部署 ELK 作为公司的新日志收集平台,收集日志的 logstash 使用传统的 `UDP 514` 端口主动收信息。看网上的教程基本每个交换机用的 logstash 都是不同交换机不同端口,写 grok 就很方便,而我们的设备已经运作了多年,一台一台交换机改端口实在是麻烦,只能一股脑塞进去过滤。 但网上的匹配规则可能只有中高端交换机的匹配规则,而我们的设备有 S2600 系列的入门交换机,直接使用那些规则可能会无法匹配仅输出原生文本,这就很麻烦,还好 logstash 可以匹配多条规则,第一条不能匹配就用第二条规则。根据交换机日志的组成和配置好 info-center 的多台交换机我写了华三和华为交换机通用的规则。 ## 分析日志 <164>Jun 2 2020 01:53:27 LSW1 %%01LLDP/4/BAD_PACKET(l)[10261]:5 invalid packets were received after latest notification. The last invalid packet came from interface XGigabitEthernet1/0/1 根据官方讲解,可以这样理解日志的每项的意义。  因此上面的日志信息可以这样转换规则: `<时间戳><月> <日> <年> <时间> <交换机名字> %%<版本号> <模块名>/<日志级别>/<日志模块>(<日志标识>[信息计数]):<详情信息>` ## 规则 使用官方提供的预设的正则,运作了半个月暂未看到未转换的日志。 filter { if [type] == "system-syslog"{ grok { match => [ "message" , "<%{BASE10NUM:syslog_pri}>%{DATA:month} %{MONTHDAY:day} %{YEAR:year} %{TIME:time} %{DATA:hostname} %%%{DATA:ddModuleName}/%{POSINT:severity}/%{DATA:brief}:%{GREEDYDATA:message}", "message" , "%{DATA:hostname} %%%{DATA:ddModuleName}/%{POSINT:severity}/%{DATA:digest}: -DevIP=%{IPV4:DevIP}; %{GREEDYDATA:message}", "message" , "%{DATA:hostname} %%%{DATA:ddModuleName}/%{POSINT:severity}/%{DATA:digest}: %{GREEDYDATA:message}", "message" , "%{DATA:hostname} %%%{DATA:ddModuleName}/%{POSINT:severity}/%{DATA:digest}:- %{GREEDYDATA:message}" ] remove_field => ["%{month}","%{day}","%{year}","%{time}"] #add_field => {"syslog_time" => "%{month} %{day} %{year} %{time}"} add_field => {"severity_code" => "%{severity}"} overwrite => ["message"] } } mutate { gsub => [ "severity", "0", "Emergency", "severity", "1", "Alert", "severity", "2", "Critical", "severity", "3", "Error", "severity", "4", "Warning", "severity", "5", "Notice", "severity", "6", "Informational", "severity", "7", "Debug" ] } } ## 测试 接回上面的分析日志的那条命令,使用 grok debugger 可以成功匹配 <164>Jun 2 2020 01:53:27 LSW1 %%01LLDP/4/BAD_PACKET(l)[10261]:5 invalid packets were received after latest notification. The last invalid packet came from interface XGigabitEthernet1/0/1  第二条,部分华三设备的日志无法用第一条匹配,毕竟多出了 `DevIP`,而且本身 logstash 会自动加上当前时间戳到 elasticsearch,所以下面的规则已经不会先匹配日志时间了。 LSW2 %%10ARP/5/ARP_DUPLICATE_IPADDR_DETECT(l): -DevIP=10.100.100.100; Detected an IP address conflict. The device with MAC address X-X-X-X connected to GigabitEthernet1/0/24 in VLAN 12 and the device with MAC address X-X-X-X connected to GigabitEthernet1/0/24 in VLAN 12 are using the same IP address 1.2.3.4.  下面两条规则是给连 `DevIP` 也没有的日志使用,区别就是详情信息前多了个 `-`,暂时找不到相关日志来示例。
logstash
elk
日志
评论已关闭
▲ Top
评论已关闭