elk与syslog

1. logstash安装java

  1)  安装javanode

  2)  下载logstash安装包linux

  3)  rpm –i logstash-6.2.3.rpmredis

  4)  装成功后, centos7默认会装到/usr/share/logstashcentos

  5)  配置文件默认位于/etc/logstash缓存

2. 管道配置ruby

   以输入stdin, syslog, 输出redis,stdout为例, 性能优化

   eg: rsyslog.conf 服务器

  
 1 input {
 2 
 3     stdin {}
 4 
 5     syslog {
 6 
 7         host => "0.0.0.0"
 8 
 9         port => 514
10 
11     }
12 
13  
14 
15 }
16 
17 filter {}
18 
19 output {
20 
21     redis {
22 
23         batch => true
24 
25         batch_events => 1000
26 
27         batch_timeout => 20
28 
29         data_type => list
30 
31         key => "syslog-%{+yyyy-MM-dd}"
32 
33         host => ["127.0.0.1"]
34 
35         port => 6379
36 
37         db => 0
38 
39     }
40 
41     stdout{
42 
43         codec => rubycode
44 
45 }
46 
47 }
View Code

   能够有多个input, filter, output多线程

3. logstash配置

  logstash主要配置文件logstash.yml

  java 堆栈配置文件 jvm.options

  管道配置文件 pipeline.yml

  主要配置:

    1)  logstash.yml

      node.name  节点名称

      path.data   缓冲数据本地存放的路径

      pipeline.workers 并行执行filter+output的进程数,默认cpu核数

      pipeline.batch.size 每次批量从input获取的数据量, 这块会涉及到一个问题, 分配给logstash的堆栈空间须要大于等于pipeline.workers * pipeline.batch.size, 由于logstash会将数据缓存到堆栈里。

      path.config  管道配置文件的路径

      config.reload.automatic 是否自动reload

      queue.type  默认memory, 使用persisted会持久化到磁盘, 使用队列能够保证在宕机多出现其余可修复的问题时,来不及进行filter和output处理时, 将数据保存到磁盘,避免数据丢失,logstash重启后,会同时从input和磁盘上读取队列的数据,进行filter+output处理,   还有一种状况是若是filter+output的速度慢于input, 未来不及处理的数据缓存到磁盘, 有效渡过峰值, 避免性能问题或缓存被打爆丢失数据。

      queue.max_bytes 永久队列容许持久化的最多字节数, mb或gb为单位。

               2)  jvm.options

      +xms, +xmx调优

4. 启动

  1) 用pv命令启动logstash 监控性能

    a)  /usr/share/logstash/bin/logstash –f rsyslog.conf 启动单个管道

              b)  /usr/share/logstash/bin/logstash –path.settings=/etc/logstash 会启动全部的管道, 读取配置文件, 事实上是将多个管道配置文件合为一个

              c)  性能监控, 使用linux自带pv命令:  /usr/share/logstash/bin/logstash –f rsyslog.conf|pv –abt > /dev/null

       2) 向syslog端口发送数据

    数据示例采用沙箱日志:

    <12> Mar 26 16:30:35 localhost skyeye-sandbox: access_time:2017-08-15 7:24:10|!attacker:10.19.1.245:52868|!file_md5:0f51a34a9a1ce4d2026c772400f07910|!file_name:virussign.com_0f51a34a9a1ce4d2026c772400f07910.vir|!file_size:320541|!file_type:exe32|!proto_type:http|!subject:|!method:GET|!url:http://sample/test/virussign.com_0f51a34a9a1ce4d2026c772400f07910.vir|!victim:10.19.1.106:80|!malscore:7.0|!vir:win7-sp1;office2010;adobe11;java8;flash16;ie10,winxp-sp3;office2007;adobe10;java6;flash16;ie8|!static_report:Trojan.Lethic.Gen.11|!cloud_info: Win32/Worm.d2e.cloud |!sign_info: 北京科技有限责任公司; 79800E0C5BC7ABEFC387B56D0E89306A3926EC25|!link:10.95.24.3

       3)测试工具采用yes

    yes ‘字符串’|nc ip port

       示例:     

      
