syslog服务器与elk区别_ELK与EFK,什么跟什么?

85d107582db27c76ba69db78e42d73e1.png

ELK是elasticsearch+logstash+kibana的组合,是一款日志收集解决方案的简写,而EFK是elasticsearch+filebeat+kibana的组合,解决同样的问题,它们之间的区别就是logstash与filebeat的区别。

1、既有ELK,为何又再弄个EFK呢?

是因为logstash是使用java语言编写的,在实际使用中,明显存在耗资源较大,运行占用CPU和内存高等缺点,因此在高并发服务器中使用效果不够理想。

而filebeat改用go语言编写,性能稳定、配置简单、占用系统资源很少,安装使用也非常简单,更合适在生产机器上使用,所以更推荐使用filebeat改造自己的日志收集系统。

2、Filebeat什么原理?

Filebeat主要由两个组件构成:prospector(探测器)和harvester(收集器),这两类组件一起协作完成Filebeat的工作。

4fe11470f5c84e04d041ee3cd2620991.png

Filebeat在启动之后,它会启动一个或多个探测器去检测指定的日志目录或文件,并对每个探测器找到的日志文件开启收集进程,这些进程分别去读取日志文件的内容,并将内容发送到后台处理程序,之后由程序汇总、集合这些日志,发送到指定的output端。

3、怎么部署filebeat?

可以访问Elastic-Beats官网获取各个版本的filebeat,建议7以上的版本,以便获得更好的使用效果。

  • 调试模式下采用:终端启动(退出终端或ctrl+c会退出运行)

    ./filebeat -e -c filebeat.yml
  • 线上环境配合error级别使用:以后台守护进程启动启动filebeats

    nohup ./filebeat -e -c filebeat.yml &

  • 停止运行FileBeat进程

    ps -ef | grep filebeatKill -9 线程号

4、怎样配置filebeat?

配置文件:$FILEBEAT_HOME/filebeat.yml。filebeat可以一次读取某个文件夹下的所有后缀名为log的文件,也可以读取指定的某一个后缀名为log的文件。

配置文件可以参考:$FILEBEAT_HOME/filebeat.example.yml

字段解释如下:

paths:指定要监控的日志,目前按照Go语言的glob函数处理。没有对配置目录做递归处理,比如配置的如果是:/var/log/* /*.log则只会去/var/log目录的所有子目录中寻找以".log"结尾的文件,而不会寻找/var/log目录下以".log"结尾的文件。encoding:指定被监控的文件的编码类型,使用plain和utf-8都是可以处理中文日志的。input_type:指定文件的输入类型log(默认)或者stdin。exclude_lines:在输入中排除符合正则表达式列表的那些行。include_lines:包含输入中符合正则表达式列表的那些行(默认包含所有行),include_lines执行完毕之后会执行exclude_lines。exclude_files:忽略掉符合正则表达式列表的文件(默认为每一个符合paths定义的文件都创建一个harvester)。fields:向输出的每一条日志添加额外的信息,比如"level:debug",方便后续对日志进行分组统计。默认情况下,会在输出信息的fields子目录下以指定的新增fields建立子目录,fields_under_root:如果该选项设置为true,则新增fields成为顶级目录,而不是将其放在fields目录下。自定义的field会覆盖filebeat默认的field。ignore_older:可以指定Filebeat忽略指定时间段以外修改的日志内容,比如2h(两个小时)或者5m(5分钟)。close_older:如果一个文件在某个时间段内没有发生过更新,则关闭监控的文件handle。默认1h。force_close_files:Filebeat会在没有到达close_older之前一直保持文件的handle,如果在这个时间窗内删除文件会有问题,所以可以把force_close_files设置为true,只要filebeat检测到文件名字发生变化,就会关掉这个handle。scan_frequency:Filebeat以多快的频率去prospector指定的目录下面检测文件更新(比如是否有新增文件),如果设置为0s,则Filebeat会尽可能快地感知更新(占用的CPU会变高)。默认是10s。document_type:设定Elasticsearch输出时的document的type字段,也可以用来给日志进行分类。harvester_buffer_size:每个harvester监控文件时,使用的buffer的大小。max_bytes:日志文件中增加一行算一个日志事件,max_bytes限制在一次日志事件中最多上传的字节数,多出的字节会被丢弃。默认是10MB。multiline:适用于日志中每一条日志占据多行的情况,比如各种语言的报错信息调用栈。这个配置的下面包含如下配置:pattern:多行日志开始的那一行匹配的patternnegate:是否需要对pattern条件转置使用,不翻转设为true,反转设置为false。match:匹配pattern后,与前面(before)还是后面(after)的内容合并为一条日志max_lines:合并的最多行数(包含匹配pattern的那一行),默认为500行。timeout:到了timeout之后,即使没有匹配一个新的pattern(发生一个新的事件),也把已经匹配的日志事件发送出去tail_files:如果设置为true,Filebeat从文件尾开始监控文件新增内容,把新增的每一行文件作为一个事件依次发送,而不是从文件开始处重新发送所有内容。backoff:Filebeat检测到某个文件到了EOF之后,每次等待多久再去检测文件是否有更新,默认为1s。max_backoff:Filebeat检测到某个文件到了EOF之后,等待检测文件更新的最大时间,默认是10秒。backoff_factor:定义到达max_backoff的速度,默认因子是2,到达max_backoff后,变成每次等待max_backoff那么长的时间才backoff一次,直到文件有更新才会重置为backoff。比如: 如果设置成1,意味着去使能了退避算法,每隔backoff那么长的时间退避一次。spool_size:spooler的大小,spooler中的事件数量超过这个阈值的时候会清空发送出去(不论是否到达超时时间),默认1MB。idle_timeout:spooler的超时时间,如果到了超时时间,spooler也会清空发送出去(不论是否到达容量的阈值),默认1s。registry_file:记录filebeat处理日志文件的位置的文件config_dir:如果要在本配置文件中引入其他位置的配置文件,可以写在这里(需要写完整路径),但是只处理prospector的部分。publish_async:是否采用异步发送模式(实验功能)。

5、常见问题

  • A、filebeat运行不成功

        配置文件格式有问题,配置文件遵循yml文件格式,多或少一个空格都会导致启动问题,可以使用cmd命令窗口到filebeat安装路径下,使用filebeat.exe –c filebeat.yml 查看报错,也可以看filebeat路径下的log文件夹中的filebeat文件

  • B、 filebeat第一次运行成功无数据

        a、路径有问题

b、运行条件设置有问题(例如只采集某个条件下的数据,文件中没有符合条件的数据,这种情况下先注释掉采集条件测试一下)
  • C、filebeat运行成功第一次运行后有数据,第二次无数据

        filebeat读取文件后会生成一个registry文件,注意windows机器中这个文件在手动启动的情况下会在filebeat安装目录下的data文件夹中,服务注册启动的情况下会在C盘下隐藏文件夹C:\ProgramData\filebeat中,删除掉这个就可以了。

  • D、filebeat运行成功有数据,但是新添加数据不读取问题

    filebeat传输存在反压机制,在数据量特别大或者传输通道不通的情况下,filebeat会进行反压,暂停发送,等到数据量稳定或者数据传输通道正常的之后才会发送。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值