现象
发现kibana没有日志;
然后先看下kibana的管道信息,发现log管道没有写入
下一步查看logstash日志,发现了如下的错误
[2022-04-13T08:39:28,348][INFO ][log] retrying failed action with response code: 429 ({"type"=>"cluster_block_exception", "reason"=>"index [logs-2022.04.12] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];"})
[2022-04-13T08:39:28,348][INFO ][log] retrying failed action with response code: 429 ({"type"=>"cluster_block_exception", "reason"=>"index [logs-2022.04.12] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];"})
措施
通过上网查看,发现不能写入的首要原因是,所以被只读了;于是恢复了,但是半个小时又不行了;
索引去掉只读属性的设置语句如下:
PUT _all/_settings
{
"index.blocks.read_only_allow_delete": null
}
然后进一步确认原因,得到的说法是,logstash写入到elasticsearch的速度赶不上从数据库读取数据的速度,输出数据阶段未完成的情况下,logstash仍然在不断的、快速的给ES发送bulk reuqest,从而导致ES集群的网络io过载,进而产生以上的问题提示,表明elasticsearch无法继续接收数据。
于是解决方式就是两个方向
一、减小logstash的写入速度
image.png
在进去之后,找到管道设置
在自己的管道中,设置减少消费线程数量,和消费者的数量
image.png
即减慢了es的插入速度,最终es稳定了
除了上面的措施,还进一步规范项目的日志输出,控制无关日志打印,减少日志的输出总量
二、增大es集群的吞吐量
由于资金问题,这个方案没有得到落实
网友评论