Elasticsearch 系列指南(五)——ELK日志收集

前面我们已经了解了Elasticsearch的基本使用以及Java的集成,但在实际开发中我们的需求不仅仅是这些,下面我们就常用的Elasticsearch整套ELK做下简单介绍,下面这些文字是摘抄以供大家了解

日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。

集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products

  • Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

  • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

  • Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。


ElasticSearch前面已经做介绍,如有不了解可先移止ElasticSearch系列指南一、二、三、四了解,本篇主要学习Logstash和Kibana配置及用法
logstash下载安装
这款工具是开箱即用的软件,下载地址戳这里,下载自己对应的系统版本即可,下载后直接解压,就可以了,通过命令行,进入到logstash/bin目录,执行下面的命令:
logstash -e ""
可以看到提示下面信息(这个命令稍后介绍), 输入hello world!

可以看到logstash尾我们自动添加了几个字段,时间戳@timestamp,版本@version,输入的类型type,以及主机名host。
工作原理

Logstash使用管道方式进行日志的搜集处理和输出。有点类似*NIX系统的管道命令 xxx | ccc | ddd,xxx执行完了会执行ccc,然后执行ddd。

  在logstash中,包括了三个阶段:

  输入input --> 处理filter(不是必须的) --> 输出output



每个阶段都由很多的插件配合工作,比如file、elasticsearch、redis等等。

  每个阶段也可以指定多种方式,比如输出既可以输出到elasticsearch中,也可以指定到stdout在控制台打印。

  由于这种插件式的组织方式,使得logstash变得易于扩展和定制。

其实它就是一个收集器而已,我们需要为它指定Input和Output(当然Input和Output可以为多个)。由于我们需要把Java代码中Log4j的日志输出到ElasticSearch中,因此这里的Input就是Log4j,而Output就是ElasticSearch。

配置文件说明
logstash基本上由三部分组成,input、output以及用户需要才添加的filter,因此标准的配置文件格式如下:
input {...} 
filter {...} 
output {...}
在每个部分中,也可以指定多个访问方式,例如我想要指定两个日志来源文件,则可以这样写:
input { 
 file { path =>"/var/log/messages" type =>"syslog"} 
 file { path =>"/var/log/apache/access.log" type =>"apache"} 
}

类似的,如果在filter中添加了多种处理规则,则按照它的顺序一一处理,但是有一些插件并不是线程安全的。

  比如在filter中指定了两个一样的的插件,这两个任务并不能保证准确的按顺序执行,因此官方也推荐避免在filter中重复使用插件。

说完这些,简单的创建一个配置文件的小例子看看:
创建一个配置文件(名字和位置可以随意,这里我放在config目录下,取名为log.conf):
mkdir config
vi config/log.conf
input {
  file {
    type => "hadoop-yarnlog"
    path => "/usr/local/hadoop/logs/yarn-hadoop-resourcemanager-m000.log"
  }
}

output {
  elasticsearch {
    hosts => "m000:9200"
    index => "logstash-%{type}-%{+YYYY.MM.dd}"
    template_overwrite => true
  }
}
启动Logstash,logstash /bin/logstash agent -f config/log.conf 在ES的head页面可以看到多了一个logstash-hadoop-yarnlog的文件,下图中前面两个是marvel相关数据。

可以在数据浏览,基本查询,复合查询中对该文件进行相关的查询操作。比如输入时间参数查看最近4分钟的日志文件:


Kibana

下载地址: https://www.elastic.co/downloads/kibana  
  下载好后,上传到m000:/usr/local/elk路径下解压缩,设置/usr/local/kibana软连接指向该路径。进入KB_HOME/config文件夹,编辑kibana.yml文件,设置 server.port: 5601 server.host: "m000 elasticsearch.url: "http://m000:9200" 。 
  启动kibaba, KB_HOME/bin/kibana , 正常启动可以在控制台中看到如下信息: 

在浏览器中输入m000:5601,可以看到如下页面:

看到上图中的界面,表示ELK已经正常配置了,点击Create–>Discover 

可以看到加载的日志文件中的一些数据。

  最后继续在Kibana中把marvel插件安装完成。输入KB_HOME/bin/kibana plugin --install marvel --url file:///usr/local/elk/marvel-2.3.3.tar.gz如下图 


启动kibana,浏览器访问m000:5601,点击选图中的红色方框,

在新窗口中选择Marvel,可以看到Elasticsearch集群的监控信息, 
这里写图片描述
点击上图中的es_cluster,可以看到es_cluster集群中各节点详细监控信息,

有关Elasticsearch,Logstash,Kibana更多细节,后面继续补充。

猜你喜欢

转载自blog.csdn.net/mjwwjcoder/article/details/79129950