应用日志与使用分析异常
应用日志停止更新或使用分析页面显示空白时,可按以下方法排查处理。
问题原因
Elasticsearch 数据盘使用率曾达到 95% 或满载,可能触发索引只读保护,导致新日志无法写入。即使当前磁盘空间已恢复,也需检查只读限制。常见报错:
disk usage exceeded flood-stage watermark
index has read-only-allow-delete block
解除只读限制
先扩容磁盘或清理无用数据,将 Elasticsearch 数据盘使用率降至 90% 以下,再执行全局解锁。
- 单机模式
- 集群模式
-
进入存储组件容器
在单机服务器上进入 sc 容器:
docker exec -it $(docker ps | grep mingdaoyun-sc | awk '{print $1}') bash -
全局解锁
在 sc 容器内解除只读限制:
curl -sS -u 'md:ESPassWD1234' -X PUT 'http://127.0.0.1:9200/*/_settings?expand_wildcards=all' \-H 'Content-Type: application/json' \-d '{"index.blocks.read_only_allow_delete": null}' -
检查解锁结果
在 sc 容器内查询只读设置:
curl -sS -u 'md:ESPassWD1234' 'http://127.0.0.1:9200/_settings/index.blocks.read_only_allow_delete?expand_wildcards=all&flat_settings=true&pretty'检查完成后,执行
exit退出容器。
在能访问 Elasticsearch 的服务器上执行,将 ES_HOST、ES_PASSWORD 替换为实际地址和 elastic 账号的密码,端口按实际配置修改。
-
全局解锁
curl -sS -u 'elastic:ES_PASSWORD' -X PUT 'http://ES_HOST:9200/*/_settings?expand_wildcards=all' \-H 'Content-Type: application/json' \-d '{"index.blocks.read_only_allow_delete": null}' -
检查解锁结果
curl -sS -u 'elastic:ES_PASSWORD' 'http://ES_HOST:9200/_settings/index.blocks.read_only_allow_delete?expand_wildcards=all&flat_settings=true&pretty'
解锁返回 "acknowledged": true,查询结果中的 index.blocks.read_only_allow_delete 已移除或为 false,表示解锁成功。
在 HAP 中执行操作,检查是否有新增应用日志。如再次出现只读限制,检查 Elasticsearch 各节点的磁盘空间。
重建 Elasticsearch 数据
如需补回历史日志,可重建 Elasticsearch 数据,由服务将 MongoDB 中保留的原始日志重新写入 Elasticsearch。
- 单机模式
- 集群模式
-
停止服务
在管理器根目录停止管理器和 HAP 服务:
bash ./service.sh stopall -
移走 Elasticsearch 数据目录
确认服务已停止后,在宿主机上重命名 Elasticsearch 数据目录:
mv /data/mingdao/script/volume/data/elasticsearch-8 /data/mingdao/script/volume/data/elasticsearch-8.bak-$(date +%Y%m%d%H%M%S) -
启动服务
在管理器根目录启动服务:
bash ./service.sh startall
-
停止 HAP 微服务
停止 HAP 微服务,避免清理期间继续写入或创建索引。
-
删除索引
在 Elasticsearch 服务器上执行,将
123456改为实际密码。从其他服务器执行时,两处127.0.0.1:9200都需替换为 Elasticsearch 的实际 IP 和端口。elastic_pwd=123456for i in $(curl -u elastic:$elastic_pwd http://127.0.0.1:9200/_cat/indices|awk '{print $3}'); docurl -XDELETE -u elastic:$elastic_pwd http://127.0.0.1:9200/$idone返回
"acknowledged": true表示对应索引已删除。此命令未过滤系统索引,如有报错或认证异常,处理后再启动 HAP 微服务。 -
启动 HAP 微服务
启动 HAP 微服务,触发数据重建。
重建耗时与数据量有关,数据较多时需等待更长时间。
- 应用日志会随数据写入逐步展示,可检查缺失时间段的日志是否恢复。
- 使用分析统计图可能存在 24 小时缓存,重建后未立即更新时,可次日再查看。