iPaaS文档库 iPaaS文档库
00 概述
01 产品安装指南
02 快速入门指南
03 Studio使用指南
04 iPaaS使用指南
05 高级配置指南
06 接口服务说明
07 升级&数据迁移指南
08 产品集成指南
09 FAQ
10 iPaaS上线指南
运维指南
  • ES中无数据或数据不完整问题排查与解决方案
  • 问题现象
  • 原因分析及解决方案
  • 1. 管理门户-配置管理-日志索引管理节点管理正常、索引状态非green;
  • 2. 关闭了 monitor-logwriter.xml 中的写日志配置
  • 3. Elasticsearch 磁盘满、处于只读状态
  • 4. 日志过大,ES 解析卡住
  • 5. 无接口调用,没有索引生成
  • 6. Elasticsearch 账号、密码不正确或证书损坏

# ES中无数据或数据不完整问题排查与解决方案

# 问题现象

运维门户监控无数据或日志记录不完整的情况,导致无法通过日志进行业务追踪、故障定位及数据分析。具体表现为:

  • 调用日志页面无数据
  • 综合监控页面无数据
  • 管理门户-配置管理-日志索引管理节点管理正常、索引状态非green;
  • 日志索引未生成或索引数据缺失;
  • 日志文件/{Server安装目录}/server/EOS/_srv/work/esbmonitor下文件堆积,解析停滞。

# 原因分析及解决方案

以上现象是由ES中无数据或数据错误导致,遇到此类问题,请先查ES中数据是否存在或者完整,排查方案如下:

  • 接口调用工具访问 ES索引查询数据:请求示例URL:https://ESiP:port/primeton_esb_log_2026xx/_search;
  • 请求报文:es查询数据请求报文.json,查询时可修改时间段,时间段字段是$.query.bool.filter[2].range['0.timestamp'];
  • ES中单笔数据是以数据组形式存储,查出几笔就有几组这样的数据存在:
    • 接口只发布到ESBServer上,正常的数据应该包含0-5共7条数据(0编号的有2条记录,分别是0.timestamp、0.operationCode,其余1-5编号都是timestamp);
    • 接口只发布到APIGateway,正常的数据应该包含0、6-9共6条数据;
    • 同时发布ESBServer和APIGateway,会有0-9共11条数据。

以下是接口只发布到ESBServer上查询ES返回正常数据的示例,一共有2组数据,每组数据有0-5共7条记录,调用见下图,详细响应报文参考附件:es查询数据响应报文.json;

  • 如果排查调用返回无数据(响应数据的$.hits.total.value的值是0),或者单条数据中记录不是7条(缺少其中几条记录),则说明ES中记录的数据异常。

查到ES中数据有问题,按照以下点排查处理导致ES数据异常的问题,方案如下:

# 1. 管理门户-配置管理-日志索引管理节点管理正常、索引状态非green;

分析:ES本身启动、或者分片有问题,导致索引状态异常;

解决方案:检查ES的日志,查看启动运行日志,根据日志的具体情况分析,重启尝试修复索引;

验证:登录Portal在管理门户-配置管理-日志索引管理-索引管理中查看索引状态。

# 2. 关闭了 monitor-logwriter.xml 中的写日志配置

分析:esb-monitor-logwriter.xml 是日志采集的核心配置文件,其中定义了日志输出的目的地、格式、过滤规则等。若其中的写日志配置被关闭(如 <logwriter enable> 节点是"false"),则日志数据无法生成。

解决方案:打开 {Server安装目录}/server/EOS/_srv/config/esb-monitor-logwriter.xml,确认 <logwriter enable>="true" ,且相关属性正确。

验证:重启日志采集服务,观察日志索引是否开始生成。

# 3. Elasticsearch 磁盘满、处于只读状态

分析:Elasticsearch 在磁盘使用率达到阈值(默认 95%)时会自动将索引设置为 read_only_allow_delete 模式,此时无法写入新数据。日志写入请求被拒绝,但上游日志生产者可能仍持续发送,造成日志积压或丢失。

解决方案:

    1. 清理 Elasticsearch 数据目录中无用的索引(如使用 Curator 或 ILM 策略删除过期索引)。
    1. 扩容磁盘或迁移数据。
    1. 执行 API 解除只读状态:
    PUT _all/_settings
    {
      "index.blocks.read_only_allow_delete": null
    }
    

验证:确认磁盘使用率降至 90% 以下,日志写入恢复正常。

# 4. 日志过大,ES 解析卡住

分析:当日志单条体积过大(如包含超长报文、文件等)或日志量突增时,Elasticsearch 的 JSON 解析线程可能长时间阻塞,甚至触发 OutOfMemoryError。解析管道堵塞后,待解析的文件在 Logstash 或 Beats 端堆积,进而导致日志延迟或丢弃。

解决方案: 在管理门户-全局配置中配置记录报文上线,对于超大报文,将大报文落在固定的文件夹,不由ES解析。

验证:观察文件堆积数下降,日志索引速率稳定。

# 5. 无接口调用,没有索引生成

分析:日志索引通常是在接收到第一条日志时动态创建的。如果长时间无接口调用,则无日志产生,Elasticsearch 不会自动创建空索引,此为正常现象,但易被误判为日志不记录。

解决方案:通过监控系统确认是否有业务请求进入,若确实无调用,此为正常状态,无需处理。

验证:触发测试调用,验证日志索引自动生成。

# 6. Elasticsearch 账号、密码不正确或证书损坏

分析:若Server、Portal、APIGateway配置文件中配置了错误的 Elasticsearch 认证信息(用户名/密码错误)或 SSL/TLS 证书过期/损坏,会导致连接失败,日志无法写入。

解决方案: 1. 核对日志写入配置中的 username/password 或 api_key,确保与 ES 提供的一致。 2. 若使用 SSL,检查证书有效期,重新生成并分发证书。 3. 测试连接:通过 curl 或者接口调用工具验证认证是否成功。

验证:重启日志写入组件,确认错误日志消失,数据正常写入。

← 接口重发失败或重发无记录问题 监控页面数据缺失 →