上一篇讲过了elasticsearch和kibana的可视化组合查询,这一篇就来看看大名鼎鼎的ELK日志平台是如何搞定的。

elasticsearch负责数据的存储和检索,kibana提供图形界面便于管理,Logstash是个日志中转站负责给elasticsearch输出信息。

1 安装logstash

这里使用和elasticsearch相同的版本2.3.4,wget https://download.elastic.co/logstash/logstash/logstash-2.3.4.tar.gz
由于logstash有压缩包,免安装的,下载后直接解压。tar -xzvf logstash-2.3.4.tar.gz
进入logstash目录,我们先来看看logstash的插件集合,bin/logstash-plugin list

图没截完,后面还有很多,从名字可以看到有codec、filter、input、output等,这些都是有用的。
等号我们讲到启动时带的config就会用到这些插件。先看一个logstash-codec-json-lines,这个是必须的,如果早期的版本装完logstash后没有这个插件,你就需要额外去下载它。
我们Springboot的项目日志就是以json的格式传给logstash的。

2 配置logstash

OK,别的不管,我们直接运行logstash。
bin/logstash

可以看到给的提示,只支持两个命令,logstash agent ,要注意不同的版本命令是不同的,最新的5.5.1就已经没有agent了,使用时需要注意看系统给的提示。
该版本的logstash启动命令是logstash agent -f conf/conf。即在logstash agent -f 后面加上你的配置文件。
该配置文件是不存在的,需要我们自己添加。
mkdir config 创建目录
vi config/log_es.conf 创建配置文件,配置文件名字随便起
input {
  # For detail config for log4j as input,
  # See: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4567
    codec => json_lines
  }
}
filter {
  #Only matched data are send to output.
}
output {
  # For detail config for elasticsearch as output,
  # See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
  elasticsearch {
    action => "index"          #The operation on ES
    hosts  => "localhost:9200"   #ElasticSearch host, can be array.
    index  => "applog"         #The index to write data to.
  }
}

这个就是一个简单的配置文件,看input、filter、output,这些都是在plugin list里出现过的,我这里用的tcp,代表日志的来源是以tcp的形式过来的。比较常用的有file,就是读取某个文件,如果你的日志是生成了日志文件,就可以在这里用input file去读取它。还有http、jdbc、kafka、redis等,都有人用,就是把日志丢到kafka中,logstash去获取。



filter是过滤器,可以在这里配置过滤哪些日志。
output标签也有很多,代表logstash要把接收到的日志往哪里输出,有stdout输出到控制台、email、csv、elasticsearch等。我们选择把日志输出到ES。看配置文件,设置ES的host为本机,当然你也可以选择远程的ES服务器,可以设置多个ES地址数组;index代表ES上的index,如果没有则创建该index;action为index代表动作,分别有“index”、“delete”、“create”、“update”。

你也可以输出到多个地方,譬如既插入ES又输出到控制台
output{
  elasticsearch{
    hosts=>["172.132.12.3:9200"]
    action=>"index"
    index=>"applog"
    #document_type=>"%{@type}"
    document_id=>"ignore"
    }
  stdout{
      codec=>rubydebug
  }
}  

index也可以动态指定,如果大家还记得上一篇kibana添加index时就是可以添加*匹配的index。

譬如我们可以用
index=>”applog-%{+YYYY,MM.dd}” 

OK,设置完配置文件,我们就要启动logstash了。

bin/logstash agent -f config/log_es.conf
启动完成后,就可以在Springboot项目里通过ip:4567端口来输出日志到logstash了,logstash收到的日志就会自动往ES里插入了。

3 logback日志关联logstash

Springboot项目默认logback记录日志,之前已经详细讲过了logback的使用。当然你也可以使用log4j、log4j2,它们同样可以输出到logstash里。
新建Springboot项目,只勾选个web即可,logback和logstash关联需要依赖一个组件
<dependency>
			<groupId>net.logstash.logback</groupId>
			<artifactId>logstash-logback-encoder</artifactId>
			<version>4.11</version>
		</dependency>

在pom.xml添加这个,然后在GitHub上看看用法 https://github.com/logstash/logstash-logback-encoder

在项目的文档里可以看到各种用法,里面有讲logback通过socket、tcp等方式将日志输出到logstash的。


参照文档,我们在项目里新建logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>你的ip地址:4567</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>

    <root level="INFO">
        <appender-ref ref="LOGSTASH" />
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>

配置好ip和logstash的配置文件input里你设置的端口。

4 使用kibana查看Springboot日志

上面配置好了logback和logstash的关联,我们就试着输出日志看看。

@RestController
public class IndexController {
    private final Logger logger = LoggerFactory.getLogger(getClass());

    @GetMapping("/index")
    public Object index() {
        for (int i = 0; i < 100; i++) {
            logger.debug("debug" + i);
            logger.info("info" + i);
            logger.warn("warn" + i);
            logger.error("error" + i);
        }

        return "success";
    }
}

