使用elkstack作为日志分析工具,采集nginx访问日志,项目log日志,心跳检测日志,服务器度量日志等,每天产生大量索引(Index),占用磁盘空间。对于过期数据需要进行删除来释放磁盘空间。
<!-- more -->
使用官网_delete_by_query进行删除
curl -u 用户名:密码 -H'Content-Type:application/json' -d'{
"query": {
"range": {
"@timestamp": {
"lt": "now-7d",
"format": "epoch_millis"
}
}
}
}
' -XPOST "http://127.0.0.1:9200/*-*/_delete_by_query?pretty"
解释
-u
是格式为userName:password
,使用Basic Auth
进行登录。如果elasticsearch
没有使用类似x-pack
进行安全登录,则不需要加-u参数
-H
是指定文档类型是json格式
-XPOST
是指定用POST
方式请求
-d
是指定body
内容
{
"query": {
"range": { //范围
"@timestamp": {//时间字段
"lt": "now-7d",//lt是小于(<),lte是小于等于(<=),gt是大于(>),gte是大于等于(>=),now-7d是当前时间减7天
"format": "epoch_millis"
}
}
}
}
定时删除
$ crontab -e
* 0 * * * /usr/bin/curl -u username:password -H'Content-Type:application/json' -d'{"query":{"range":{"@timestamp":{"lt":"now-7d","format":"epoch_millis"}}}}' -XPOST "http://127.0.0.1:9200/*-*/_delete_by_query?pretty" > /tmp/elk_clean.txt
每天0点删除超过7天的无效索引
优点:
-
不依赖第三方插件或者代码
-
简单易理解
-
不需要指定索引名称可用
*
通配符删除
缺点:
- 效率低
使用sh脚本删除
在stackoverflow看到一个帖子 Removing old indices in elasticsearch#answer-39746705
#!/bin/bash
searchIndex=logstash-monitor
elastic_url=logging.core.k94.kvk.nl
elastic_port=9200
date2stamp () {
date --utc --date "$1" +%s
}
dateDiff (){
case $1 in
-s) sec=1; shift;;
-m) sec=60; shift;;
-h) sec=3600; shift;;
-d) sec=86400; shift;;
*) sec=86400;;
esac
dte1=$(date2stamp $1)
dte2=$(date2stamp $2)
diffSec=$((dte2-dte1))
if ((diffSec < 0)); then abs=-1; else abs=1; fi
echo $((diffSec/sec*abs))
}
for index in $(curl -s "${elastic_url}:${elastic_port}/_cat/indices?v" | grep -E " ${searchIndex}-20[0-9][0-9]\.[0-1][0-9]\.[0-3][0-9]" | awk '{ print $3 }'); do
date=$(echo ${index: -10} | sed 's/\./-/g')
cond=$(date +%Y-%m-%d)
diff=$(dateDiff -d $date $cond)
echo -n "${index} (${diff})"
if [ $diff -gt 1 ]; then
echo " / DELETE"
# curl -XDELETE "${elastic_url}:${elastic_port}/${index}?pretty"
else
echo ""
fi
done
使用了 _cat/indices
api。
使用 curator
支持windowszip,msi,和linuxapt,yum
Curator Reference github-curator
安装
配置
参考 stackoverflow.com/questions/3…
1.config文件
---
# Remember, leave a key empty if there is no value. None will be a string,
# not a Python "NoneType"
client:
hosts:
* 127.0.0.1
port: 9200
url_prefix:
use_ssl: False
certificate:
client_cert:
client_key:
ssl_no_validate: False
http_auth: username:password
timeout:
master_only: True
logging:
loglevel: INFO
logfile:
logformat: default
#blacklist: ['elasticsearch', 'urllib3']
2.action文件
---
actions:
1:
action: delete_indices
description: >-
Delete indices older than 7 days (based on index name), for logstash-
prefixed indices. Ignore the error if the filter does not result in an
actionable list of indices (ignore_empty_list) and exit cleanly.
options:
ignore_empty_list: True
timeout_override:
continue_if_exception: False
disable_action: False
filters:
* filtertype: pattern
kind: prefix
value: logstash-
exclude:
* filtertype: age
source: name
direction: older
timestring: '%Y.%m.%d'
unit: days
unit_count: 7
exclude:
这里是用index-'%Y.%m.%d'
进行匹配,如果是按照索引创建日期来删除,source: creation_date
参见 www.elastic.co/guide/en/el…
3.运行
curator --config /path/config_file.yml /path/action_file.yml
相关推荐
* 设计阶段调优:基于日期模板创建索引、使用别名进行索引管理、每天凌晨定时对索引做force_merge操作、采取冷热分离机制等。 * 写入调优:写入前副本数设置为0、写入前关闭refresh_interval设置为-1、写入过程中...
- 通过调整Elasticsearch的索引设置,如分片数、副本数、刷新间隔等,以优化查询性能和存储需求。 5. **监控和故障恢复**: - 需要监控数据导入的进度和错误,确保数据一致性。一旦出现错误,应有相应的策略进行...
课时04:elasticsearch5.0集群安装 课时05:elasticsearch head插件讲解 课时06:elasticsearch kibana安装与使用 课时07:ik分词器插件的编译安装 课时08:ik分词器插件从mysql中定时获取扩展词停顿词 课时09:ik...
5. **性能优化**:为了提高效率,elasticsearch-dump 支持批量操作,可以一次处理多个文档,减少网络通信次数。 6. **安全认证**:如果 Elasticsearch 集群配置了安全认证,如 Basic Auth 或者 Token,elastic...
例如,你可能提到你们的集群有13个节点,根据业务不同有20多个索引,每个索引按照日期分为多个部分,每天新增20多个分片,每个通道每天处理1亿多条数据,索引大小控制在150GB以内。这样的描述可以展示你对实际部署和...
总结, 本文详细介绍了使用 Java API 实现与 Elasticsearch 集群交互的方法, 包括连接集群、定义索引字段、索引数据、删除数据、搜索以及数据同步等方面的内容。这些技术对于构建高效稳定的搜索系统至关重要。
倒排索引是Elasticsearch高效检索的基础,它是一种从词汇表出发,记录每个词在哪些文档中出现过的数据结构。倒排索引由词典和倒排列表组成,FST(有限状态转换器)作为其底层实现,具有存储空间小和查询速度快的优点...
Elasticsearch提供了`BulkProcessor`服务,它能帮助你在后台处理批量索引请求。你可以设置批量操作的大小、延迟和失败重试策略,这样在处理大量数据时,可以避免频繁的网络交互,提升性能。 在实际应用中,你可能还...
以下是对面试中常见Elasticsearch问题的详细解答,涵盖基础概念、集群架构、索引优化、查询调优等多个方面。 1. Elasticsearch集群架构与调优: - 集群架构的设计应根据实际业务需求,如描述中的13个节点,20多个...
### Elasticsearch 面试题解析 #### 1. Elasticsearch 集群架构与调优手段 - **面试官意图**:了解应聘者在其所在公司的 Elasticsearch 使用情况、遇到的问题及其解决方法,特别是是否有处理大规模数据的经验。 -...
Elasticsearch(ES)是一个基于Lucene的分布式搜索和分析引擎,主要特点是开源、高扩展性和实时性。作为Elastic Stack的关键组件,ES利用Java开发并遵循Apache许可,支持多种编程语言,包括Java、.NET、PHP、Python...
标题 "flume1.6+es5.5.1" 暗示我们要讨论的是Apache Flume 1.6版本与Elasticsearch (ES) 5.5.1版本的集成。Flume是Apache Hadoop项目的一个子项目,主要用于收集、聚合和移动大量日志数据。而Elasticsearch是一种...
在实际应用中,WebMagic抓取的数据会实时或定时地导入到Elasticsearch中。通常,我们可以设置一个后台任务,当WebMagic爬虫抓取到新的房源信息后,通过Elasticsearch的Java API进行数据更新或插入。这样,用户可以...
Elasticsearch(ES)是一种流行的分布式搜索引擎和分析引擎,它以高效、实时的特性而闻名。本文主要探讨了Elasticsearch的写入、读取、检索数据的底层原理以及性能调优策略。 **Elasticsearch 写入数据流程** 1. ...
经过处理后的数据会被发送到 Elasticsearch 进行存储和创建索引。最后,Kibana 提供前端界面来进行数据的搜索和可视化展示,它通过调用 Elasticsearch 的接口来实现数据的可视化。 #### 二、Logstash 的配置方法 *...
在大数据营销系统中,ElasticSearch可以用于快速索引和检索海量用户行为数据,实现精准营销。 三、Vue.js的运用 Vue.js是一款轻量级的前端JavaScript框架,以其简单易学、灵活可扩展的特点深受开发者喜爱。Vue.js...
- **批量操作**:使用 `updateIndex` 或 `deleteIndex` 方法对整个索引进行更新或删除。 - **分页**:在搜索结果中,可以使用 `->take()` 和 `->skip()` 方法实现分页。 ### 9. 性能优化 - **映射设置**:根据数据...