rsyslog+ELK收集Cisco日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: rsyslog+ELK收集Cisco日志

一、配置rsyslog服务收集Cisco日志

1.安装配置rsyslog收集cisco日志

[root@prod_rsyslog_160_128 ~]# yum install -y rsyslog  #安装rsyslog服务
[root@prod_rsyslog_160_128 ~]# egrep -v "^$|#" /etc/rsyslog.conf  
$ModLoad imudp                      # imupd是模块名,支持udp协议
$UDPServerRun 514                   #允许514端口接收使用UDP协议转发过来的日志
$ModLoad imtcp                      # imtcp是模块名,支持tcp协议
$InputTCPServerRun 514                 # 允许514端口接收使用TCP协议转发过来的日志
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat  #使用默认日志模板
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on   
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log
$template myformat,"%FROMHOST-IP%: %msg:2:$%\n"                    #定义日志模板,只记录日志信息不添加时间戳并删除日志开头空格并且将IP地址写入开头
$template cisco,"/net-log/cisco/%FROMHOST-IP%.log"                 #定义日志文件模板,Cisco为模板名称,以来源IP作为文件名
local4.* ?cisco;myformat                                           #定义级别为4的日志使用cisco myformat模板
[root@prod_rsyslog_160_128 ~]# systemctl restart rsyslog.service   #重启服务

2.配置Cisco设备

略,我们网络工程师配置的

3.测试

[root@prod_rsyslog_160_128 ~]# tree /net-log/  #日志文件正常创建
/net-log/
└── cisco
    └── 192.169.5.249.log
1 directory, 1 file
[root@prod_rsyslog_160_128 ~]# tail -1  /net-log/cisco/192.169.5.249.log 
001068: Jun 18 12:29:49: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/0/12, changed state to down  #日志格式如下

二、配置filebeat收集Cisco日志

1.修改filebeat配置文件

