隨着機房內的服務器和網絡設備增長,日誌管理和查詢就成了讓系統管理員頭疼的事。node
基於上述緣由,在當前的網絡環境中搭建一臺用於日誌集中管理的Rsyslog日誌服務器就顯得十分有必要了。linux
系統環境及軟件版本: 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
# setenforce 0 # sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
firewall-cmd --add-service=syslog --permanent firewall-cmd --reload
#CentOS7默認會安裝rsyslog vim
[root@ZABBIX-Server ~]# rpm -qa |grep rsyslog rsyslog-8.24.0-16.el7.x86_64
vim /etc/rsyslog.conf #按以下進行更改 ruby
[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 中
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架構
收集rsyslog下的日誌文件到logstashelasticsearch
[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: ~
對filebeat傳來的日誌根據標籤不一樣分別進行處理,將處理完成的日誌數據傳到es上存儲,並在kibana上作進一步的可視化展現tcp
[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 } }
建立一個索引模式匹配存儲的網絡設備日誌索引 ide
kibana的數據表能夠導出爲CSV文件
歡迎關注我的公號「沒有故事的陳師傅」