ELK整合:ElasticSearch定期删除过期数据
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
进入es的安装bin目录下,运行elasticSearch命令。
遇到的问题:
报错:max size virtual memory for user [elastic] is too low, increase to [unlimited]
bootstrap.system_call_filter: false
3:springboot上传日志到elasticsearch
在bin目录下新建jdbc.conf,配置输入输出位置信息。
springboot整合logstash,添加依赖,配置文件,conf文件中配置监听的端口号,写到elasticsearch中。
hosts => ["192.168.1.24:9200"]
index => "spboot-%{+YYYY.MM.dd}"
启动logstash,指定配置文件,执行命令logstash -f ./jdbc.conf
后台执行命令:nohup ./logstash -f ./jdbc.conf > ./logstash.log 2>&1 &
上传到es中的文件名格式:spboot-2019.02.26,es清除数据的时候会根据格式删除当天的索引。
springboot整合logstash,上传日志到es:
<?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>
在/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
30 23 * * 7 /opt/springboot/elasticsearch/delete-es/es-del.sh
定时任务执行log文件地址:/var/spool/mail/root 可查看执行错误信息。
ELK整合:ElasticSearch定期删除过期数据相关推荐
- 定期删除30天以前的elasticsearch的日志
脚本/scripts/delete-elk.log #!/bin/bash DATE=`date -d "1 days ago" +%Y.%m.%d` ip=`ifconfig e ...
- SpringBoot整合ElasticSearch实现多版本的兼容
前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...
- SpringBoot 整合ElasticSearch全文检索
ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java语言开发的,并作为Apa ...
- Springboot整合Elasticsearch(High-level-Client)
前言 通过学习Elasticsearch一小段时间来稍微认识了一点ES的体系架构.发现ES最大的坑就是版本兼容性问题了-在整合Springboot也不例外,但是,有一种方式能较好的解决-通过restc ...
- elasticsearch 9300端口连接不上_SpringBoot2.x系列教程54--SpringBoot整合ElasticSearch方式一...
SpringBoot2.x系列教程54--NoSQL之SpringBoot整合ElasticSearch方式一 作者:一一哥 一. Elastic Search 1. Elastic Search简介 ...
- 【转】删除过期数据通用程序
在项目开发中如果有自定义日志性质的数据库表,通常会写一个专门的程序来删除过期数据,同时为了定期执行还要给这个程序定义JOB.如果很多这样的表就要写好多程序,定义好多JOB,非常乱.本文就是通过把需要删 ...
- 企业日志分析ELK(Logstash+Elasticsearch+Kibana)介绍及搭建
目录 一.ELK概述 1.ELK日志分析系统 2.ELK中日志处理步骤 二.Elasticsearch介绍 1.Elasticsearch的基础核心概念 2.分片和副本 三.LogStash概述 1. ...
- Elasticsearch实战篇——Spring Boot整合ElasticSearch
2019独角兽企业重金招聘Python工程师标准>>> 当前Spring Boot很是流行,包括我自己,也是在用Spring Boot集成其他框架进行项目开发,所以这一节,我们一起来 ...
- springboot整合elasticsearch_Spring Boot学习10_整合Elasticsearch
一.Elasticsearch概念 •以 员工文档 的形式存储为例:一个文档代表一个员工数据.存储数据到 ElasticSearch 的行为叫做 索引 ,但在索引一个文档之前,需要确定将文档存储在哪里 ...
最新文章
- 几行代码构建全功能的对象检测模型,他是如何做到的?
- jQuery (DOM篇)
- Eclipse 3.7 安装Maven插件时报错:requires 'bundle org.slf4j.api 1.6.2' but it could not be found...
- 2014全国计算机二级ms office,2014计算机二级MS Office真题及答案
- Swift 的函数和闭包
- java 资深工程师必备技能
- JavaBean、bean、POJO
- halcon窗体的移动和缩放_Halcon hWindowControl 鼠标缩放平移区域模板匹配绘制
- 使用Git将项目上传到GitHub(Windows+Linux双教程)
- 利用MVC思想和php语言写网站的心得
- android listview 刷新 闪烁,listview刷新 怎样防止Listview刷新闪烁
- 华为鸿蒙内涵,“鸿蒙”两个字有何真意,还得让古人来解读
- iCloud账号服务器出问题了,icloud连接到服务器时出现问题(苹果id不能退出登录怎么办)...
- Python——Python Enhancement Proposal
- 阿里天池大赛实战记录之菜鸟-需求预测与分仓规划 1
- Google Pay 初步集成
- jsp学生学籍信息管理系统
- STL之容器Vector内存管理
- gulp报错The following tasks did not complete
- 嘎吱作响Creaks for mac(解谜游戏)中文版支持m1