一、五分钟搭好ELK
搭ELK从入门到放弃是一个痛苦的过程,从开始面对一堆报错毫无头绪到后来非常熟练轻松是一个成长的过程,这里总结一下centos快速起ELK的方法。
首先是下载,很多人其实ELK卡在下载这一步就没了,国内的下载速度即使挂上vpn也慢的离谱,但是用AMZ的国外速度其实是非常非常快的,平均60M的速度简直不要太爽,建议用AMZ云先down下来,再从AMZ上down下来,这样速度也可以达到几M每秒。HH,贴一张图。
下载完三个tar.gz文件以后放在/opt目录下解压,重命名,然后依次启动即可。
1 | groupadd elk |
二、五分钟配好rsyslog
logstash和rsyslog的无缝配合给了日志审计童鞋们非常便利的工具方案, 用rsyslog的日志的中心化收集其实非常方便,以一台server为中心,其他的服务器将日志同步过来即可。这里记录一下最简单的log同步。
服务端配置:
rsyslog默认是sock进程,要做远端的同步需要改成TCP和UDP的
1 | # The imjournal module bellow is now used as a message source instead of imuxsock. |
服务端配置非常简单,创建一个conf文件/etc/rsyslog.d/test.conf
1 | if $hostname != 'hostname' then /var/log/test |
上述配置意思是rsyslog接收到的所有日志,只要host不是自己,通通存到/var/log/test里去。
在rsyslog.conf里改下列配置,原因下面配置客户端时会讲
1 | *.info;mail.none;authpriv.none;cron.none;local1.none /var/log/messages |
客户端配置:
客户端的任务是把要发送的日志集中到一个log文件里,加上一些标签啊,tag啊,通过rsyslog发送即可。
创建一个conf文件/etc/rsyslog.d/test.conf,配置日志路径,配置标签,配置好远端的地址和端口,这里的facility为模块可选有20多种,serverity为等级可选有8种,我们只需要把参数配置好,调用发送就可以。Facility和Severity的等级选择参考https://fasthandle.net/middleware/rsyslog/facility-severity.html。如下是我的配置:
1 | module(load="imfile" PollingInterval="10") |
这个配置实际上在运行中会有一个问题,默认在rsyslog里,*.info的信息是都要写进message里的,所以相当于我们在做同步的时候,所有的日志还会在message里面存一遍,这其实是在浪费空间,因此我其实选择了local1的等级,并且在/etc/rsyslog.conf里修改配置如下:
1 | *.info;mail.none;authpriv.none;cron.none;local1.none /var/log/messages |
local1.none 不写入到 /var/log/messages。这样就不会挤占message的空间,选好日志格式以后,配置rsyslog服务端的信息。需要注意的是,所有conf文件重启rsyslog后生效。
#. @@remote-host:514 //@@是TCP协议,@是UDP协议
可以看到,我们往客户端log里写东西,在服务端立即就能看到同步的带着TAG的消息。
三、写一些logstash的配置文件
上一步相当于从各个日志服务器把日志导入到日志中心,那么我们要把rsyslog和logstash配合起来使用,其实就是写logstash的conf文件。关于logstash的配置文件,配置方法文档教程一大堆,都是根据最原始的三步模板配置。
1 | input{ |
配置完成以后重启一下logstash,就可以在kibana里看到我们导入的日志,进行可视化分析等等。
PS:
1 | input(type="imfile" |