使用ELK收集网络设备日志的案例
2021/12/16 23:44:09
本文主要是介绍使用ELK收集网络设备日志的案例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
微信公众号:运维开发故事,作者:wanger
简介
随着机房内的服务器和网络设备增加,日志管理和查询就成了让系统管理员头疼的事。
系统管理员遇到的常见问题如下:
-
日常维护过程中不可能登录到每一台服务器和设备上去查看日志;
-
网络设备上的存储空间有限,不可能存储日期太长的日志,而系统出现问题又有可能是很久以前发生的某些操作造成的;
-
在某些非法侵入的情况下,侵入者一般都会清除本地日志,清除侵入痕迹;
-
zabbix等监控系统无法代替日志管理,无法监控如系统登录、计划任务执行等项目。
基于上述原因,在当前的网络环境中搭建一台用于日志集中管理的Rsyslog日志服务器就显得十分有必要了。
Rsyslog服务的优点如下:
-
Rsyslog服务器可以大多数的网络设备支持,在网络设备的系统设备选项中大多都有远程日志服务的配置选项。只需要填写上IP地址和端口(大多数设备已经默认是514了),然后确定就可以了;
-
Linux服务器只需要在本地的Rsyslog服务配置中加入简单的一行就可以将日志发送到日志服务器,布署和配置起来十分简单;
部署架构
部署架构
Rsyslog配置
系统环境及软件版本:CentOS Linux release 7.5.1804 (Core) Elasticserch-6.8.4 Kibana-6.8.4 Logstash-6.8.4 Filebeat-6.8.4 Rsyslog-8.24.0
将SELINUX设置为disabled
# setenforce 0 # sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
防火墙配置
firewall-cmd --add-service=syslog --permanent firewall-cmd --reload
检查是否安装了rsyslog软件
CentOS7默认会安装rsyslog
[root@ZABBIX-Server ~]# rpm -qa |grep rsyslog rsyslog-8.24.0-16.el7.x86_64
编辑rsyslog配置文件
vim /etc/rsyslog.conf #按如下进行更改
[root@ZABBIX-Server mnt]# egrep -v "*#|^$" /etc/rsyslog.conf $ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514 $WorkDirectory /var/lib/rsyslog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $IncludeConfig /etc/rsyslog.d/*.conf $OmitLocalLogging on $IMJournalStateFile imjournal.state *.info;mail.none;authpriv.none;cron.none;local6.none;local5.none;local4.none /var/log/messages $template h3c,"/mnt/h3c/%FROMHOST-IP%.log" local6.* ?h3c $template huawei,"/mnt/huawei/%FROMHOST-IP%.log" local5.* ?huawei $template cisco,"/mnt/cisco/%FROMHOST-IP%.log" local4.* ?cisco
$ModLoad imudp # immark是模块名,支持tcp协议 $ModLoad imudp # imupd是模块名,支持udp协议 $InputTCPServerRun 514 $UDPServerRun 514 #允许514端口接收使用UDP和TCP协议转发过来的日志
注意:
*.info;mail.none;authpriv.none;cron.none;local6.none;local5.none;local4.none /var/log/messages 默认没有添加local6.none;local5.none;local4.none 命令,网络日志在写入对应的文件的同时会写入/var/log/messages 中
检查rsyslog服务
重启rsyslog服务
systemctl restart rsyslog.service
日志存放目录
网络设备将日志指向syslog服务器,注意不同厂商的设备对应的local不同,对应关系如下:
/mnt/huawei --- local6 /mnt/h3c --- local5 /mnt/cisco --- local4
网络设备配置
Huawei:info-center loghost source Vlanif99 info-center loghost 192.168.99.50 facility local5 H3C: info-center loghost source Vlan-interface99 info-center loghost 192.168.99.50 facility local6 CISCO: (config)#logging on (config)#logging 192.168.99.50 (config)#logging facility local4 (config)#logging source-interface e0 Ruijie:logging buffered warnings logging source interface VLAN 99 logging facility local6 logging server 192.168.99.50
注意:192.168.99.50为rsyslog服务器的IP
编辑filebeat配置文件
收集rsyslog下的日志文件到logstash
[root@ZABBIX-Server mnt]# egrep -v "^#|^$" /etc/filebeat/filebeat.yml filebeat.inputs: - type: log enabled: true paths: - /mnt/huawei/* tags: ["huawei"] include_lines: ['Failed','failed','error','ERROR','\bDOWN\b','\bdown\b','\bUP\b','\bup\b'] drop_fields: fields: ["beat","input_type","source","offset","prospector"] - type: log paths: - /mnt/h3c/* tags: ["h3c"] include_lines: ['Failed','failed','error','ERROR','\bDOWN\b','\bdown\b','\bUP\b','\bup\b'] drop_fields: fields: ["beat","input_type","source","offset","prospector"] setup.template.settings: index.number_of_shards: 3 output.logstash: hosts: ["192.168.99.185:5044"] processors: - add_host_metadata: ~ - add_cloud_metadata: ~
编辑logstash配置文件
对filebeat传来的日志根据标签不同分别进行处理,将处理完成的日志数据传到es上存储,并在kibana上做进一步的可视化展示
[root@elk-node1 ~]# egrep -v "^#|^$" /etc/logstash/conf.d/networklog.conf input { beats { port => 5044 } } filter { if "huawei" in [tags] { grok{ match => {"message" => "%{SYSLOGTIMESTAMP:time} %{DATA:hostname} %{GREEDYDATA:info}"} } } else if "h3c" in [tags] { grok{ match => {"message" => "%{SYSLOGTIMESTAMP:time} %{YEAR:year} %{DATA:hostname} %{GREEDYDATA:info}"} } } mutate { remove_field => ["message","time","year","offset","tags","path","host","@version","[log]","[prospector]","[beat]","[input][type]","[source]"] } } output{ stdout {codec => rubydebug} elasticsearch { index => "networklogs-%{+YYYY.MM.dd}" hosts => ["192.168.99.185:9200"] sniffing => false } }
在kibana上做可视化配置
创建一个索引模式匹配存储的网络设备日志索引
创建一个数据表
kibana的数据表可以导出为CSV文件
创建一个饼状图
欢迎各位一起交流
这篇关于使用ELK收集网络设备日志的案例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14后台交互资料入门指南
- 2024-11-14如何轻松创建项目环境:新手入门教程
- 2024-11-14如何抽离公共代码:初级开发者指南
- 2024-11-14Python编程入门指南
- 2024-11-14Python编程入门:如何获取参数
- 2024-11-14JWT 用户校验:简单教程与实践
- 2024-11-14Pre-commit 自动化测试入门指南
- 2024-11-14Python编程基础
- 2024-11-14Server Action入门教程:轻松掌握服务器操作
- 2024-11-14Server Component入门教程:轻松搭建服务器组件