前言:最近在写一个HTTP代理服务器,记录日志使用的是ES,所以涉及到SpringBoot和ES的整合,整合完毕后又涉及到数据可视化分析,所以使用了Kibana进行管理,有些坑,需要记录一下

SpringBoot整合ES

gradle项目,在build.gradle文件中引入依赖

`dependencies {

//........

// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-elasticsearch

implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch'

}ES和MySQL有点像,ES中索引的概念对应MySQL中表的概念,ES中文档的概念对应MySQL中的一行数据。因此我们需要定义一个索引import java.util.Map;

@Data

@Document(indexName = "request_log", createIndex = false)

public class RequestIndex {

private Long id;

private String domain;

private String ip;

private HttpMethod method;

private String uri;

private Map<String, Object> headers;

private byte[] body;

这里有个坑,给我在后面整合Kibana的时候造成了困难,@Document注解中的createIndex的默认值为true,可省略。所以在后续插入数据时,request_log索引不存在时,会自动创建一个request_log索引,而这个默认创建的索引并没有@timestamp字段,所以导致Kibana的柱状图无法生成,影响数据可视化 因此,我建议这里直接手动设置createIndex的值为false 我们另外手动创建request_log索引,这样可以手动开启@timestamp字段 在ES7中,创建@timestamp的方法与之前的版本不同,使用的是pipeline 首先创建一个pipelinePUT _ingest/pipeline/timestamp_pipeline

{

"description": "Adds a field to a document with the time of ingestion",

"processors": [

{

"set": {

"field": "@timestamp",

"value": "{{_ingest.timestamp}}"

}

}

]

}这样我们就成功创建了一个名为timestamp_pipeline的pipeline 紧接着我们创建request_log索引,并把这个pipeline配置到这个索引上PUT request_log

{

"settings": {

"default_pipeline": "timestamp_pipeline"

}

}`

至此,我们就创建索引成功了,看一下日志



果然成功出现了@timestamp字段

Kibana搭建

Kibana的版本必须和ES的版本一致,否则无法启动

Kibana的配置文件中,主要需要配置以下几项:

server.host

server.port

elasticsearch.hosts

elasticsearch.username

elasticsearch.password

i18n.locale: "zh-CN"

其中,elasticsearch.username不能使用elastic用户,由于ES配置了xpack,所以创建了其他用户

访问 GET /_xpack/security/user

从名字看起来,可以使用kibana和kibana_system,但是看提示,kibana用户已经被弃用了,建议使用kibana_system



搭建好Kibana后,进入Stack Management,索引模式,创建索引模式



以@timestamp为时间戳字段



成功啦~

SpringBoot整合ES+Kibana的更多相关文章

  1. springboot整合es客户端操作elasticsearch(五)

    springboot整合es客户端操作elasticsearch的总结: 客户端可以进行可以对所有文档进行查询,就是不加任何条件: SearchRequest searchRequest = new ...

  2. springboot整合es客户端操作elasticsearch(二)

    在上章节中整合elasticsearch客户端出现版本问题进行了处理,这章来进行springboot整合得操作 环境:elaticsearch6.2.1,springboot 2.1.8 客户端版本采 ...

  3. ElasticSearch(三)springboot整合ES

    最基础的整合: 一.maven依赖 <parent> <groupId>org.springframework.boot</groupId> <artifac ...

  4. springboot整合es客户端操作elasticsearch(四)

    对文档查询,在实际开发中,对文档的查询也是偏多的,记得之前在mou快递公司,做了一套事实的揽件数据操作,就是通过这个来存储数据的,由于一天的数据最少拥有3500万数据 所以是比较多的,而且还要求查询速 ...

  5. SpringBoot 整合es(elasticsearch)使用elasticsearch-rest-high-level-client实现增删改

    引入依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok< ...

  6. springboot整合es客户端操作elasticsearch(三)

    继续上个随笔: 那么我们只需要修改controller中文件就可以完成相关操作 本次主要是对文档得操作: 更新文档: package com.cxy.elasticsearch.controller; ...

  7. SpringBoot操作ES进行各种高级查询

    SpringBoot整合ES 创建SpringBoot项目,导入 ES 6.2.1 的 RestClient 依赖和 ES 依赖.在项目中直接引用 es-starter 的话会报容器初始化异常错误,导 ...

  8. SpringBoot整合freemarker 引用基础

    原 ElasticSearch学习笔记Ⅲ - SpringBoot整合ES 新建一个SpringBoot项目.添加es的maven坐标如下: <dependency> <groupI ...

  9. Springboot整合ElasticSearch进行简单的测试及用Kibana进行查看

    一.前言 搜索引擎还是在电商项目.百度.还有技术博客中广泛应用,使用最多的还是ElasticSearch,Solr在大数据量下检索性能不如ElasticSearch.今天和大家一起搭建一下,小编是看完 ...

随机推荐

  1. 简单学习一下ibd数据文件解析

    来源:原创投稿 作者:花家舍 简介:数据库技术爱好者. GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 简单学习一下数据文件解析 这是尝试使用Golang语言简单解析My ...

  2. Apache DolphinScheduler 1.2.1 发布说明

    Apache DolphinScheduler 于2020年2月24日正式发布 1.2.1 版,发布内容如下: 新特性: [#1497] 通过 API 创建的工作流在前端展示时自动调整布局. [#74 ...

  3. Linux 02 基本命令

    参考源 https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0 版本 本文章基于 CentOS 7.6 工具 清屏 cl ...

  4. Java多线程开发系列之五:Springboot 中异步请求方法的使用

    Springboot 中异步线程的使用在过往的后台开发中,我们往往使用java自带的线程或线程池,来进行异步的调用.这对于效果来说没什么,甚至可以让开发人员对底层的状况更清晰,但是对于代码的易读性和可 ...

  5. 【MATLAB】学习记录2-数组与向量

    1-数组 A=[1,2,3;4,5,6]%创建数组 [r,c]=size(A)%返回行列数 b=size(A) c=length(A)%返回最大的维数值 2-创建数组 先创建A数组 B=zeros(2 ...

  6. C++ 性能小测 1 二维数组的遍历效率

    C++ 性能小测 1 二维数组的遍历效率 遍历二维数组时,常规思路是使用一个嵌套循环.一方面,由于 CPU 使用了分支预测技术,因此通常将循环次数最多循环的放在最内层.另一方面,由于二维数组是按行存储 ...

  7. 网站优化,dns预解析,解析缓存

    DNS Prefetch 是一种 DNS 预解析技术.当你浏览网页时,浏览器会在加载网页时对网页中的域名进行解析缓存,这样在你单击当前网页中的连接时就无需进行 DNS 的解析,减少用户等待时间,提高用 ...

  8. MySQL Workbench生成E-R图

    因为做毕业设计文档,需要写ER图,故记录此篇 第一步 选择添加 选择数据库 一直next选择要生成的表 再一直下一步就ok了

  9. good thing

  10. k8s驱逐篇(4)-kube-scheduler抢占调度驱逐

    介绍kube-scheduler抢占调度驱逐之前,先简单的介绍下kube-scheduler组件: kube-scheduler简介 kube-scheduler组件是kubernetes中的核心组件 ...