跳到主要内容

应用日志与使用分析异常

应用日志停止更新或使用分析页面显示空白时,可按以下方法排查处理。

问题原因​

Elasticsearch 数据盘使用率曾达到 95% 或满载,可能触发索引只读保护,导致新日志无法写入。即使当前磁盘空间已恢复,也需检查只读限制。常见报错:

disk usage exceeded flood-stage watermark
index has read-only-allow-delete block

解除只读限制​

先扩容磁盘或清理无用数据,将 Elasticsearch 数据盘使用率降至 90% 以下,再执行全局解锁。

  1. 进入存储组件容器

    在单机服务器上进入 sc 容器:

    docker exec -it $(docker ps | grep mingdaoyun-sc | awk '{print $1}') bash
  2. 全局解锁

    在 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}'
  3. 检查解锁结果

    在 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 退出容器。

解锁返回 "acknowledged": true,查询结果中的 index.blocks.read_only_allow_delete 已移除或为 false,表示解锁成功。

在 HAP 中执行操作,检查是否有新增应用日志。如再次出现只读限制,检查 Elasticsearch 各节点的磁盘空间。

重建 Elasticsearch 数据​

如需补回历史日志,可重建 Elasticsearch 数据,由服务将 MongoDB 中保留的原始日志重新写入 Elasticsearch。

  1. 停止服务

    在管理器根目录停止管理器和 HAP 服务:

    bash ./service.sh stopall
  2. 移走 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)
  3. 启动服务

    在管理器根目录启动服务:

    bash ./service.sh startall

重建耗时与数据量有关,数据较多时需等待更长时间。

  • 应用日志会随数据写入逐步展示,可检查缺失时间段的日志是否恢复。
  • 使用分析统计图可能存在 24 小时缓存,重建后未立即更新时,可次日再查看。