来源: http://blog.csdn.net/xifeijian/article/details/50829617css
日志监控和分析在保障业务稳定运行时,起到了很重要的做用,不过通常状况下日志都分散在各个生产服务器,且开发人员没法登录生产服务器,这时候就须要一个集中式的日志收集装置,对日志中的关键字进行监控,触发异常时进行报警,而且开发人员可以查看相关日志。logstash+elasticsearch+kibana3就是实现这样功能的一套系统,而且功能更强大。html
logstash:是一个管理日志和事件的工具,你能够收集它们,解析它们,并存储它们以供之后使用(例如日志搜索),logstash有一个内置的web界面,用来搜索你的全部日志。logstash在部署时有两种运行模式:standalone和centralized:前端
* standalone:standalone的意思是全部的事情都在一台服务器上运行,包括日志收集、日志索引、前端WEB界面都部署在一台机器上。java
* centralized:就是多服务器模式,从不少服务器运输(ship)日志到一台总的日志(collector)服务器上用来索引和查找。nginx
须要注意的是logstash自己并无什么shipper和indexer这种说法,由于不管是运输日志的进程仍是聚集总的日志的进程运行的都是同一个程序,只是使用的配置文件不一样而已。web
elasticsearch:redis
基于lucene的开源搜索引擎,是一个分布式的搜索分析系统,主要特色有:real time data、real time analytics、distributed、high availability、multi-tenancy、full text search、document oriented、conflict management、schema free、restful api等等。编程
kibana3:json
可视化日志和数据系统,做为WEB前端能够很容易的和elasticsearch系统结合。kibana有版本2和版本3的区分,版本2采用ruby编写,部署起来很麻烦,须要安装不少ruby依赖包(目前网上可能是这个版本的部署),版本3采用纯html+css编写,所以部署起来很方便,解压即用,目前已是kibana4了,建议你们使用最新版。api
出于性能及扩展性考虑,实际应用中logstash咱们必然采用centralized模式,最基本的结构图以下:
一、安装Redis,安装过程简单,这里不作详细说明。
二、安装ElasticSearch(目前版本1.4)
三、启动logstash shipper,定义配置文件logstash.conf,根据实际状况定义,如下主要定义了input源为文件,output到redis,启动logstash shipper,例如:
启动shipper:
Java -jar /home/jws/htdocs/logstash/lib/logstash.jar agent -f /home/jws/htdocs/logstash/conf/logstash.conf -l /home/jws/htdocs/logstash/logs/logstash.log
例如如下indexer中的配置,并启动indexer:
五、安装并启动kibana3,安装过程与普通软件安装无异,能够配合nginx安装,这里不作描述,须要注意的是须要在kibana config.js中配置elasticSearch的地址与端口。
注意红框中的内容,这只是kibana3的默认界面,须要咱们用logstash.json代替default.json界面,具体目录源码目录下app/dashboards中。
例如项目中的一个例子,根据需求制做图表(相似饼图,柱状图,折线图等),在笔者实际项目中,从日志中分析数据,实现系统稳定性、响应时间、请求量、业务响应码、HTTP状态码等等以kibana展示;
而且,elasticsearch的用途远不如此,能够用来作搜索数据源,ES提供了编程接口,可使用编程的方式获取ES中的数据自定义开发监控程序,灵活且功能强大。
官方文档(如今都整合在一块儿了):
logstash:https://www.elastic.co/guide/en/logstash/current/index.html
elasticsearch:https://www.elastic.co/
kibana:https://www.elastic.co/