线上部署了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批量删除索引 及 相关操作命令 - 运维小结的更多相关文章

  1. ELK批量删除索引

    一.存在问题 用了一段时间elk发现如果索引长时间不删除,elk会越来越慢,重启elasticsearch服务器节点之前同步时间也会很长 二.解决方法(定期删除索引) 1.在elasticsearch ...

  2. 自动化批量管理工具salt-ssh - 运维小结

    根据以往运维工作中操作经验来说,当管理上百台上千台服务器时,选择一款批量操作工具是及其有必要的.早期习惯于在ssh信任关系的前提下做for;do;done循环语句的批量操作,后来逐渐趋于使用批量工具操 ...

  3. Nginx/Apache之伪静态设置 - 运维小结

    一.什么是伪静态伪静态即是网站本身是动态网页如.php..asp..aspx等格式动态网页有时这类动态网页还跟"?"加参数来读取数据库内不同资料,伪静态就是做url重写操作(即re ...

  4. Mysql基于GTID复制模式-运维小结 (完整篇)

    先来看mysql5.6主从同步操作时遇到的一个报错:mysql> change master to master_host='192.168.10.59',master_user='repli' ...

  5. Docker集群管理工具 - Kubernetes 部署记录 (运维小结)

    一.  Kubernetes 介绍 Kubernetes是一个全新的基于容器技术的分布式架构领先方案, 它是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernete ...

  6. Heartbeat基础知识-运维小结

    在日常的集群系统架构中,一般用到Heartbeat的主要就2种:1)高可用(High Availability)HA集群, 使用Heartbeat实现,也称为”双机热备”, “双机互备”, “双机”: ...

  7. Haproxy 重定向跳转设置 - 运维小结

    前面已经详细介绍了Haproxy基础知识 , 今天这里再赘述下Haproxy的重定向跳转的设置.  haproxy利用acl来实现haproxy动静分离,然而在许多运维应用环境中,可能需要将访问的站点 ...

  8. Nginx下关于缓存控制字段cache-control的配置说明 - 运维小结

    HTTP协议的Cache -Control指定请求和响应遵循的缓存机制.在请求消息或响应消息中设置 Cache-Control并不会影响另一个消息处理过程中的缓存处理过程.请求时的缓存指令包括: no ...

  9. DOS 命令批量删除文件及相关批处理命令详解

    del X:\*.* /f /s /q /a 递归强制静默删除X盘及其所有子目录下的所有文件 /f 表示强制删除文件 /s表示子目录都要删除该文件 /q表示无声,不提示 /a根据属性选择要删除的文件 ...

随机推荐

  1. C++ 中的continue理解

    continue的在循环中的作用: 1. 跳过当前循环,但是还需要执行自增条件, 如下程序:当i == 3时,执行i++, 即if判定{}执行完毕,则i==4, 然后 for最后一条语句i++, 然后 ...

  2. poj 1523Tarjan算法的含义——求取割点可以分出的连通分量的个数

    poj 1523Tarjan算法的含义——求取割点可以分出的连通分量的个数 题目大意:如题目所示 给你一些关系图——连通图,想要问你有没有个节点,损坏后,可以生成几个互相独立的网络(也就是连通分量), ...

  3. uniGUI 通过SessionList操作另外的登录用户

    参照bbs,写了这个方法,检查是否有同名用户已经登录:procedure TUniMainModule.CheckSameUser(aUserLoginCode: string);var  ASess ...

  4. caffe 每层结构

    如何在Caffe中配置每一个层的结构 最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结. 1. Vision ...

  5. MySql and Oracle Data Type Mappings

    the default settings used by SQL Developer to convert data types from MySQL to Oracle. SQL Developer ...

  6. .Net Core Web应用发布至IIS后报“An error occurred while starting the application”错误

    An error occurred while starting the application. .NET Core X64 v4.1.1.0    |   Microsoft.AspNetCore ...

  7. .net core 与ELK(3)安装Kibana

    1.去产品官网下载https://www.elastic.co/downloads/kibana 对应的tar.gz的压缩包,放到/usr/local/src目录 2.解压 -linux-x86_64 ...

  8. C# 动态创建数据库三(MySQL)

    前面有说明使用EF动态新建数据库与表,数据库使用的是SQL SERVER2008的,在使用MYSQL的时候还是有所不同 一.添加 EntityFramework.dll ,System.Data.En ...

  9. MVC+Nhibernate+spring.net(一)

    所用数据库是我之前所写的Nhibernate入门篇的数据库https://www.cnblogs.com/pandorabox/p/PandoraBox.html 第一步:创建一个mvc项目 第二步: ...

  10. 知物由学 | 见招拆招,Android应用破解及防护秘籍

    本文来自网易云社区. “知物由学”是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道.“知物由学”希 ...