专栏首页运维监控日志分析ELK 部署可视化网络日志分析监控平台

ELK 部署可视化网络日志分析监控平台

简介

随着机房内的服务器和网络设备增加,日志管理和查询就成了让系统管理员头疼的事。系统管理员通常面临问题如下:

  1. 日常维护过程中不可能登录到每一台服务器和设备上去查看日志,设备出现异常报警无法及时发现;
  2. 网络设备上的存储空间有限,不可能存储日期太长的日志,而系统出现问题又有可能是很久以前发生的某些操作造成的;
  3. 在某些非法侵入的情况下,侵入者一般都会清除本地日志,清除侵入痕迹;
  4. zabbix等监控系统无法代替日志管理,无法监控如系统登录、计划任务执行等项目。

基于上述原因,在当前的网络环境中搭建一台用于日志集中管理的Rsyslog日志服务器就显得十分有必要了,设备的哭喊没有日志分析系统怎么能及时听得到。

Rsyslog服务的优点如下

  1. Rsyslog服务器可以大多数的网络设备支持,在网络设备的系统设备选项中大多都有远程日志服务的配置选项。只需要填写上IP地址和端口(大多数设备已经默认是514了),然后确定就可以了;
  2. Linux服务器只需要在本地的Rsyslog服务配置中加入简单的一行就可以将日志发送到日志服务器,布署和配置起来十分简单;

部署架构

主机清单

hostname

ip

software

syslog

192.168.99.50

Rsyslog Filebeat

elk-node1

192.168.99.185

Elasticserch Logstash Kibana

elk-node2

192.168.99.186

Elasticserch

系统环境及软件版本

CentOS Linuxrelease 7.5.1804 (Core)
Elasticserch-6.8.4
Kibana-6.8.4
Logstash-6.8.4
Filebeat-6.8.4
Rsyslog-8.24.0

将SELINUX设置为disabled

# setenforce 0
# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

防火墙配置

firewall-cmd  --add-service=syslog --permanent
firewall-cmd  --reload

检查是否安装了Rsyslog软件

[root@ZABBIX-Server ~]# rpm -qa |grep rsyslog
rsyslog-8.24.0-16.el7.x86_64

centos 7 默认会安装Rsyslog服务

Rsyslog 配置

[root@ZABBIX-Server ~]# 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
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 h3c,"/mnt/h3c/%FROMHOST-IP%.log"
local6.* ?h3c
$template huawei,"/mnt/huawei/%FROMHOST-IP%.log"
local5.* ?huawei
$template ruijie,"/mnt/ruijie/%FROMHOST-IP%.log"
local4.* ?ruijie

Rsyslog参数介绍

$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 中

检查rsyslog服务状态并重启服务

[root@ZABBIX-Server ~]# netstat -auntlp |grep -w 514
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      25339/rsyslogd      
tcp6       0      0 :::514                  :::*                    LISTEN      25339/rsyslogd      
udp        0      0 0.0.0.0:514             0.0.0.0:*                           25339/rsyslogd      
udp6       0      0 :::514                  :::*                                25339/rsyslogd
[root@ZABBIX-Server ~]# systemctl    restart   rsysloy

网络日志存放目录

[root@ZABBIX-Server ~]# ls /mnt/huawei/  /mnt/h3c/ /mnt/ruijie/
/mnt/h3c/:
172.16.9.253.log  172.17.1.199.log  172.17.1.21.log  172.17.1.22.log  172.17.1.30.log  192.168.99.253.log  192.168.99.254.log
/mnt/huawei/:
192.168.99.1.log  192.168.99.21.log  192.168.99.22.log
/mnt/ruijie/:
192.168.99.22.log

网络设备将日志指向syslog服务器,注意不同厂商的设备对应的local 不同,对应关系如下:

/mnt/huawei   --- local6
/mnt/h3c      --- local5
/mnt/ruijie   --- 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

Ruijie:
logging buffered warnings
logging source interface VLAN 99
logging facility local6
logging server 192.168.99.50

filebeat配置

在rsyslog 日志服务器上安装filebeat ,通过 filebeat 读取不同设备目录下的日志文件进行关键字过滤 、标签封装输出到logstash进行数据格式清洗。

[root@ZABBIX-Server ~]# 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"]
- type: log
  paths:
    - /mnt/ruijie/*
  tags: ["ruijie"]
  include_lines: ['Failed','failed','error','ERROR','\bDOWN\b','\bdown\b','\bUP\b','\bup\b']
  drop_fields:
    fields: ["beat","input_type","source","offset","prospector"]
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 3
setup.kibana:
output.logstash:
  hosts: ["192.168.99.185:5044"]
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~

logstash 配置

对filebeat传来的日志根据标签进行数据格式清洗,将处理完成的日志数据传到es上存储,并在kibana上做进一步的可视化展示。

[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}"}
        }
  }
  else if "ruijie" in [tags] {
    grok{
      match => {"message" => "%{SYSLOGTIMESTAMP:time} %{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
    }
}

Kibana配置

创建名为 “networklog-*” 的索引模式匹配存储的网络设备日志索引

Discover 数据

创建可视化数据表

kibana的数据表可导出为CSV文件

创建可视化饼图

查看每台设备日志量占比日志量大的设备要重点关注

网络设备日志分析监控可视化仪表盘

本文分享自微信公众号 - 开源搬运工宋师傅(gh_9e345a3a1074)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于ELK Nginx日志分析

    针对业务需求建立用户访问行为记录,基于ELK(Elasticsearch日志检索+Logstash日志收集+Kibana查询 展示)日志处理技术,建立业务日志...

    Kevin song
  • Elastic Stack 6.8 X-Pack 安全功能部署

    简介 Elastic官方发布消息Elastic Stack 新版本6.8.0 和7.1.0的核心安全功能现免费提供。这意味着用户现在能够对网络流量...

    Kevin song
  • OPNSense 构建企业级防火墙--安装使用(一)

    OPNsense是一个开源,易于使用且易于构建的基于FreeBSD的防火墙和路由平台,OPNsense包括昂贵的商业防火墙中提供的大多数功能。它带来了丰富的商业...

    Kevin song
  • 使用Flink进行实时日志聚合:第二部分

    我们正在继续有关在Flink的帮助下实现实时日志聚合的博客系列。在本系列的《使用Flink进行实时日志聚合:第一部分》中,我们回顾了为什么从长期运行的分布式作业...

    大数据杂货铺
  • “淘宝京东”构建流式计算卖家日志系统架构的应用实践

    美的让人心动
  • 集中日志查询平台方案(Draft)

    集中日志查询平台方案(Draft) 随着公司业务系统之间的数据交换越来越多,系统间的整合越来越复杂,伴随而来的问题也越来越多,给运行维护,客服人员带来的很大压...

    阿新
  • Java ---自定义标签

         本篇文章介绍自定义标签,可能在工作中很少涉及到自己来定义一个标签库,因为我们基本上都是使用的大神写的标签库,基本上直接使用即可,但是从自身的发展来看,...

    Single
  • Nginx 错误日志配置 原

    语法:error_log  file  level ;   # error_log 是关键字,file 是保存错误日志的文件路径,level 是错误日志级别

    拓荒者
  • HTML概要

    HTML CSS Javascript 的关系 HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片、视频等。 CSS...

    用户1214695
  • 彻底地给自己的Android手机来一次清理

    手机清理一直是一个烦心事。用清理软件清理虽方便,但每次清理完并没有腾出多少空间。而且第三方清理软件经常会时不时来个弹窗,来个推送。久而久之也就让人为之烦躁。如果...

    喃小柯

扫码关注云+社区

领取腾讯云代金券