ELK之logstash

ELK之logstash

最近在工作中发现一些服务 不是经常使用,所以当出现内存溢出的时候无法实时感知到,所以我这边使用了logstash,之前有考虑过zabbix但是zabbix日志监控实施起来比较麻烦 并且日志查看起来非常麻烦,最后发现logstash有日志监控的功能并且可以将日志保存在Elasticsearch中并且可以在Kibana中显示出来。接下来我将下具体实现:

首先我搭建的是Elasticsearch+logstash+Kibana+filebeat   elk的搭建我就不讲了 之前的文章已经介绍过了。Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。并且filebeat不需要配置正则表达式就可以达到很好的效果。当然有些人会在Filebeat和Elasticsearch加一层redis,但是日志量不是很大,完全没必要加,如果怕Elasticsearch宕机导致一部分日志没有收集到可以考虑加redis

我目前所设计的架构是:

images

安装filebeat的话非常简单:

rpm:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm

sudo rpm -vi filebeat-5.1.1-x86_64.rpm

接下来就是配置了:

配置文件是/etc/filebeat/filebeat.yml这个文件

images

paths:对应的是日志收集的文件目录

document_type:是设置该文件的自定义类型(在设置logstash的时候会用到)

output部分是将日志实时输出到logstash中进行处理

hosts:设置logstash的IP地址以及暴露的端口号

其余的默认就可以了

设置好之后我们就可以去logstash中进行设置了

在logstash中对应几个文件如下

images

logstash-stdin.conf对应的是日志输入的时候进行处理也就是input部分

logstash-output-online-java.conf和logstash-output-pre-java.conf是output部分

logstash-filter-pre-java.conf是filter部分

这三个之前我是现在一个文件因为当时没有考虑大大量配置,如果有大量配置的话如果放在一个文件不利于维护

首先看下logstash-stdin.conf的内容

images

input部分直接是用filebeat的模块指定输入时的端口号以及字符格式类型

ports部分指定的是输入到logstash的端口好也就是logstash服务

logstash-filter-pre-java.conf是过滤部分,考虑到日志量比较大,并且有些日志只是一些dubbo的信息,所以我和dev讨论是否可以直接过滤掉 这样会有便于查找问题

images

目前就过滤掉这些字符当然filter中还可以设置很多东西 这里就不讲了

接下来是output的部分是最关键的部分,当我们从input收集到日志的时候并且处理完成之后 我们需要把这些日志放到Elasticsearch中

并且当出现”java.lang.OutOfMemoryError”关键字的时候 第一时间发送邮件报警

images

其中关心的是hosts指定的是Elasticsearch服务地址和端口号

index是索引的名字,我这里按照日期将他们按天分开

if下面的是判断语句当内存溢出的关键字出现在messages的时候我将发送报警邮件

to是指发送给谁

from指的是从那里发送过来

address指的是smtp的地址

username和password我就不说了

下面的分别是标题和内容

实现效果见:

images

猜你喜欢

转载自blog.csdn.net/qq_22543991/article/details/82386720