暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

设备日志还能这样收集?传统网工表示很震惊

稻壳编程 2021-06-03
1319

211工程院校贵州大学管理学院硕士研究生、全国百强城商行资讯科技部五级专技工程师、互联网金融行业资深DevOps研发工程师、金融科技运维自动化平台研发项目经理。曾在国内多家知名互联网公司 平安科技、微众银行、顺丰科技、魅族任职. 具有多年国内一线互联网公司自动化运维平台设计与开发经验。


 1 

前言

日志文件中记录了系统在什么时间、什么地点(IP地址)、哪个服务出现了哪些问题,通过对设备运行日志的收集,并在故障发生后通过日志信息找到故障根因,是IT运维过程中非常重要的一项工作。IT管理人员可能遇到的一些常见问题可能包括以下几个方面:首先,对于网络设备来说,默认情况下路由器、交换机等设备在运行过程中产生的日志,如果不将它们推送至日志服务器进行持久化存储,那么产生的日志仅会保存在设备自身的RAM当中,由于设备本身的存储空间有限,设备会自动删除旧日志数据以释放空间来存放新产生的日志,所以设备本身是无法存放过多的历史日志数据的;其次,日常维护过程中也不可能登陆到每一台设备上去查看日志;再次,在某些非法入侵的场景中,侵入者通常会清理本地日志,清除侵入痕迹。基于以上原因,在当前的网络中搭建一个用于采集与集中管理日志数据的日志平台就显得十分有必要了。

 2 

实验拓扑图

需求: 
    将路由器R1、R2产生的日志数据推送至日志服务器PC1,继续向下阅读本文之前,请先确保已搭建了如下所示的网络拓扑图,确保设备之间能相互通信。
设备型号:
    路由器 Cisco R7200
    日志服务器: CentOS7.4



 3 

Rsyslog方案

Linux系统日志机制的核心是rsyslog守护进程,它负责监听系统在运行过程中产生的日志信息并将日志信息追加写入到对应的日志文件中,同时rsyslog守护进程也支持接收从远端发来的日志数据,实现对数据中心内各类设备产生的日志集中存储并持久化。rsyslog服务的配置文件位于/etc/rsyslog.conf中,配置包含全局配置与规则两部分。在全局配置项下定义了rsyslog守护进程的全局属性,如主信息队列大小(MainMessageQueueSize)、加载外部模块(ModLoad)、监听端口以接收远端日志等;规则由选择器(selector)与动作(action)组成,selector部分指定了源和日志等级,action部分指定对应的操作。


3.1 网络设备配置
    R1(config)#logging on 
    R1(config)#logging trap debugging
    R1(config)#logging host 172.16.70.143
    R1(config)#logging source-interface f0/0
    R1(config)#logging facility local4
    注: R1与R2相同配置

    3.服务器端配置
    3.2.1. 修改rsyslog启动参数
    修改syslogd_options加入-r选项,使rsyslog服务允许接收外来日志。
      [root@localhost ]# vim etc/sysconfig/rsyslog
      SYSLOGD_OPTIONS="-r"

      3.2.2  修改rsyslog配置文件

        [root@localhost ]#  vim etc/rsyslog.conf  
        # 取消以下配置注释, rsyslog监听TCP与UDP514端口,接收外来日志
        # Provides UDP syslog reception
        $ModLoad imudp
        $UDPServerRun 514
        # Provides TCP syslog reception
        $ModLoad imtcp
        $InputTCPServerRun 514


        local4.* var/log/cisco.log
        # 与网络设备上配置的logging facility对应, 接收的外来日志保存在local4下, 所有等级的日志都写入到指定的日志文件中

        3.2.3 重启服务

          [root@localhost local]# systemctl restart rsyslog

          3.3 验证配置

          在网络设备上随意配置一些命令,如端口的up/down,使设备产生日志,观察日志服务器是否能收到日志信息。如下所示:



           4 

          filebeat方案

          filebeat是一个轻量级的日志采集器,用于转发和集中日志数据。filebeat作为代理安装在服务器上,监视指定的日志文件或位置,收集日志事件,并将它们转发给Elasticsearch、Logstash或kafka。
          4.1 服务器端配置
          4.1.1 下载并安装filebeat
            [root@localhost local]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.1-linux-x86_64.tar.gz
            [root@localhost local]# tar -xzvf filebeat-7.10.1-linux-x86_64.tar.gz

            4.1.2 配置文件解析

            配置文件位于filebeat家目录中的/usr/local/filebeat-7.6.2/filebeat.yml中,filebeat支持多种output,但在本文中使用文件作为输出,修改配置文件,添加以下内容

              output.file:
              path: "/tmp/filebeat"
              filename: filebeat_cisco.log

              此处需要注意的是,filebeat可以同时设置多个input,但output只能有一个,此处我们使用的output类型为本地文件,但实际环境中,通常将output设置为Elasticsearch搜索引擎或Kafka消息队列,以便后续对日志检索或流式处理。继续配置input,此处我们采用配置syslog型输入,添加配置如下

                filebeat.inputs:
                - type: syslog
                protocol.udp:
                host: "172.16.70.143:9000"


                filebeat.inputs:
                - type: syslog
                protocol.tcp:
                host: "172.16.70.143:9000"

                综上,filebeat启动后将监听TCP与UDP的9000端口。

                4.1.3 启动服务

                  [root@localhost filebeat-7.13.0]# nohup ./filebeat -e  -c filebeat.yaml   &

                  4.1.4 验证服务


                  4.2 网络设备配置

                    R1(config)#logging on 
                    R2(config)#logging trap debugging
                    R2(config)#logging source-interface FastEthernet0/0
                    R2(config)#logging host 172.16.70.143 transport tcp port 9000
                    R2(config)#logging host 172.16.70.143 transport udp port 9000

                    注: R1与R2相同配置


                    4.3 验证配置

                    在网络设备上随意配置一些命令,如端口的up/down,使设备产生日志,观察日志服务器是否能收到日志信息,如下图所示:

                    综上,日志接收成功,filebeat为原始日志附加了很多内容,原始数据保存在JSON结构的Message字段中。



                     5 

                    结束语

                    如果本文可以对您的工作学习带来帮助,请扫描左侧赞赏码以资鼓励作者;文章勘误请扫描右侧二维码联系作者。


                    文章转载自稻壳编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论