logback+ELK+redis日志收集服务搭建

logback+ELK+redis日志收集服务搭建

粗略画的架构图
这里写图片描述

+ELK的简单介绍
+ Elasticsearch是一个分布式搜索分析引擎,稳定、可水平扩展、易于管理是它的主要设计初衷
+ Logstash是一个灵活的数据收集、加工和传输的管道软件
+ Kibana是一个数据可视化平台,可以通过将数据转化为酷炫而强大的图像而实现与数据的交互将三者的收集加工,存储分析和可视转化整合在一起就形成了 ELK
+ 参考博客: http://soft.dog/2015/12/22/elk-basic/

#本教程简单介绍
1.此ELK版本是5.3
2.日志记录使用logback ,分布式链表日志使用log4j MDC标记
3.Logstash-Shipper获取日志信息发送到redis
4.Redis在此处的作用
  是防止ElasticSearch服务异常,丢失日志
  提供消息队列的作用
5.logstash是读取Redis中的日志信息发送给ElasticSearch
6.ElasticSearch提供日志存储和检索
7.Kibana是ElasticSearch可视化界面插件

#前置环境
jdk 1.8
redis
Centos 7.0 X86-64
注意:
    ELK服务不要用root用户开启。非root账户要记住给目录权限.
    每个服务建议用多个连接,这样可以看控制台
  1. 下载ELK相关服务压缩包
    • 创建ELK用户和目录并赋予权限,方便统一管理。
[root@localhost /]# mkdir elk
[root@localhost /]# groupadd  elk
[root@localhost /]# useradd -g elk elk
[root@localhost /]# chown -R elk:elk /elk
[root@localhost /]# su elk
[elk@localhost /]$ cd elk
  • 下载,然你也可以去官网找最新版的
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.2.tar.gz

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.3.2.tar.gz

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.2-linux-x86_64.tar.gz
  1. 配置Elasticsearch
    • Elasticsearch是可以搭建集群,所以这里解压的名字改成了Elasticsearch+端口号。
[elk@localhost elk]$ mkdir /elk/elastcicearch-9200 && tar -zxvf /elk/elasticsearch-5.3.2.tar.gz -C /elk/elastcicearch-9200
  • Elasticsearch安装

打开配置文件

[elk@localhost /]$ vim /elk/elastcicearch-9200/elasticsearch-5.3.2/config/elasticsearch.yml

在最后一行增加.这里的host我电脑的ip 。port是ElasticSearch服务的端口

cluster.name: es_cluster
node.name: node-1
path.data: /elk/elastcicearch-9200/data              
path.logs: /elk/elastcicearch-9200/logs
network.host: 192.168.3.33  
http.port: 9200

启动肯定会出现ERROR,参考这个博文解决问题,
http://www.cnblogs.com/sloveling/p/elasticsearch.html
友情提示,设置完成后请重新登录账户

启动ElasticSearch,访问http://192.168.3.90:9200/

[elk@localhost /]$ /elk/elastcicearch-9200/elasticsearch-5.3.2/bin/elasticsearch &

这里写图片描述

这里写图片描述
使用集群的话还要装head插件,在后期的教程中再做演示

  1. 配置logstash
    • 解压
tar -zxvf /elk/logstash-5.3.2 -C /elk
  • 测试配置,只是测试服务是否启动。还有这个文件是没有的,启动时加上这个路径就是以这个配置启动
vim /elk/logstash-5.3.2/config/logstash.conf

输入

input {
 stdin { }
}
output {
 stdout {
 codec => rubydebug {}
 }
}

启动,控制台随便输入测

  /elk/logstash-5.3.2/bin/logstash -f /elk/logstash-5.3.2/config/logstash.conf --debug

这里写图片描述

  • 下面这个配置是TCP的,等会用logback演示.
    只是测试数据连同的数据流
    项目==>logstash==>elasticsearch.
input {
 tcp {
        host => "192.168.3.33"
        port => 8882
        mode => "server"
        ssl_enable => false
        codec => json {
            charset => "UTF-8"
        }   
    }   
}   
output {
    elasticsearch {
    hosts => "192.168.3.90:9200"
    index => "logstash-test"
    } 
  stdout { codec => rubydebug }
} 

通过Redis 则需要将上述架构图中的logstash-Shipper(其实就是logstash)中的output改为Redis。logstash的input改为Redis.
具体配置语法可以参考
http://udn.yyuap.com/doc/logstash-best-practice-cn/input/stdin.html
4. 配置kibana
+ 解压

[elk@localhost root]$ tar -zxvf /elk/kibana-5.3.2-linux-x86_64.tar.gz  -C /elk
  • 打开配置
[elk@localhost root]$ vim /elk/kibana-5.3.2-linux-x86_64/config/kibana.yml 
  • 修改配置,最后最加
server.port: 8888
server.host: "192.168.3.90"
elasticsearch.url: "http://192.168.3.90:9200"
  • 启动
[elk@localhost root]$ /elk/kibana-5.3.2-linux-x86_64/bin/kibana &
  • 访问地址
    192.168.3.90:8888

=======================

java测试
项目==>logstash==>elasticsearch.
+ 修改logstash配置

input {
 tcp {
        host => "192.168.3.90"
        port => 8882
        mode => "server"
        ssl_enable => false
        codec => json {
            charset => "UTF-8"
        }   
    }   
}   
output {
        elasticsearch {
        hosts => "192.168.3.90:9200"
        index => "logstash-test"
        } 
  stdout { codec => rubydebug }
} 
  • java 在System.out.println(“123”);打断点,不要跑完程序,不然TCP数据穿不过去

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import org.springframework.util.StringUtils;

public class Test  extends Thread{

    private final Logger logger= LoggerFactory.getLogger(this.getClass());

    private String name;

    public Test(String name) {
        // TODO Auto-generated constructor stub
        this.name = name;
    }


    public void run(){
        if(!StringUtils.isEmpty(name)){
            MDC.put("username", name); 
        }
        for(int i =0 ; i<40 ; i++){
            if (logger.isInfoEnabled()) { 
                logger.info("数字【"+i+"】"); 
            } 
        }


    }

    public static void main(String[] args) {
            test t1 = new test("我是标记11111");
            test t2 = new test("我是标记22222");
            test t3 = new test("");
            t1.start();
            t2.start();
            t3.start();
            System.out.println("123");
    }
}
  • maven架包支持。如果使用最新的ELK请使用最新的架包版本
<dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.12</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>1.2.3</version>
    </dependency>
    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>4.9</version>
    </dependency>
    <!--实现slf4j接口并整合-->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.7.0</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>

依次启动 elasticsearch logstash kibana java程序

演示效果
这里写图片描述

这里写图片描述

对于Redis的,只需要解压两个logstash。只是修改配置的问题。这里就不做演示了

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值