elasticsearch+logstash+redis+kibana+logback整合

来源:互联网 发布:ping 端口号命令 编辑:程序博客网 时间:2024/06/05 21:02

1.安装jdk 1.7,因为elasticsearch 1.4.0需要依赖jdk 1.7;

1.安装elasticsearch最新版本1.4.0;

    下载es后,解压。

    打开config/elasticsearch.yml文件,加入以下配置:

[javascript] view plain copy
  1. http.cors.enabled: true  
  2. http.cors.allow-origin:  http://192.168.1.61:9080   //这里是kibana所在的tomcat的host和端口,以允许kibana访问  

     执行命令启动ES:

     ./bin/elasticsearch &

2.安装logstash,我这里用的版本是1.4.2;

    下载logstash后,解压,新建一个目录conf,在conf目录下新建文件logstash-redis.conf,内容如下: 

[javascript] view plain copy
  1. input {  
  2.   redis {  
  3.     host => "192.168.1.68"  //redis的ip  
  4.     port => "6379" //redis的端口  
  5.     key => "logstashdemo"  
  6.     password => "your redis password" //redis的访问密码  
  7.     data_type => "list"  
  8.     codec  => "json"  
  9.     type => "logstash-redis-demo"  
  10.     tags => ["logstashdemo"]  
  11.   }  
  12. }  
  13.   
  14. output {  
  15.   elasticsearch {  
  16.     host => "192.168.1.61"  //es的ip  
  17.   }  
  18.   
  19. }  
    执行以下命令启动logstash:

    ./bin/logstash -f conf/logstash-redis.conf &

3.下载kibana,我这里用的版本是3.1.2;

    解压后,丢到tomcat的webapps目录下,配置好tomcat的host和端口。

4.redis 2.6.14,服务器中默认已经安装好了,访问端口6379,设置好访问密码;

5.java工程中,pom.xml文件增加logstash-redis-appender依赖:

[html] view plain copy
  1.    <dependency>  
  2. <groupId>com.cwbase</groupId>  
  3. <artifactId>logback-redis-appender</artifactId>  
  4. <version>1.1.0</version>  
  5.    </dependency>  
    该依赖默认使用了jedis2.5.2。

5.修改logback.xml, 增加appender;

[html] view plain copy
  1. <appender name="LOGSTASH" class="com.cwbase.logback.RedisAppender">    
  2.         <source>mysite</source>    
  3.         <type>logstash-redis-demo</type>    
  4.         <host>192.168.1.68</host>  <!-- redis server -->  
  5.         <key>logstash:demo</key>   <!-- 这个Key是Redis List的Key,需要和Logstash读取Redis的Key匹配 -->   
[html] view plain copy
  1. <password>your redis password</password>  <!-- 访问redis的密码 -->  
  2. <tags>logstashdemo</tags>    
  3. <mdc>true</mdc>    
  4. <location>true</location>    
  5. <callerStackIndex>0</callerStackIndex>    
  6. /appender>  
[html] view plain copy
  1.   
[html] view plain copy
  1. <root level="WARN">  
  2.     <appender-ref ref="LOGSTASH" />  
[html] view plain copy
  1. </root>  

6:补充说明一点,由于这里是用HTTP方式访问redisAppender, 相对来说是紧耦合
另外一种实现是使用logstash的客户端来读取logstash.json日志文件然后输出到redis队列

1)首先日志集中 ,logback.xml配置

  <!-- 日志集中 -->
    <appender name="LOGSTASH" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_DIR}/${SYSTEM_NAME}/logstash.json</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/logstash.%d{yyyy-MM-dd}.%i.json
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5000MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoding>UTF-8</encoding>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>
2)安装logstash客户端及配置,版本为2.3.2

在/apps/svr/logstash-2.3.2/bin目录下新建logstash.conf,编辑内容如下:

input {
      
    file {
        path => "/apps/logs/com.midea.jr/*.json"
        type => "com.midea.jr.credit.accounting"
        start_position => "beginning"
        tags => "DEV"
        add_field => {"clientIp"=>"10.16.10.11"}
    }
      
    file {
        path => "/apps/logs/com.midea.jr/credit.accounting/task/*.json"
        type => "com.midea.jr.credit.accounting.task"
        start_position => "beginning"
        tags => "DEV"
        add_field => {"clientIp"=>"10.16.10.11"}
    }
}
 
filter {
    json {
        source => "message"
    }
}
output {
    #stdout {}  #控制台同时输出
    redis {
                host => '10.16.73.129'
                data_type => 'list'
                key => 'logstash:redis'
    }
}

启动logstash客户端:

./logstash -f logstash.conf

0 0
原创粉丝点击