【elk】网络设备syslog日志收集

2 篇文章 0 订阅
1 篇文章 0 订阅

1.概述

本文描述将网络日志(会话日志,操作日志等)以syslog方式保存到elk日志服务器集群中及日志展示的实现。

2.日志源配置

首先对日志源即网络设备进行配置,以下列举华为防火墙及交换设备

1.防火墙开启日志

在这里插入图片描述防火墙日志配置(另在策略中也要开启日志记录功能,图略

2.交换机开启日志

info-center source default channel 4 log level error
info-center loghost 192.168.171.7 channel 4 local-time
info-center trapbuffer channel 4

3.日志主机配置

该主机上主要安装了rsyslog,docker及filebeat(docker版本)组件

1.rsyslog配置

  1. 安装请用yum
  2. 配置rsyslog模板
    由于生产中需要收集不同网络设备的日志,因此这里用不通网络设备的ip建立目录及各自的日志

$template diff_ip,“/var/log/network-log/%fromhost-ip%/messages-%$now%.log”
if $fromhost-ip != ‘127.0.0.1’ then ?diff_ip
#local7.* /var/log/boot.log
local7.* ?diff_ip

当配置完上面的模板,rsyslog收到日志源的数据后,会产生如下临时日志,结构如模板设置一样
在这里插入图片描述

  1. 启动服务
systemctl start rsyslog

2.docker及filebeat配置

  1. yum安装docker
  2. 拉取filebeat镜像

###拉取filebeat镜像文件
docker pull docker.elastic.co/beats/filebeat:7.10.0
###将提前准备好filebeat.yml文件放置在/etc/zabbix/docker_vol/下
###按照以下命令及参数,运行filebeat,注意这里需要将宿主机系统的部分文件挂载到filebeat容器中,由于filebeat读取的是宿主机上rsyslog的日志文件,因此还需要将filebeat.yml中的日志来源目录也挂载到容器的目录中,这都在下面的命令中体现
docker run -d --name=network-sys --user=root --volume=“/etc/zabbix/docker_vol/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro” --volume=“/var/lib/docker/containers:/var/lib/docker/containers:ro” --volume=“/var/run/docker.sock:/var/run/docker.sock:ro” --volume=“/var/log/network-log:/var/log/network-log:ro” docker.elastic.co/beats/filebeat:7.8.1 filebeat -e -strict.perms=false

  1. filebeat.yml如下,这里往es导入日志后是按天生成es的index
filebeat.inputs:
#- type: syslog
- type: log
#  protocol.udp:
#    host: "192.168.171.7:5140"
  encoding: gbk
  paths: '/var/log/network-log/*/*.log'
#output.console:
#  string: 
processors:
  - add_tags:
     when:
      regexp:
       log.file.path: "10.222.222.[2,3]{1,1}"
     tags: ["FT2Q-FW"]
  - add_tags:
     when:
      regexp:
       log.file.path: "10.100.1.[2,3]{1,1}/"
     tags: ["FT1Q-FW"]
  - add_tags:
     when:
      regexp:
       log.file.path: "10.100.1.[1][9]|10.100.[2][0]"
     tags: ["FT3Q-FW"]
  - add_tags:
     when:
      regexp:
       log.file.path: "10.100.1.[1][0]|10.100.1,[1][1]"
     tags: ["SJHL-FW"]
  - add_tags:
     when:
      regexp:
       log.file.path: "192.168.171.1"
     tags: ["FT1Q-core"]
output.elasticsearch:
  hosts: ["192.168.170.108:9201", "192.168.170.109:9201", "192.168.170.112:9201"]
  username: "elastic"
  password: "elastic_PASS"
  index: "network-%{[agent.version]}-%{+yyyy.MM.dd}"
#  indices: 
#    - index: "network-ft1q-%{[agent.version]}-%{+yyyy.MM.dd}"
#      when:
#        or:
#        - contains:
#          source: 10.222.222.2 
#        - contains:
#          source: 10.100.1.3
#    - index: "network-ft3q-%{[agent.version]}-%{+yyyy.MM.dd}"
#      when.contains:
#    - index: "network-sjhl-${[agent.version]}-%{+yyyy.MM.dd}"
setup.template.name: "network-log"
setup.template.pattern: "network-*"
setup.template.enabled: true
setup.ilm.enabled: false
  1. docker方式启动filebeat
docker run -d --name=network-sys --user=root --volume="/etc/zabbix/docker_vol/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro" --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" --volume="/var/run/docker.sock:/var/run/docker.sock:ro" --volume="/var/log/network-log:/var/log/network-log:ro" docker.elastic.co/beats/filebeat:7.8.1 filebeat -e -strict.perms=false

4.elk配置

日志是通过日志服务器,转发到es集群上面的,但是我这里主要是在kibana上进行配置。

  1. 创建索引(index)模板
    在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/2020111511173570.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lxOTAxMjU=,size_16,color_FFFFFF,t_70#pic_center
  2. 在discover中可通过索引模式(就是上面的索引模板)的选择看到收集到的日志
    在这里插入图片描述

5.日志清理

这里的日志清理分为两步,一步是清理rsyslog中的日志,还有一步是对es集群主机中的index做生命周期的设置

1.rsyslog清理

  1. 在rsyslog服务器(=filebeat也在这上面=)先定制删除日志的脚本auto_remove_log.py,放置的目录如下
    /etc/zabbix/zabbix_script/auto_remove_log.py
#! /usr/bin/python
import os,re,time
file_dir = '/var/log/network-log'
list_dir = os.listdir(file_dir)
list_dir_sub_layer=[]
for dir_name in list_dir:
        list_dir_sub_layer.append(file_dir+'/'+dir_name)
list_dir_file = []
for dir_name in list_dir_sub_layer:
        list_dir = os.listdir(dir_name)
        for k in list_dir:
                list_dir_file.append(dir_name+'/'+k)
len_list = len(list_dir_file)
begin_time = time.strftime("%Y-%m-%d",time.localtime(time.time()-86400))
cu_time = time.strftime("%Y-%m-%d",time.localtime())
for i in range(0,len_list):
        if re.search(begin_time,list_dir_file[i]) or re.search(cu_time,list_dir_file[i]):
                pass
        else:
                os.remove(list_dir_file[i])
  1. 部署了上面的脚本后,还需要用crontab定时执行,这里计划为每天早8点执行一次脚本
0 8 * * * /usr/bin/python /etc/zabbix/zabbix_script/auto_remove_log.py

2.ES生命周期管理

日志不仅要在rsyslog日志服务器上进行定期清理,在es集群中也要进行生命周期的设置

  1. 生命周期策略创建
    在这里插入图片描述2. 挂接到index
    在这里插入图片描述在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值