title: 问题二、ElasticSearch索引不可写
date: 2020-4-10 19:20:39
categories: elk
报错
[2020-03-30T09:44:37,949][INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({"type"=>"cluster_block_exception","reason"=>"index [test-2020.03.28] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"})
查看elasticsearch侧的日志:
{"type": "server", "timestamp": "2020-03-31T07:04:10,858+0800", "level": "INFO", "component": "o.e.c.r.a.DiskThresholdMonitor", "cluster.name": "elastic_dev", "node.name": "node-1", "cluster.uuid": "YYLlu3HoRM-rh_T4PPwjFQ", "node.id": "94avg-PQRn6LLbX10q-vJQ", "message": "low disk watermark [85%] exceeded on [bwZu4ZJFQdKskXSBfmH0tQ][node-2][/software/elasticsearch/data/nodes/0] free: 5gb[14.3%], replicas will not be assigned to this node" }
发现节点使用率超过85就停止工作,将不会再分配副本,这只是其中一个日志。
查看存储
:~/software/logstash> df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 3971848 0 3971848 0% /dev
tmpfs 3981676 80 3981596 1% /dev/shm
tmpfs 3981676 264936 3716740 7% /run
tmpfs 3981676 0 3981676 0% /sys/fs/cgroup
/dev/xvda2 37024192 31174740 4792492 87% /
/dev/mapper/vg01-lv01 92755960 82833764 5203812 95% /software
tmpfs 797196 16 797180 1% /run/user/483
tmpfs 797196 0 797196 0% /run/user/0
tmpfs 797196 0 797196 0% /run/user/1000
可以看到磁盘/software已经使用了95%
原因: 一旦在存储超过95%的磁盘中的节点上分配了一个或多个分片的任何索引,该索引将被强制进入只读模式。
用户也许会感到奇怪,第3,4列块数之和不等于第2列中的块数。这是因为默认的每个分区都留了少量空间供系统管理员使用的缘故。即使遇到普通用户 空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。清单中Use%列表示普通用户空间使用的百分比,若这一数字达到100%,分区仍然留有系 统管理员使用的空间。
- 解决方法一:扩充磁盘
- 解决方法二:删除旧索引使用postman或其他工具
查看索引,找出数据量比较大的
Get http://localhost:9200/_cat/indices?v
如上可以看出index为test-2020-03-30 的日志比较大-
删除查出的索引
Delete http://localhost:9200/esop-2020-03-30
或者使用正则同时删除30号和31号的:
Delete http://localhost:9200/test-2020-03-3*
如果删除失败,也就是应答不为true则执行以下步骤:
发现已经无法操作elasticsearch了,在操作的时候,elasticsearch已经崩溃。查询其他节点,发现有个几点磁盘使用100%,elasticsearch
运行失败。- 暂停filebeat、logstash
- 删除大文件,空出多余空间,
-
最后将索引设置为可写
post http://localhost:9200/_all/_settings {"index":{ "blocks":{ "read_only_allow_delete": "false" } } }
发现大文件都在kafka
:~/software> du -h --max-depth=1
636M ./logstash
531M ./kibana
26G ./kafka
693M ./elasticsearch
694M ./java
42M ./zookeeper
29G .
发现都积攒在kafka了。
./bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic iotcspdev
删除topic
但并没有真正删除,还要删除具体数据和zookeeper上的注册的topic
deleteall /brokers/topics/test