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

xiaoxiao2021-02-28  112

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账户要记住给目录权限. 每个服务建议用多个连接,这样可以看控制台 下载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 配置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插件,在后期的教程中再做演示

配置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。只是修改配置的问题。这里就不做演示了

转载请注明原文地址: https://www.6miu.com/read-40622.html

最新回复(0)