ElasticSearch+Logstash+Kibana搭建日志管理中心

文章目录

  • 一、ELK概述
    • 1、什么是ELK?
    • 2、使用ELK能够给我们zCloud带来什么好处?
  • 二、ELK架构图
    • 1、elk架构图
    • 2、elk安装环境准备
  • 三、ELK安装
    • elasticsearch安装
    • logstash搭建
    • kibana搭建
  • 四、springboot微服务接入

一、ELK概述

1、什么是ELK?

ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。

Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。

Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。

Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。

2、使用ELK能够给我们zCloud带来什么好处?

基于Zcloud产品的客户量急剧增长,越来越多的项目需要去进行运维。而运维和开发这一辈子无非就是和问题在战斗。

从现场oncall来看,遇到问题后需要去具体的微服务下进行查找日志信息。假设此时,客户现场不允许频繁连接到环境上去查找日志,那么对于我们排查问题是相当不利的。而本文提到的ELK有以下集中用途。

a.问题排查 kibana提供可视化的界面,日志信息即可在网页上进行日志的查看,更加方便、快速。

b.监控和预警。 日志,监控,预警是相辅相成的。基于日志的监控,预警使得运维有自己的机械战队,大大节省人力以及延长运维的寿命。

**c.开源。**这点对于研发团队来说,当然是最重要的。

d.日志分析

ELK的可视化界面,图形大致如下

ElasticSearch+Logstash+Kibana搭建日志管理中心_第1张图片

二、ELK架构图

1、elk架构图

ElasticSearch+Logstash+Kibana搭建日志管理中心_第2张图片

此文暂时只涉及最基本的ELK架构,仅仅讨论ELK实施起来的可行性和大体方案,若需要做得更细,后续需要加入更多的组件,比如beats,kafka,redis等等。

此架构由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过配置Kibana Web方便的对日志查询,并根据数据生成报表。

2、elk安装环境准备

需要提前准备java环境 es,logstash,kibana

三、ELK安装

elasticsearch安装

注意:es需要依赖java环境,并且不能使用root用户进行启动

1、创建普通用户,并且使普通用户使用root用户的java环境

2、创建elsearch用户组及elsearch用户

  • groupadd es
    useradd es -g es -p es
    

3.下载es,注意es版本会跟java版本进行匹配,比如7.5版本的es需要java11才能进行支撑,

  • 我们这里使用6.4.3版本,对应java8

    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.tar.gz

  • 解压estar -zxvf elasticsearch-6.4.3.tar.gz

4.配置es

  • 解压后进入config目录:cd elasticsearch-6.4.2/config,vi elasticsearch.yml 修改配置文件,在最下面加入如下几行:

    network.host: 0.0.0.0
    http.port: 9200
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    

5、更改elasticsearch-6.4.3文件夹及内部文件的所属用户及组为es:es

  • cd切换到elasticsearch-6.4.3的父路径下

    chown -R es:es elasticsearch-6.4.2
    

6.启动es

su elsearch
cd elasticsearch-6.4.2/bin
sh elasticsearch &

7.至此,elasticsearch配置启动完毕,可以在浏览器输入url: 服务器外网ip:9200 查看是否成功启动:

http://192.168.66.141:9200/

{
  "name" : "N7mzkEq",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "G9qqwhJRSgmC2vvUWHUTeQ",
  "version" : {
    "number" : "6.4.3",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "fe40335",
    "build_date" : "2018-10-30T23:17:19.084789Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

logstash搭建

1、下载安装包

2、解压

3、写配置文件

 cd logstash-6.4.3/bin
 -- 新增编辑配置文件
 # vi logstash.conf
 -- 增加以下内容:
 input {
     tcp {
         port => 5044
         codec => json_lines
     }
 }
 output {
     elasticsearch {
         hosts => ["192.168.66.141:9200"]
     }
 }

4、检查是否配置成功

  • sh logstash -f logstash.conf - t

5、启动

  • sh logstash -f logstash.conf &

启动完成后会开启5044 和9600端口

kibana搭建

1、kibana下载6.4.3

  • https://www.elastic.co/cn/downloads/past-releases/kibana-6-4-3

按照上面的操作,可以先切回root用户了

2、然后cd kibana-6.4.2-linux-x86_64/config/ 进入kibana的配置文件夹

3、vim kibana.yml 编辑配置文件,在最后面加上如下配置就行:

  • server.port: 5601
    server.host: "0.0.0.0"
    elasticsearch.url: "http://localhost:9200"
    kibana.index: ".kibana"
    

4、cd命令进入bin目录

  • sh kibana & 启动kibana

启动完毕,可以浏览器输入url: 服务器外网ip:5601 查看是否成功启动

四、springboot微服务接入

1、集成springboot项目

  • pom.xml文件增加依赖

    <dependency>
        <groupId>net.logstash.logbackgroupId>
        <artifactId>logstash-logback-encoderartifactId>
        <version>5.1version>
    dependency>
    

2、修改logback.xml配置文件

  • 新增appender

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.11.199:5044destination>
        <queueSize>1048576queueSize>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTCtimeZone>
                timestamp>
                <pattern>
                    <pattern>
                            {
                            "severity":"%level",
                            "service": "%contextName",
                            "pid": "${PID:-}",
                            "thread": "%thread",
                            "class": "%logger{40}",
                            "rest": "%message->%ex{full}"
                            }
                    pattern>
                pattern>
            providers>
        encoder>
    appender>
    
  • 
    -- <root>节点中,增加:
    
    <appender-ref ref="LOGSTASH" />
    
    

l}"
}





- ```java

-- 节点中,增加:



你可能感兴趣的:(ElasticSearch,微服务日志管理中心,ElasticSearch,Logstash,Kibana,SpringBoot)