启动项目,访问index。

然后看看日志存储情况





我们可以看到在kibana里和ES中都已经发现了这些日志信息了。
譬如我们做个条件搜索:


OK,通过这个简单的例子,我们就可以把Springboot日志输出到ELK日志平台了。

Springboot项目搭配ELK日志平台的更多相关文章

  1. Springboot项目使用aop切面保存详细日志到ELK日志平台

    上一篇讲过了将Springboot项目中logback日志插入到ELK日志平台,它只是个示例.这一篇来看一下实际使用中,我们应该怎样通过aop切面,拦截所有请求日志插入到ELK日志系统.同时,由于往往 ...

  2. elk日志平台搭建小记

    最近抽出点时间,搭建了新版本的elk日志平台 elastaicsearch 和logstash,kibana和filebeat都是5.6版本的 中间使用redis做缓存,版本为3.2 使用的系统为ce ...

  3. ELK 日志平台构建

    elastic中文社区 https://elasticsearch.cn/ 完整参考 ELK实时日志分析平台环境部署--完整记录 https://www.cnblogs.com/kevingrace/ ...

  4. springboot项目配置logback日志系统

    记录springboot项目配置logback日志文件管理: logback依赖jar包 SpringBoot项目配置logback理论上需要添加logback-classic依赖jar包: < ...

  5. 亿级 ELK 日志平台构建部署实践

    本篇主要讲工作中的真实经历,我们怎么打造亿级日志平台,同时手把手教大家建立起这样一套亿级 ELK 系统.日志平台具体发展历程可以参考上篇 「从 ELK 到 EFK 演进」 废话不多说,老司机们座好了, ...

  6. 学习ELK日志平台(四)

    一:需求及基础: 场景: 1.开发人员不能登录线上服务器查看详细日志 2.各个系统都有日志,日志数据分散难以查找 3.日志数据量大,查询速度慢,或者数据不够实时 4.一个调用会涉及到多个系统,难以在这 ...

  7. ELK日志平台

    1.ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch.Logstash和Kibana三个开源工具组成,不过现在还新增了一个Beats,它是一个轻量级的日志收集处理工具(Age ...

  8. ELK日志平台搭建

    功能: 1. 查看当天的服务器日志信息(要求:在出现警告甚至警告级别以上的都要查询)2. 能够查看服务器的所有用户的操作日志3. 能够查询nginx服务器采集的日志(kibana作图)4. 查看tom ...

  9. 搭建ELK日志平台(单机)

    系统版本:Ubuntu 16.04.7 LTS 软件架构:Filebeat+Kafka+Logstash+Elasticsearch+Kibana+Nginx 软件版本:Filebeat-7.16.0 ...

随机推荐

  1. 20145335郝昊 Java学习心得 密码学代码复写

    20145335郝昊 Java学习心得 密码学代码复写 本学期我们学习了现代密码学这门课程,在上课的时候接触到了很多种类型的密码体制,对于一些典型很通用的密码体制有自己的学习和设计.不论是从密码体制还 ...

  2. 20135302魏静静Linux内核分析第二周学习总结

    操作系统是如何工作的 1. 小结:计算机是怎样工作的 三个法宝 存储程序计算机.函数调用堆栈.中断机制 两把宝剑 中断上下文.进程上下文的切换 2. 堆栈 堆栈是C语言程序运行时必须的一个记录调用路径 ...

  3. Docker 的一些使用心得

    Docker 的使用心得 预备知识·必备· bash(bsd) Net ,ip know hot to search in Google and Baidu 安装 一般找一个不错的网络环境...不然玩 ...

  4. ubuntu文字界面与图形界面切换

    redhat: (据说是) 图形界面->文字界面:crtl+alt+F1~6 文字界面->图形界面:crtl+alt+F7 -------------------------------- ...

  5. Linux命令awk

    1.简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行读入,默认以空格为分隔符将每行切片,切开的部 ...

  6. oracle的 分表 详解 -----表分区

    此文从以下几个方面来整理关于分区表的概念及操作:         1.表空间及分区表的概念         2.表分区的具体作用         3.表分区的优缺点         4.表分区的几种类 ...

  7. 【Network Architecture】Feature Pyramid Networks for Object Detection(FPN)论文解析(转)

    目录 0. 前言 1. 博客一 2.. 博客二 0. 前言   这篇论文提出了一种新的特征融合方式来解决多尺度问题, 感觉挺有创新性的, 如果需要与其他网络进行拼接,还是需要再回到原文看一下细节.这里 ...

  8. webservice声明发布SOAP1.2

    在不声明1.2的情况下,默认是1.1 当声明1.2时

  9. docker-machine windows

    windows 官方使用 https://docs.docker.com/machine/drivers/hyper-v/ 坑点是  docker-machine create -d hyperv m ...

  10. NPM Scripts -- onchange parallelshell

    Watch for changes to the styles.scss file and automatically compile it to the css file. Run multiple ...