[root@prod_rsyslog_160_128 filebeat]# egrep -v "^$|#" filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true
  fields_under_root: true   #新增fields成为顶级目录,而不是将其放在fields目录下
  paths:
    - /net-log/cisco/*.log  #日志路径
  fields:
    type: net-cisco         #输出给kafka时作为topic使用
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
name: net-log               #主机名称
processors:
  - add_host_metadata: ~    
  - drop_fields:    #删除一些不需要字段
      fields: ["sort","beat","input_type","offset","source","agent"]
output.kafka:   #kafka集群信息
  enabled: true
  hosts: ["172.16.160.121:9092","172.16.160.123:9092","172.16.160.123:9092"]
  topic: '%{[type]}'  #如果 fields_under_root为false则需要修改为fields.type

2.配置filebeat为系统服务

[root@prod_rsyslog_160_128 filebeat]# cat /etc/systemd/system/filebeat.service   #注意替换文件中filebeat的路径
[Unit]
Description=filebeat server daemon
Documentation=/usrl/local/filebeat/filebeat -help  
Wants=network-online.target
After=network-online.target
[Service]
User=root
Group=root
ExecStart=/usr/local/filebeat/filebeat  -c /usr/local/filebeat/filebeat.yml --path.logs /usr/local/filebeat/logs   #不要添加-e,会使 --path.logs失效
Restart=always [Install] WantedBy=multi-user.target

启动filebeat服务

[root@prod_rsyslog_160_128 filebeat]# systemctl restart filebeat.service

3.测试日志是否可以正常输出到kafka集群

1.查看topic是否正常创建

[root@prod_zk-kafka_160_121 ~]# /usr/local/kafka/bin/kafka-topics.sh --list --zookeeper  172.16.160.121:2181

__consumer_offsets

net-cisco

2.查看topic是否可以正常消费

[root@prod_zk-kafka_160_121 ~]# /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 172.16.160.121:9092 --topic net-cisco --from-beginning

三、配置logstash

[root@prod_logstash_160_124 config]# cat net-cisco.conf 
input{
    kafka {
        bootstrap_servers => "172.16.160.121:9092,172.16.160.123:9092,172.16.160.123:9092"
        consumer_threads => 5
        topics => "net-cisco"
        group_id =>  "net-log"
        decorate_events => true
        type => "net-cisco"
        codec => "json"
    }
}
filter{
       mutate {
        split => ["message",": "]  #使用": "对日志内容进行切割
        add_field => {
        "remote_ip" => "%{[message][0]}"
        "serial_num"  => "%{[message][1]}"
        "logdate" => "%{[message][2]}"
        "event"  => "%{[message][3]}"
        "messages"  => "%{[message][4]}"
        }
   }
        mutate {
            remove_field => ["message"]  #日志切割后删除
        }
        date {
            match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
            timezone => "Asia/Shanghai"
        }
}
output {
# stdout { codec => rubydebug }  #调试时使用
if [type] == "net-cisco" {
     elasticsearch {
        hosts => ["172.16.160.125:9200","172.16.160.126:9200","172.16.160.127:9200"]
        index => "net-cisco-%{+YYYY-MM-dd}"  #ES中索引名称,按天创建
    }
  }
}

启动服务

[root@prod_logstash_160_124 config]# ../bin/logstash -f cisco_log.conf -t  --verbose

[root@prod_logstash_160_124 config]# nohup /usr/local/logstash-7.6.2/bin/logstash -f cisco_log.conf &> /tmp/logstch.log &

四、kibana创建索引模式并展示

浏览日志

查看日志字段

五、注意事项

1.filebeat删除字段时timestamp和type字段无法被删除

2.手动修改日志文件测试时请使用echo命令而不是vim,否则会导致日志被从头开始消费。这是因为filebeat跟踪inode更改以了解是否需要读取文件。使用vim编辑时,每次保存文件时,inode都会更改。使用 ls -li  filename查看文件iNode号
3.filebeat -e和--path.logs无法同时生效
4.kafka如果禁止自动创建topic,每次新日志topic需要提前手动创建
5.kibana创建索引模式后刷新消失,可以尝试重启kibana服务
6.filebeat服务建议使用Supervisor或者systemctl管理,使用nohup启动服务可能会自动停止,社区中也有人存在同样问题,目前未找到具体原因

附rsyslog、logstash配置文件

/etc/rsyslog.conf

cisco_log.conf

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
12天前
|
存储 监控 安全
|
3月前
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
152 6
|
3月前
|
存储 应用服务中间件 nginx
部署ELK+filebeat收集nginx日志
部署ELK+filebeat收集nginx日志
124 0
部署ELK+filebeat收集nginx日志
|
3月前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
3月前
|
存储 数据可视化 Linux
在Linux中,如何使用ELK进行日志管理和分析?
在Linux中,如何使用ELK进行日志管理和分析?
|
3月前
|
数据可视化 Java API
如何在项目中快速引入Logback日志并搭配ELK使用
如何在项目中快速引入Logback日志并搭配ELK使用
|
3月前
|
存储 监控 Ubuntu
一键搞定:用脚本轻松部署ELK,让日志分析变得简单又高效
【8月更文挑战第13天】ELK栈由Elasticsearch、Logstash和Kibana组成,用于日志存储、解析及展示,是大数据领域广泛采用的日志解决方案。鉴于其安装配置复杂,本文提供了一个适用于Ubuntu 16.04的ELK自动安装Shell脚本示例。脚本首先确保Java环境安装,接着添加Elastic.co的APT仓库并安装ELK组件,最后启动所有服务。通过自动化流程,简化部署工作,减少人为错误,提升效率。实际应用中还需根据具体需求调整配置和服务设置。
55 0
|
4月前
|
存储 消息中间件 监控
日志收集分析器(ELK)
日志收集分析器(ELK)
|
9天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
107 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板