yes '<12> Mar 26 16:30:35 localhost skyeye-sandbox: access_time:2017-08-15 7:24:10|!attacker:10.19.1.245:52868|!file_md5:0f51a34a9a1ce4d2026c772400f07910|!file_name:virussign.com_0f51a34a9a1ce4d2026c772400f07910.vir|!file_size:320541|!file_type:exe32|!proto_type:http|!subject:|!method:GET|!url:http://sample/test/virussign.com_0f51a34a9a1ce4d2026c772400f07910.vir|!victim:10.19.1.106:80|!malscore:7.0|!vir:win7-sp1;office2010;adobe11;java8;flash16;ie10,winxp-sp3;office2007;adobe10;java6;flash16;ie8|!static_report:Trojan.Lethic.Gen.11|!cloud_info: Win32/Worm.d2e.cloud |!sign_info: 北京科技有限责任公司; 79800E0C5BC7ABEFC387B56D0E89306A3926EC25|!link:10.95.24.3' | nc 10.95.134.20 514
View Code

    以上命令会不断的像10.95.134.20 514端口发送日志.

    注意nc ip port 默认使用tcp, nc –u ip port使用udp

    经测试udp的每秒处理条数要比tcp快一个数量级, 可是udp的接收和入库不成比例,待探究

    4) 测试工具loggen

    略

5. 知识点

  1) 通过测试经过rsyslog接收syslog并转发给logstash的性能只有7k/s, 未必有logstash性能好。

     2)logstash不支持集群, 只能横向扩展, 启动多个实例, 或增长机器。

6. 性能优化

  1) 运行时内存堆栈, 修改jvm.options

       +xms +xmx  16gb差很少

  2)  workers数量, 修改logstash.yml

         pipeline.workers  默认cpu核数, 能够根据实际状况调整大于或小于cpu核数, 主要影响filters和output, filters和output使用多线程。

  3)  pipeline.batch.size 单进程批次从input获取的event数量, logstash按流程分为input, filter, output三个流程, 这块主要影响filter以前, 从input取数据的效率, heap_size>=workers * batch_size ,因此设置workers和batch_size的时候要根据分配给logstash的堆内存来分配,并非越大越好。

  4)  queue.type 默认memory, 表示不启用持久队列, persisted表明启用持久队列, 并持久到磁盘, 记得必定要启用, 避免数据丢失, 当output已满或者处理速度跟不上input的速度的时候, logstash会阻塞,并将input的数据先缓存到磁盘文件, 待output性能转好, 再同时从input和磁盘队列取数据,输送到filter进行处理。好比redis oom的状况,能够保证数据不丢失。

       5)以下图:

    

    在分配给logstash 16GB内存, 16核cpu的状况下(服务器32cpu, 256gb内存),input速度在1.5w/s-2w/s之间,redis入库速度与input差很少,能够看出heap和cpu的占比消耗很低。通过测试, 即便增长cpu核数, heap内存, input和output的速度并无增加, 也多是压力测试的力度不够。建议不必分配特别高的内存和cpu给logstash。

    实际的input和output速度应该以生产环境压测为主。

   6)   修改logstash自带的syslog.rb脚本可提升input速度。

    Logstah处理syslog实际是经过syslog.rb脚本, 在我机器上,该脚本位于:

    /usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-input-syslog-3.4.0/lib/logstash/inputs

    

    

    虽然咱们在pipeline的配置中设置filter为空,

    

    可是logasth在处理syslog数据的时候,调用该脚本, 会注册grok_filter和date_filter并, 调用它们处理每一条告警, 若是注释掉这两个filter的调用, 能够稍微提升input的速度。经测试input的速度约为2w/s-2.5w/s。

7. elk监控

  1) elk环境搭建

    a)         安装java, 下载logstash, elasticsearch, kibana, 版本必须一致, 个人机器采用6.2.3版。

    b)         安装logstash, elasticsearch, kibana

    c)         分别安装x-pack, bin/logstash-plugin install x-pack, bin/elasticsearch-plugin install x-pack 等等。

    d)         设置内置用户密码, x-pack内置logstash-system, kibana, elastic三个用户, elastic是权限最高的, 运行bin/x-pack/setup-passwords 修改默认密码, 并重启elaticsearch等

    e)         配置kibana, 设置es地址, 必配:

        elasticsearch.username: "elastic"

        elasticsearch.password: "xxxx"

        elasticsearch.url: “http://localhost:9200

        重启kibana

    f)          配置logstash监控, 至少配置如下三项:

        xpack.monitoring.elasticsearch.url: "http://localhost:9200/"

        xpack.monitoring.elasticsearch.username: "logstash_system"

        xpack.monitoring.elasticsearch.password: "situation"

               重启logstash

    g)         配置elasticsearch, elasticsearch其实能够不用配置的, 可是个人环境logstash向es写入数据的时候一直报403, 添加:

        xpack.security.enabled: false, 重启elasticseach, 就ok

    h)         经过http访问5601端口, 就能够看到kibana界面

  2) logstash监控

     

    Elk也能够监控logstash output非elasticsearch的数据流,好比redis, 配置x-pack便可。

相关文章
相关标签/搜索