ELK批量删除索引 及 相关操作命令 - 运维小结
线上部署了ELK+Redis日志分析平台环境, 随着各类日志数据源源不断的收集, 发现过了一段时间之后, ELK查看会原来越慢, 重启elasticsearch服务器节点之前同步时间也会很长, 这是因为长期以来ELK收集的索引没有删除引起的! 以下是ELK批量删除索引的操作记录:
1) 访问head插件(http://10.0.8.44:9200/_plugin/head/) 或者在elasticsearch节点上使用下面命令查看elk的索引(10.0.8.44是elk集群中的任意一个节点)
[root@elk-node01 ~]# curl -XGET 'http://10.0.8.44:9200/_cat/shards' 删除索引的命令
[root@elk-node01 ~]# curl -XDELETE http://10.0.8.44:9200/索引名 还可以根据需求,过滤出想要查看的索引,比如查看2018.08.02并且是10.0.52.22的索引
[root@elk-node01 ~]# curl -XGET 'http://10.0.8.44:9200/_cat/shards' |grep "2018\.08\.02" |grep "10.0.52.22"|awk '{print $1}'
2) 可以先将要删除的索引查看出来存到临时文件里, 然后进行批量删除 (索引多的话, 删除操作会耗费一点时间)
比如批量删除所有的索引(但不会删除kibana.yml文件中配置的kibana.index索引,就是那些带.的索引) (cat /root/elk-index.tmp|wc -l 可以查看要删除的索引有多少个)
[root@elk-node01 ~]# curl -XGET 'http://10.0.8.44:9200/_cat/shards'|awk '{print $1}'|uniq > /root/elk-index.tmp
[root@elk-node01 ~]# for i in $(cat /root/elk-index.tmp);do curl -XDELETE http://10.0.8.44:9200/$i;done
3) 为了方便可以在计划任务里面加定时任务删除30天之前的日志索引 (这里线上elk的索引名中带当天的日期, 日期格式为%Y.%m.%d. 具体看自己的索引命名规则)
[root@elk-node01 ~]# vim /home/scripts/del_elasticseatch_index.sh
#!/bin/bash
#The index 30 days ago
curl -XGET 'http://10.0.8.44:9200/_cat/shards' |awk '{print $1}' |grep `date -d "30 days ago" +%Y.%m.%d` |uniq > /tmp/index_name.tmp for index_name in `cat /tmp/index_name.tmp`
do
curl -XDELETE http://10.0.8.44:9200/$index_name
echo "${index_name} delete success" >> /home/scripts/del_elasticseatch_index.log
done [root@elk-node01 ~]# crontab -l
0 3 * * * bash /home/scripts/del_elasticseatch_index.sh
上述脚本执行之后, 访问http://10.0.8.44:9200/_plugin/head/ ,就会发现,ELK索引已被批量删除了.
====================================ES集群节点切换=======================================
在ELK集群中任意节点上查看集群状态(10.0.8.44是任意一个节点地址).
[root@elk-node01 ~]# curl -XGET 'http://10.0.8.44:9200/_cat/health?v'
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1542781206 14:20:06 kevin-elk green 3 3 6 3 0 0 0 0 - 100.0% ELK集群健康检查的三种状态:
green: 每个索引的primary shard和replica shard都是active状态的
yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态
red: 不是所有索引的primary shard都是active状态的,部分索引有数据丢失了 其中 yellow 表示所有主分片可用,但不是所有副本分片都可用,最常见的情景是单节点时,由于es默认是有1个副本,主分片和副本不能在同一个节点上,所以副本就是未分配unassigned 分配分片时可能遇到的坑,需要注意的地方:
1) 分配副本时必须要带参数"allow_primary" : true, 不然会报错
2) 当集群中es版本不同时,如果这个未分配的分片是高版本生成的,不能分配到低版本节点上,反过来低版本的分片可以分配给高版本,如果遇到了,只要升级低版本节点的ES版本即可 *符号表示该节点为当前主节点.
[root@elk-node01 ~]# curl -XGET 'http://10.0.8.45:9200/_cat/nodes?v'
host ip heap.percent ram.percent load node.role master name
10.0.8.44 10.0.8.44 53 22 0.03 d m elk-node01.kevinbo.cn
10.0.8.47 10.0.8.47 39 54 0.03 d m elk-node03.kevinbo.cn
10.0.8.45 10.0.8.45 42 20 0.00 d * elk-node02.kevinbo.cn 如果当上面的主节点(10.0.8.45)出现故障,比如宕机,es服务挂掉或重启, 则主节点会转移到其他的两个从节点中的一个上面.
在主节点转移过程中, 分片也会转移过去, 如果分片比较多, 数据量比较大, 则需要耗费一定的时间, 在此过程中, elk集群的状态是yellow.
具体表现:
[root@elk-node01 plugins]# curl -XGET 'http://10.0.8.44:9200/_cat/health?v'
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1542769559 11:05:59 kevin-elk yellow 3 3 2560 1898 0 4 1232 8 829.4ms 67.4% [root@elk-node01 plugins]# curl -XGET 'http://10.0.8.44:9200/_cat/health?v'
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1542769632 11:07:12 kevin-elk yellow 3 3 3074 1898 0 4 718 0 - 81.0% [root@elk-node01 plugins]# curl -XGET 'http://10.0.8.44:9200/_cat/health?v'
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1542769637 11:07:17 kevin-elk yellow 3 3 3111 1898 0 4 681 4 221ms 82.0% ...............
...............
...............
[root@elk-node01 plugins]# curl -XGET 'http://10.0.8.44:9200/_cat/health?v'
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1542769761 11:09:21 kevin-elk green 3 3 3796 1898 0 0 0 0 - 100.0% 如上会发现, 在主节点发生变动, 分片转移过程中, 查看elk集群状态, shards分片会不断增加, unassign会不断减少,直至unassign减到0时, 表明分片已经完全转移到新的
主节点上, 则此时查看elk的健康状态就是green了. 在分片转移过程中, 访问http://10.0.8.44:9200/_plugin/head/ 插件界面, 也会看到yellow状态值,并且后面的分片数会不断增加中.
====================================ES集群相关维护命令====================================
1) 查询elasticsearch集群信息(下面命令在任意一个节点机器上操作都可以)
[root@elk-node01 ~]# curl -XGET 'http://10.0.8.45:9200/_cat/nodes'
10.0.8.44 10.0.8.44 54 22 0.00 d m elk-node01.kevinbo.cn
10.0.8.47 10.0.8.47 38 54 0.00 d m elk-node03.kevinbo.cn
10.0.8.45 10.0.8.45 39 20 0.00 d * elk-node02.kevinbo.cn [root@elk-node01 ~]# curl -XGET 'http://10.0.8.45:9200/_cat/nodes?v'
host ip heap.percent ram.percent load node.role master name
10.0.8.44 10.0.8.44 54 22 0.00 d m elk-node01.kevinbo.cn
10.0.8.47 10.0.8.47 38 54 0.00 d m elk-node03.kevinbo.cn
10.0.8.45 10.0.8.45 39 20 0.00 d * elk-node02.kevinbo.cn 2) 查询集群中的master
[root@elk-node01 ~]# curl -XGET 'http://10.0.8.45:9200/_cluster/state/master_node?pretty'
{
"cluster_name" : "kevin-elk",
"master_node" : "1dL42NBYSL6mG9pg_ZUg-Q"
} 或者
[root@elk-node01 ~]# curl -XGET 'http://10.0.8.45:9200/_cat/master?v'
id host ip node
1dL42NBYSL6mG9pg_ZUg-Q 10.0.8.45 10.0.8.45 elk-node02.kevinbo.cn 3) 查询集群状态方法
[root@elk-node01 ~]# curl -XGET 'http://10.0.8.45:9200/_cluster/state/nodes?pretty'
{
"cluster_name" : "kevin-elk",
"nodes" : {
"3Nw9dTQ5Qkmb-HW18kojeA" : {
"name" : "elk-node01.kevinbo.cn",
"transport_address" : "10.0.8.44:9300",
"attributes" : { }
},
"wKrnuaSaQYic_r4jKIzPWQ" : {
"name" : "elk-node03.kevinbo.cn",
"transport_address" : "10.0.8.47:9300",
"attributes" : { }
},
"1dL42NBYSL6mG9pg_ZUg-Q" : {
"name" : "elk-node02.kevinbo.cn",
"transport_address" : "10.0.8.45:9300",
"attributes" : { }
}
}
} 4) 查询集群的健康状态
[root@elk-node01 ~]# curl -XGET 'http://10.0.8.44:9200/_cat/health?v'
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1542784475 15:14:35 kevin-elk green 3 3 6 3 0 0 0 0 - 100.0% 或者
[root@elk-node01 ~]# curl -XGET 'http://10.0.8.44:9200/_cluster/health?pretty'
{
"cluster_name" : "kevin-elk",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 3,
"active_shards" : 6,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
} 5) 查询集群索引
[root@elk-node01 ~]# curl -XGET "http://10.0.8.44:9200/_cat/shards"
.cx-kibana 0 r STARTED 1 3.1kb 10.0.8.44 elk-node01.kevinbo.cn
.cx-kibana 0 p STARTED 1 3.1kb 10.0.8.45 elk-node02.kevinbo.cn
.ops-kibana 0 p STARTED 1 3.1kb 10.0.8.47 elk-node03.kevinbo.cn
.ops-kibana 0 r STARTED 1 3.1kb 10.0.8.45 elk-node02.kevinbo.cn
.nc-kibana 0 p STARTED 1 3.1kb 10.0.8.44 elk-node01.kevinbo.cn
.nc-kibana 0 r STARTED 1 3.1kb 10.0.8.47 elk-node03.kevinbo.cn 6) 查询集群索引状态
[root@elk-node01 ~]# curl -XGET "http://10.0.8.44:9200/_cat/indices?v"
health status index pri rep docs.count docs.deleted store.size pri.store.size
green open .nc-kibana 1 1 1 0 6.3kb 3.1kb
green open .cx-kibana 1 1 1 0 6.3kb 3.1kb
green open .ops-kibana 1 1 1 0 6.3kb 3.1kb 7) 关闭或打开某个索引
比如关闭.ops-kibana索引
[root@elk-node01 ~]# curl -XPOST "http://10.0.8.44:9200/.ops-kibana/_close"
{"acknowledged":true} [root@elk-node01 ~]# curl -XGET "http://10.0.8.44:9200/_cat/indices?v"
health status index pri rep docs.count docs.deleted store.size pri.store.size
green open .nc-kibana 1 1 1 0 6.3kb 3.1kb
green open .cx-kibana 1 1 1 0 6.3kb 3.1kb
close .ops-kibana 再次打开.ops-kibana索引 [root@elk-node01 ~]# curl -XPOST "http://10.0.8.44:9200/.ops-kibana/_open"
{"acknowledged":true} [root@elk-node01 ~]# curl -XGET "http://10.0.8.44:9200/_cat/indices?v"
health status index pri rep docs.count docs.deleted store.size pri.store.size
green open .nc-kibana 1 1 1 0 6.3kb 3.1kb
green open .cx-kibana 1 1 1 0 6.3kb 3.1kb
green open .ops-kibana 1 1 1 0 6.3kb 3.1kb 8) 删除索引
# curl -XDELETE http://10.0.8.44:9200/索引名
ELK批量删除索引 及 相关操作命令 - 运维小结的更多相关文章
- ELK批量删除索引
一.存在问题 用了一段时间elk发现如果索引长时间不删除,elk会越来越慢,重启elasticsearch服务器节点之前同步时间也会很长 二.解决方法(定期删除索引) 1.在elasticsearch ...
- 自动化批量管理工具salt-ssh - 运维小结
根据以往运维工作中操作经验来说,当管理上百台上千台服务器时,选择一款批量操作工具是及其有必要的.早期习惯于在ssh信任关系的前提下做for;do;done循环语句的批量操作,后来逐渐趋于使用批量工具操 ...
- Nginx/Apache之伪静态设置 - 运维小结
一.什么是伪静态伪静态即是网站本身是动态网页如.php..asp..aspx等格式动态网页有时这类动态网页还跟"?"加参数来读取数据库内不同资料,伪静态就是做url重写操作(即re ...
- Mysql基于GTID复制模式-运维小结 (完整篇)
先来看mysql5.6主从同步操作时遇到的一个报错:mysql> change master to master_host='192.168.10.59',master_user='repli' ...
- Docker集群管理工具 - Kubernetes 部署记录 (运维小结)
一. Kubernetes 介绍 Kubernetes是一个全新的基于容器技术的分布式架构领先方案, 它是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernete ...
- Heartbeat基础知识-运维小结
在日常的集群系统架构中,一般用到Heartbeat的主要就2种:1)高可用(High Availability)HA集群, 使用Heartbeat实现,也称为”双机热备”, “双机互备”, “双机”: ...
- Haproxy 重定向跳转设置 - 运维小结
前面已经详细介绍了Haproxy基础知识 , 今天这里再赘述下Haproxy的重定向跳转的设置. haproxy利用acl来实现haproxy动静分离,然而在许多运维应用环境中,可能需要将访问的站点 ...
- Nginx下关于缓存控制字段cache-control的配置说明 - 运维小结
HTTP协议的Cache -Control指定请求和响应遵循的缓存机制.在请求消息或响应消息中设置 Cache-Control并不会影响另一个消息处理过程中的缓存处理过程.请求时的缓存指令包括: no ...
- DOS 命令批量删除文件及相关批处理命令详解
del X:\*.* /f /s /q /a 递归强制静默删除X盘及其所有子目录下的所有文件 /f 表示强制删除文件 /s表示子目录都要删除该文件 /q表示无声,不提示 /a根据属性选择要删除的文件 ...
随机推荐
- 第75讲:模式匹配下的For循环
今天学习了模式匹配下的for循环内容.让我们从代码实战角度出发. for(i<-List(1,2,3,4,5)) println(i)//实际上调用的是foreach for(in ...
- 3、利用GDB进行程序调试
本文将用一个实际例子讲解如何通过GDB进行程序调试. 首先,我们需要理解的是GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,其产生和调试的目的是让调试者知道,程序在执行时内部发生了什么 ...
- request.getScheme() 使用方法
今天在看代码时,发现程序使用了 request.getScheme() .不明白是什么意思,查了一下.结果整理如下: 1.request.getScheme() 返回当前链接使用的协议:一般应用返回h ...
- 最大流Dinic算法
嘿嘿嘿,时隔不久又见到了DInic,再次回顾一下吧 不过这次我倒是不想深究,而是想多做一些题,因为这几次比赛下来,算法不是重点,重点是题目如何转化,算法如何应用,这也是比赛为什么让你带着板子的原因吧, ...
- AngularJS $scope 继承性 作用 生命周期
一.基本概念 作用域是一个指向应用模型的对象,相当于MVVM中的ViewModel,能绑定数据(属性)和行为(方法),能监控表达式和传递事件,是实现双向绑定的基础,是应用在 HTML (视图) 和 J ...
- [NewCode 6] 重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- 背水一战 Windows 10 (56) - 控件(集合类): ListViewBase - 基础知识, 拖动项
[源码下载] 背水一战 Windows 10 (56) - 控件(集合类): ListViewBase - 基础知识, 拖动项 作者:webabcd 介绍背水一战 Windows 10 之 控件(集合 ...
- 【转】C#如何创建泛型类T的实例
原文地址:https://www.cnblogs.com/lxhbky/p/6020612.html 最近在学历基类的写法时,遇到了一个问题:如何怎么创建一个泛型类T的实例呢? 废话不多说了, ...
- GitLab问题小结
1.内存消耗太大 (1)公司使用gitlab后,发现服务器内存居高不下,使用top命令查看内存消耗,发现服务器上git将近消耗一半内存资源.而且很奇怪的是竟然开启了32个进程.后经查资料,原来这跟gi ...
- ffplay源码分析5-图像格式转换
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10311376.html ffplay是FFmpeg工程自带的简单播放器,使用FFmpeg ...