日志收集,检索

       聊起日志,大家一定有很多感触。日志首先要格式化,然后记录关键的业务信息,这样在出问题的时候才能方便排查。今天我们分享一下日志的收集(filebeat),检索(ek)。至于像阿里的SLS,日志易等SAS服务,为什么我们不去使用,有两个原因。1 网络 2数据敏感性。

filebeat:轻量级的日志采集器,这是filebeat地址。它的优点比较多,大家可以自己去查看。说到具体如何收集某个模块的日志,假定我们的日志文件的路径是/home/webserver/log/java/test/。现在我们解压filebeat的tar包之后,会有一个配置文件filebeat.yml文件

有几个关键的配置

#=========================== Filebeat inputs =============================

 filebeat.inputs: 

                         paths:日志文件的路径

                         multiline.pattern: ^\[INFO 多行合并的正则

                         multiline.negate: true  与pattern同时出现

                         multiline.match: after  与pattern同时出现

                         multiline.timeout: 10s 定义超时时间,如果开始一个新的事件在超时时间内没有发现匹配,也将发                                                         送日志,默认是5s

                         ignore_older: 1h   

                                                   1 可以指定Filebeat忽略指定时间段以外修改的日志内容

                                                    2 文件被忽略之前,确保文件不在被读取,必须设置ignore older时间范围大于                                                         close_inactive

                                                    3如果一个文件正在读取时候被设置忽略,它会取得到close_inactive后关闭文                                                           件,然后文件被忽略

                          close_older: 1h  如果一个文件在某个时间段内没有发生过更新,则关闭监控的文件handle。默认1h

                          close_inactive:1h 

                                                    1 启动选项时,如果在制定时间没有被读取,将关闭文件句柄

                                                     2 读取的最后一条日志定义为下一次读取的起始点,而不是基于文件的修改时间

                                                     3 如果关闭的文件发生变化,一个新的harverster将在scan_frequency运行后被                                                           启动

                                                     4 建议至少设置一个大于读取日志频率的值,配置多个prospector来实现针对不                                                          同更新速度的日志文件

                                                     5 使用内部时间戳机制,来反映记录日志的读取,每次读取到最后一行日志时开                                                          始倒计时,使用2h 5m 来表示

#-------------------------- Elasticsearch output ------------------------------

output.elasticsearch:

                               hosts: ["59.37.4.65:9200"] Elasticsearch的地址


                              index: "filebeat-wuhan-%{+yyyy.MM.dd}" 自定义index的名称,用来区分不同模块的index

                              setup.template.name:  "filebeat-wuhan" 与index同时出现

                               setup.template.pattern: "filebeat-wuhan" 与index同时出现

这样,日志的采集设置就完成。下面说说检索,一般利用kibaba的discover或者 log来查看,统计,分析。但针对多个index的聚合检索,还是不方便。这里我们使用 logtrail来查询聚合日志,这里降低了查看日志的成本,只要需简单的and,or语法就可以接近实时的情况查看日志。

输入框那里就是lucene的查询语法,这里有详细的说明 query-string-syntax。当然, kibaba还有其它插件,大家也可以分享一下。针对上面阐述的,各位可以实际操作一下,有问题,多多交流。

你可能感兴趣的:(日志收集,检索)