elasticsearch+logstash+redis+kibana+logback整合

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

要在一个项目中同时使用Redis、RabbitMQ、Nginx、ElasticsearchLogstashKibana,并将其打包成JAR文件运行,你需要将这些组件集成到一个Spring Boot项目中,并通过Maven或Gradle来管理依赖和构建过程。以下是一个基本的步骤指南: ### 1. 创建Spring Boot项目 使用Spring Initializr创建一个新的Spring Boot项目,并添加所需的依赖项。 ### 2. 添加依赖项 在`pom.xml`(如果使用Maven)或`build.gradle`(如果使用Gradle)中添加以下依赖项: ```xml <dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- Spring Data Redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- Spring for RabbitMQ --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Spring Boot Starter Data Elasticsearch --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> <!-- Logstash Logback Encoder --> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.4</version> </dependency> <!-- Lombok (optional) --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- Spring Boot Starter Test --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> ``` ### 3. 配置应用程序属性 在`src/main/resources/application.properties`或`application.yml`中配置Redis、RabbitMQ和Elasticsearch的连接信息。 ```properties # Redis spring.redis.host=localhost spring.redis.port=6379 # RabbitMQ spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest # Elasticsearch spring.elasticsearch.rest.uris=http://localhost:9200 # Logstash logging.logback.encoder.logstash.enabled=true logging.logback.encoder.logstash.host=localhost logging.logback.encoder.logstash.port=5000 ``` ### 4. 编写代码 编写Spring Boot应用程序代码,集成Redis、RabbitMQ和Elasticsearch。例如,创建一个简单的REST控制器来发送和接收消息。 ### 5. 打包应用程序 使用Maven或Gradle将应用程序打包成JAR文件。 ```bash # 使用Maven打包 mvn clean package # 使用Gradle打包 gradle build ``` ### 6. 运行应用程序 运行打包好的JAR文件。 ```bash java -jar target/your-app-name.jar ``` ### 7. 配置Nginx 配置Nginx作为反向代理服务器,将请求转发到Spring Boot应用程序。编辑Nginx配置文件(通常位于`/etc/nginx/nginx.conf`或`/etc/nginx/sites-available/default`),添加以下内容: ```nginx server { listen 80; server_name your_domain.com; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ### 8. 启动Nginx 启动或重新启动Nginx服务。 ```bash sudo systemctl start nginx # 或者 sudo systemctl restart nginx ``` ### 9. 配置LogstashKibana 配置Logstash从应用程序日志中读取数据,并将数据发送到Elasticsearch。配置Kibana以可视化Elasticsearch中的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值