一、工具简介

rsyslog

https://www.rsyslog.com/

  • rsyslog 提供高性能,高安全性功能和模块化设计。 虽然它最初是作为常规系统日志开发的,但是 rsyslog 已经发展成为一种瑞士军刀,可以接受来自各种来源的输入,转换它们,并将结果输出到不同的目的地。
  • 当应用有限的处理时,RSYSLOG 每秒可以向本地目的地传送超过一百万条消息。即使有远程目的地和更复杂的处理,性能通常被认为是“惊人的”。在 centos 6 及之前的版本叫做 syslog,centos 7 开始叫做 rsyslog,根据官方的介绍,rsyslog(2013 年版本)可以达到每秒转发百万条日志的级别

ELK

https://www.elastic.co/cn/elastic-stack/

  • Elasticsearch:通过 Elasticsearch,您可以轻松地存储、搜索和分析大量数据。
  • Logstash:数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择,可以同时从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。
  • Kibana:在 Kibana 中通过炫酷的可视化来探索您的数据,从华夫饼图到热点图,再到时序数据分析,应有尽有。

二、部署过程

rsyslog RULES规则 rsyslog elk_elk

2.1 开启rsyslog的远程访问功能

ubuntu1804系统
开启tcp514端口,并且定义local6类别的所有级别的日志 发往516端口,logstash配置的端口。

# vim /etc/rsyslog.conf 
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

# vim /etc/rsyslog.d/50-default.conf
local6.* @@10.0.0.134:516

systemctl restart rsyslog

2.2 ensp模拟路由器并开启syslog功能

[Huawei]interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0]ip address 10.0.0.253 255.255.255.0
[Huawei-GigabitEthernet0/0/0]quit 
[Huawei] info-center enable  # 开启信息中心。
# 指定向日志主机输出日志信息(log信息)的通道为 loghost 通道。
[Huawei] info-center loghost 10.0.0.134 channel loghost
# 关闭所有模块(模块:各种信息,如ARP、pppoe、nat)日志主机的 log、trap、debug 的状态。Log:日志信息 trap:告警信息 debug:调试信息
[Huawei] info-center source default channel loghost debug state off log state off trap state off
# 将 IP 地址为10.0.0.134的主机作为日志主机,设置信息级别为informational,输出语言为英文。
[Huawei] info-center loghost 10.0.0.134 facility local6 language english
#允许输出信息的模块为所有模块“source:default ”
#通道为 loghost,同时log 信息级别为information,trap和debug信息为
#默认值,可以通过dis channel loghost 产看loghost通道三种信息状态。
[Huawei] info-center source default channel loghost log level informational
#查看通道状态
< Huawei >display channel loghost
channel number:2, channel name:loghost
MODU_ID    NAME    ENABLE LOG_LEVEL     ENABLE TRAP_LEVEL    ENABLE DEBUG_LEVEL
0xffff0000 default Y      informational Y      debugging     N      debugging

2.3 logstash读取516端口的内容发送到es

# cp tcp.conf net-equipment.conf
# vim net-equipment.conf
input {
    tcp {
        port => 516
        type => "net-equipmentlog"
        mode => "server"
    }
}
output {
    elasticsearch{
        hosts => ["10.0.0.132:9200"]
        index => "oss-ne-infolog-%{+YYYY.MM.dd}"
    }
}

# systemctl stop logstash.service 
# /usr/share/logstash/bin/logstash -f net-equipment.conf

2.4 测试

触发路由器日志事件

rsyslog RULES规则 rsyslog elk_elasticsearch_02


rsyslog RULES规则 rsyslog elk_elk_03

2.5 kibana添加索引模式匹配ES中的索引

rsyslog RULES规则 rsyslog elk_elk_04


rsyslog RULES规则 rsyslog elk_rsyslog RULES规则_05

rsyslog RULES规则 rsyslog elk_rsyslog_06


rsyslog RULES规则 rsyslog elk_rsyslog_07