ELK 由三部分组成elasticsearch、logstash、kibana,elasticsearch是一个近似实时的搜索平台,它让你以前所未有的速度处理大数据成为可能。

Logstash:日志收集工具,可以从本地磁盘,网络服务(自己监听端口,接受用户日志),消息队列中收集各种各样的日志,然后进行过滤分析,并将日志输出到Elasticsearch中。

Elasticsearch:日志分布式存储/搜索工具,原生支持集群功能,可以将指定时间的日志生成一个索引,加快日志查询和访问。

Kibana:可视化日志Web展示工具,对Elasticsearch中存储的日志进行展示,还可以生成炫丽的仪表盘。

1:logstash安装部署文档

1.上传logstash安装包,解压logstash.tar.gz:

执行命令:tar -zxvf logstash.tar.gz

2.修改jdk版本为1.8,进入logstash/bin目录,修改logstash.lib.sh:

查看logstash.lib.sh中:

setup_java() { if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ;

then JAVACMD="$JAVA_HOME/bin/java" else JAVACMD="java"

定义了一个setup_java的函数,setup_java被setup函数调用,最终被bin/logstash启动脚本调用,因此,我们只需要在logstash或logstash.lib.sh的行首位置添加两个环境变量:(为自己jdk地址)

export JAVA_CMD="/opt/springboot/jdk1.8/jdk1.8.0_171/bin"

export JAVA_HOME="/opt/springboot/jdk1.8/jdk1.8.0_171"

3.测试是否安装成功

在logstash的bin目录下执行:

./logstash  -e 'input { stdin { } } output { stdout {} }'

运行成功后,输入数据,会打印出相关数据,及表示安装成功。

2:ElasticSearch安装部署文档

Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
   Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

ElasticSearch和solr对比:

部署jdk:上传jdk-8u171-linux-x64.tar.gz,解压。

部署es:上传elasticsearch-6.3.1.tar.gz,解压。

修改启动脚本:

我们需要在启动elasticsearch时,就需要指定jdk版本。
即修改elasticsearch的启动脚本(elasticsearch_HOME/bin/elasticsearch)

[root@master01 elasticsearch-6.0.0]# vim bin/elasticsearch

# 添加以下代码

export JAVA_HOME=/opt/springboot/jdk1.8/jdk1.8.0_171

export PATH=$JAVA_HOME/bin:$PATH

运行:切换到普通用户: su   es;

进入es的安装bin目录下,运行elasticSearch命令。

遇到的问题:

报错:max size virtual memory for user [elastic] is too low, increase to [unlimited]

修改:

/etc/security/limits.conf

* hard memlock unlimited

* soft memlock unlimited

* hard nofile 65536

* soft nofile 65536

*  - as unlimited

/etc/sysctl.conf

fs.file-max = 2097152

vm.max_map_count = 262144

vm.swappiness = 1

elasticsearch.yml

node.name: elasticsearch

http.cors.enabled: true

http.cors.allow-origin: "*"

transport.host: 192.168.1.24

transport.tcp.port: 9300

http.port: 9200

network.host: 0.0.0.0

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

3:springboot上传日志到elasticsearch

  1. 配置logstash相关配置文件

在bin目录下新建jdbc.conf,配置输入输出位置信息。

springboot整合logstash,添加依赖,配置文件,conf文件中配置监听的端口号,写到elasticsearch中。

input {

tcp {

port => 9250

mode => "server"

tags => ["tags"]

codec => json_lines

}

}

output{

elasticsearch {

hosts => ["192.168.1.24:9200"]

index => "spboot-%{+YYYY.MM.dd}"

}

stdout{ codec => rubydebug }

}

启动logstash,指定配置文件,执行命令logstash -f ./jdbc.conf

后台执行命令:nohup ./logstash -f ./jdbc.conf > ./logstash.log 2>&1 &

上传到es中的文件名格式:spboot-2019.02.26,es清除数据的时候会根据格式删除当天的索引。

springboot整合logstash,上传日志到es:

  1. springboot添加相关依赖

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>5.1</version>
</dependency>

  1. 在springboot项目中的src/main/resources目录下,创建logback-spring.xml

文件,配置相关信息。

指定logstash的安装地址及打印相关日志

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"><include resource="org/springframework/boot/logging/logback/base.xml" /><contextName>logback</contextName><!-- 记录文件到特定目录 --><!-- <property name="log.path" value="E:\\test\\logback.log" /> --><property name="log.path" value="./logback.log" /><appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>192.168.1.24:9250</destination><encoder class="net.logstash.logback.encoder.LogstashEncoder" /></appender><!--输出到控制台--><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter>--><encoder><pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!--输出到文件--><appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern></rollingPolicy><encoder><pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="info"><appender-ref ref="stash"/><!--<appender-ref ref="console" /><appender-ref ref="file" />--></root><!-- logback为 java 中的包<logger name="com.dudu.controller"/>logback.LogbackDemo:类的全路径<logger name="com.dudu.controller.LearnController" level="WARN" additivity="false"><appender-ref ref="console"/></logger> -->
</configuration>
  1. 优化ElasticSearch定期删除过期数据

在/opt/springboot/elasticsearch/delete-es目录下创建es-del.sh文件

文件内容:

#!/bin/bash
# @Author: richard
# @Date:   2017-08-11 17:27:49
# @Last Modified by:   richard
# @Last Modified time: 2017-08-11 18:04:58
#保留近 N 天
KEEP_DAYS=7
# 删除前 N的所有天到 前N+10天==>每天执行
function get_todelete_days()
{# declare -A DAY_ARR# DAY_ARR=""for i in $(seq 1 10);doTHIS_DAY=$(date -d "$(($KEEP_DAYS+$i)) day ago" +%Y.%m.%d)DAY_ARR=( "${DAY_ARR[@]}" $THIS_DAY)doneecho ${DAY_ARR[*]}
}
# 返回数组的写法
TO_DELETE_DAYS=(`get_todelete_days`)
for day in "${TO_DELETE_DAYS[@]}"
doecho "$day will be delete"  curl -XDELETE 'http://127.0.0.1:9200/*-'${day}
done

在目录下启动定时任务执行此文件,

输入:crontab -e

输入内容:

30 23 * * 7 /opt/springboot/elasticsearch/delete-es/es-del.sh

然后按Esc输入  :wq   即可。

每周日晚上23:30执行一次。

定时任务执行log文件地址:/var/spool/mail/root 可查看执行错误信息。

ELK整合:ElasticSearch定期删除过期数据相关推荐

  1. 定期删除30天以前的elasticsearch的日志

    脚本/scripts/delete-elk.log #!/bin/bash DATE=`date -d "1 days ago" +%Y.%m.%d` ip=`ifconfig e ...

  2. SpringBoot整合ElasticSearch实现多版本的兼容

    前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...

  3. SpringBoot 整合ElasticSearch全文检索

    ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java语言开发的,并作为Apa ...

  4. Springboot整合Elasticsearch(High-level-Client)

    前言 通过学习Elasticsearch一小段时间来稍微认识了一点ES的体系架构.发现ES最大的坑就是版本兼容性问题了-在整合Springboot也不例外,但是,有一种方式能较好的解决-通过restc ...

  5. elasticsearch 9300端口连接不上_SpringBoot2.x系列教程54--SpringBoot整合ElasticSearch方式一...

    SpringBoot2.x系列教程54--NoSQL之SpringBoot整合ElasticSearch方式一 作者:一一哥 一. Elastic Search 1. Elastic Search简介 ...

  6. 【转】删除过期数据通用程序

    在项目开发中如果有自定义日志性质的数据库表,通常会写一个专门的程序来删除过期数据,同时为了定期执行还要给这个程序定义JOB.如果很多这样的表就要写好多程序,定义好多JOB,非常乱.本文就是通过把需要删 ...

  7. 企业日志分析ELK(Logstash+Elasticsearch+Kibana)介绍及搭建

    目录 一.ELK概述 1.ELK日志分析系统 2.ELK中日志处理步骤 二.Elasticsearch介绍 1.Elasticsearch的基础核心概念 2.分片和副本 三.LogStash概述 1. ...

  8. Elasticsearch实战篇——Spring Boot整合ElasticSearch

    2019独角兽企业重金招聘Python工程师标准>>> 当前Spring Boot很是流行,包括我自己,也是在用Spring Boot集成其他框架进行项目开发,所以这一节,我们一起来 ...

  9. springboot整合elasticsearch_Spring Boot学习10_整合Elasticsearch

    一.Elasticsearch概念 •以 员工文档 的形式存储为例:一个文档代表一个员工数据.存储数据到 ElasticSearch 的行为叫做 索引 ,但在索引一个文档之前,需要确定将文档存储在哪里 ...

最新文章

  1. 几行代码构建全功能的对象检测模型,他是如何做到的?
  2. jQuery (DOM篇)
  3. Eclipse 3.7 安装Maven插件时报错:requires 'bundle org.slf4j.api 1.6.2' but it could not be found...
  4. 2014全国计算机二级ms office,2014计算机二级MS Office真题及答案
  5. Swift 的函数和闭包
  6. java 资深工程师必备技能
  7. JavaBean、bean、POJO
  8. halcon窗体的移动和缩放_Halcon hWindowControl 鼠标缩放平移区域模板匹配绘制
  9. 使用Git将项目上传到GitHub(Windows+Linux双教程)
  10. 利用MVC思想和php语言写网站的心得
  11. android listview 刷新 闪烁,listview刷新 怎样防止Listview刷新闪烁
  12. 华为鸿蒙内涵,“鸿蒙”两个字有何真意,还得让古人来解读
  13. iCloud账号服务器出问题了,icloud连接到服务器时出现问题(苹果id不能退出登录怎么办)...
  14. Python——Python Enhancement Proposal
  15. 阿里天池大赛实战记录之菜鸟-需求预测与分仓规划 1
  16. Google Pay 初步集成
  17. jsp学生学籍信息管理系统
  18. STL之容器Vector内存管理
  19. gulp报错The following tasks did not complete
  20. 嘎吱作响Creaks for mac(解谜游戏)中文版支持m1

热门文章

  1. safari对z-index的兼容性
  2. 电路中各种地的区别及处理
  3. 程序员初入职场,如何规划好自己的职业生涯?
  4. 【转载】各大主流IP摄像头的rtsp地址介绍
  5. 蜂窝移动网络是什么,它和 Wi-Fi 有什么区别? 蓝牙和无线有什么区别?
  6. 基于ESP32与OLED12864的主机状态监视器(MicroPython)
  7. 微信小程序项目实例——二维码生成器
  8. Python数据分析实例,利用Pandas建立流域三层蒸发和蓄满产流模型
  9. 国外计算机科学的 lab,真滴牛逼!
  10. 今天遇到一个问题,就是用pycharm运行python程序,老是会出现Python.exe已停止的对话框。