ELK由Elasticsearch、Logstash和Kibana三部分组件组成;


Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。【我的理解类似solr、lucense的搜索引擎,其实后来才知道他根本就是lucense】

Logstash可以日志进行收集、分析,并将其存储的开源工具。【类似Flume的功能,实际上不如Flume好玩。我个人认为】

Kibana。 可以认为是友好的 Web 界面。 把前两个收集整理的数据展现出来。

Redis内存数据库。使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。


在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。


1、安装jdk

mkdir -p /usr/lib/jvm
 tar -xvf  jdk-8u45-linux-x64.tar.gz -C /usr/lib/jvm
  
# vim /etc/profile 配置系统参数
 export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_45
 export JRE_HOME=${JAVA_HOME}/jre
 export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
 export PATH=${JAVA_HOME}/bin:$PATH

2、安装logstash


# wget https://download.elastic.co/logstash/logstash/logstash-1.5.4.tar.gz        
         # tar zxf logstash-1.5.4.tar.gz -C /usr/local/        
                  
         配置logstash的环境变量        
         # echo "export PATH=\$PATH:/usr/local/logstash-1.5.4/bin" > /etc/profile.d/logstash.sh        
         # . /etc/profile

3、做 2个测试

1 通过-e参数指定logstash的配置信息,用于快速测试,直接输出到屏幕。


# logstash -e "input {stdin{}} output {stdout{}}"                    
         my name is zhengyansheng.             //         手动输入后回车,等待10秒后会有返回结果        
         Logstash startup completed        
         2015-10-08T13:55:50.660Z 0.0.0.0 my name is zhengyansheng.        
         这种输出是直接原封不动的返回...


2 通过-e参数指定logstash的配置信息,用于快速测试,以json格式输出到屏幕。


# logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'        
         my name is zhengyansheng.             //         手动输入后回车,等待10秒后会有返回结果        
         Logstash startup completed        
         {        
                  "message"          =>          "my name is zhengyansheng."         ,        
                  "@version"          =>          "1"         ,        
                  "@timestamp"          =>          "2015-10-08T13:57:31.851Z"         ,        
                  "host"          =>          "0.0.0.0"        
         }        
         这种输出是以json格式的返回...

4、以配置文件的方式再做个测试

logstash-simple.conf 在你的安装路径下自己新建。


# vim logstash-simple.conf       
       input { stdin {} }      
       output {      
              stdout { codec=> rubydebug }      
       }      
              
       # logstash -f logstash-simple.conf    //普通方式启动      
       Logstash startup completed      
              
       # logstash agent -f logstash-simple.conf --verbose //开启debug模式      
       Pipeline started {:level=>:info}      
       Logstash startup completed      
       hello world.           //       手动输入hello world.      
       {      
              "message"        =>        "hello world."       ,      
              "@version"        =>        "1"       ,      
              "@timestamp"        =>        "2015-10-08T14:01:43.724Z"       ,      
              "host"        =>        "0.0.0.0"      
       }      
       效果同命令行配置参数一样...


此处,我遇到了一个问题。如下图:












这个是因为,配置文件 logstash-simple.conf  编码不对。

把编码改成 utf-8 的格式就可以了。

什么?

不知道怎么改?

好吧,百度一下自己。【提示,vim :set】