普元数据资产管理平台 普元数据资产管理平台
产品简介
快速开始
安装指南
数据资产及目录
数据标准
数据模型
元数据管理
数据服务
数据安全
常见问题解答
开发指南
运维指南
更新日志
  • 数据服务统计/监控相关问题排查指南
  • 排查指南详细说明
  • 场景一:服务调用统计页面报错
  • 场景二:统计数据不显示/不全
  • 场景三:服务引擎监控无数据
  • 场景四:调用日志采集失败
  • 场景五:各部门调用分布异常
  • 场景六:响应时间/性能问题

# 数据服务统计/监控相关问题排查指南

# 排查指南详细说明

通用前置检查:

  • 确认版本:明确是 7.3 GA 还是 7.3.1 版本。
  • 确认组件安装:服务调用统计依赖 filebeat + logstash + elasticsearch 组件,确认已正确安装配置。
  • 确认数据引擎版本:服务引擎(dataEngine)版本需与DAMP版本匹配。
  • 查阅补丁列表:优先检索官方补丁。您可以通过以下链接访问官方补丁列表:
    • DAMP 7.3.1 补丁列表: DAMP7.3.1补丁列表 (opens new window)
    • DAMP 7.3 GA 补丁列表: DAMP7.3GA补丁列表 (opens new window)

# 场景一:服务调用统计页面报错

  • 问题现象:

    1. 打开“服务调用统计”页面报500内部错误。
    2. 页面报“服务器内部错误”或“连接超时”。
    3. 统计接口返回5xx状态码。
    4. 点击统计页面后浏览器控制台报错。
  • 排查步骤:

    1. 第一步:排除产品BUG。

      • 操作:在官方补丁列表中,使用 Ctrl+F 搜索关键词 统计、500、调用统计。
      • 相关补丁:
        • DAMP 7.3.1: DAMP_7.3.1_SERVER_20241018_P1(解决服务调用统计页面500错误)
        • DAMP 7.3 GA: DAMP_7.3_DATAENGINE_20241018_P1(服务引擎统计相关补丁)
      • 解决方案:若找到描述匹配的补丁,则申请并应用。
    2. 第二步:检查ES连接状态。

      • 操作:进入“平台配置” -> “平台参数配置”,检查搜索引擎相关配置。
      • 配置项:
        searchEngine.engineUrl = http://ES_IP:9200
        searchEngine.engineUserName = elastic(如开启认证)
        searchEngine.enginePassword = ******(如开启认证)
        searchEngine.searchtype = es
        searchEngine.enginetype = ElasticSearch
        
      • 验证命令:
        # 测试ES连通性
        curl -XGET 'http://ES_IP:9200/_cat/health?v'
        
        # 查看ES索引是否存在
        curl -XGET 'http://ES_IP:9200/_cat/indices?v'
        
        # 检查是否有api-log索引
        curl -XGET 'http://ES_IP:9200/api-log-*/_search?pretty'
        
      • 解决方案:
        • 如果ES地址错误,修正配置后点击“刷新缓存”。
        • 如果ES服务未启动,启动ES服务。
        • 如果ES启用了SSL,检查证书配置。
    3. 第三步:检查ES SSL证书配置(如启用HTTPS)。

      • 现象:报错 General SSLEngine problem 或 SSLHandshakeException。
      • 排查项:ES启用了HTTPS,但证书未导入JDK信任库。
      • 解决方案:
        # 将ES证书导入DAMP所在服务器的JDK信任库
        keytool -import -alias es_cert -keystore $JAVA_HOME/jre/lib/security/cacerts -file es_cert.cer
        # 默认密码:changeit
        
      • 操作:导入证书后重启DAMP服务。
    4. 第四步:检查nginx配置(如有)。

      • 操作:如果通过nginx访问DAMP,检查nginx配置。
      • 排查项:nginx是否正确代理了统计接口。
      • 解决方案:确保nginx配置中包含正确的proxy_pass路径。

# 场景二:统计数据不显示/不全

  • 问题现象:

    1. 统计页面打开正常,但数据为空。
    2. 只有部分数据,缺少某段时间的调用记录。
    3. 点击“重新统计”无变化。
    4. 图表展示不全或格式错乱。
  • 排查步骤:

    1. 第一步:排除产品BUG。

      • 操作:在官方补丁列表中,搜索关键词 统计、显示、图表。
      • 相关补丁:
        • DAMP 7.3.1: DAMP_7.3.1_UI_20250908_P1(解决显示不全问题)
        • DAMP 7.3 GA: DAMP_7.3_UI_20250911_P1(解决字段类型不显示)
      • 解决方案:若找到描述匹配的补丁,则申请并应用。
    2. 第二步:检查filebeat配置。

      • 操作:登录服务引擎所在服务器,检查filebeat配置和运行状态。
      • filebeat配置文件(/etc/filebeat/filebeat.yml):
        filebeat.inputs:
          - type: log
            paths: ['/opt/dataEngine/logs/api.log*']
            encoding: UTF-8
            fields:
              log-type: api-log
            tags: ['api-log']
            json.keys_under_root: true
            json.add_error_key: true
            json.overwrite_keys: true
        
        output.logstash:
          hosts: ['logstash_IP:5044']
        
      • 验证命令:
        # 查看filebeat状态
        systemctl status filebeat
        
        # 查看filebeat日志
        tail -f /var/log/filebeat/filebeat.log
        
        # 确认日志文件存在且有新内容
        ls -la /opt/dataEngine/logs/api.log*
        tail -f /opt/dataEngine/logs/api.log
        
      • 解决方案:
        • 如果filebeat未运行,启动filebeat:systemctl start filebeat。
        • 如果路径错误,修正后重启filebeat。
        • 确保filebeat对日志文件有读取权限。
    3. 第三步:检查logstash配置。

      • 操作:登录logstash服务器,检查配置和运行状态。
      • logstash配置文件(/etc/logstash/conf.d/logstash.conf):
        input {
          beats {
            port => 5044
          }
        }
        
        filter {
          date {
            match => [ "time", "UNIX_MS" ]
            locale => "cn"
            timezone => "Asia/Shanghai"
            target => "covert-time"
          }
          
          ruby {
            code => "event.set('covert-time', event.get('covert-time').time.localtime + 8*60*60)"
          }
          
          mutate {
            convert => ["covert-time", "string"]
          }
          
          date {
            match => [ "covert-time", "YYYY-MM-dd'T'HH:mm:ss.SSSZ", "ISO8601" ]
            locale => "cn"
            timezone => "Asia/Shanghai"
          }
        }
        
        output {
          elasticsearch {
            hosts => ["ES_IP:9200"]
            index => "%{[fields][log-type]}-%{+YYYY.MM.dd}"
          }
        }
        
      • 验证命令:
        # 查看logstash状态
        systemctl status logstash
        
        # 查看logstash日志
        tail -f /var/log/logstash/logstash-plain.log
        
        # 测试logstash端口监听
        netstat -anp | grep 5044
        
      • 解决方案:
        • 如果logstash未运行,启动logstash。
        • 如果配置错误,修正后重启logstash。
        • 确保ES地址配置正确且可访问。
    4. 第四步:检查ES索引数据。

      • 操作:直接查询ES,确认是否有数据写入。
      • 验证命令:
        # 查看所有索引
        curl -XGET 'http://ES_IP:9200/_cat/indices?v'
        
        # 查看api-log索引数据量
        curl -XGET 'http://ES_IP:9200/api-log-*/_count?pretty'
        
        # 查看最近10条记录
        curl -XGET 'http://ES_IP:9200/api-log-*/_search?pretty&size=10'
        
      • 解决方案:
        • 如果索引不存在,说明日志未成功写入,检查filebeat/logstash链路。
        • 如果索引存在但数据为空,检查日志格式是否匹配。
    5. 第五步:检查服务调用日志格式。

      • 操作:查看服务引擎的api.log文件,确认日志格式是否正确。
      • 正确格式示例:
        {
          "time": 1672733243440,
          "name": "服务名称",
          "serviceId": "服务ID",
          "path": "/api/sql-services/test/query",
          "method": "POST",
          "client": "授权账号",
          "org": "授权部门",
          "app": "授权应用",
          "elapsed": 98,
          "ok": true
        }
        
      • 解决方案:
        • 如果日志格式异常,检查服务引擎配置。
        • 如果日志文件未滚动,检查log4j配置。

# 场景三:服务引擎监控无数据

  • 问题现象:

    1. “服务引擎监控”页面显示“无数据”或“离线”。
    2. 引擎列表为空,看不到已注册的引擎。
    3. 引擎状态始终为“未知”或“异常”。
  • 排查步骤:

    1. 第一步:排除产品BUG。

      • 操作:在官方补丁列表中,搜索关键词 引擎、监控。
      • 相关补丁:暂无直接相关补丁。
      • 解决方案:按以下步骤排查。
    2. 第二步:检查服务引擎进程。

      • 操作:登录服务引擎服务器,检查进程状态。
      • 命令:
        # 查看服务引擎进程
        ps -ef | grep dataEngine
        
        # 查看服务引擎日志
        tail -f /opt/dataEngine/logs/engine.log
        
        # 查看服务引擎端口监听
        netstat -anp | grep 服务引擎端口
        
      • 解决方案:
        • 如果进程不存在,启动服务引擎。
        • 如果进程存在但异常,重启服务引擎。
    3. 第三步:检查引擎注册配置。

      • 操作:确认服务引擎配置文件中注册中心地址正确。
      • 配置文件:/opt/dataEngine/conf/application.yml
      • 关键配置:
        dam:
          engine:
            register:
              address: http://DAMP_IP:DAMP_PORT
              enabled: true
        
      • 解决方案:
        • 确保address配置的DAMP地址可访问。
        • 修改配置后重启服务引擎。
    4. 第四步:检查网络连通性。

      • 操作:测试服务引擎到DAMP服务器的网络。
      • 命令:
        # 测试DAMP服务是否可访问
        curl -XGET 'http://DAMP_IP:DAMP_PORT/actuator/health'
        
        # 测试端口连通性
        telnet DAMP_IP DAMP_PORT
        
      • 解决方案:
        • 如果网络不通,检查防火墙设置。
        • 如果DAMP服务未启动,启动DAMP服务。
    5. 第五步:检查引擎心跳。

      • 操作:查看服务引擎日志中是否有心跳上报记录。
      • 命令:grep heartbeat /opt/dataEngine/logs/engine.log
      • 解决方案:
        • 如果没有心跳记录,检查注册配置。
        • 如果心跳失败,检查网络和DAMP服务状态。

# 场景四:调用日志采集失败

  • 问题现象:

    1. filebeat日志报错,无法读取日志文件。
    2. logstash日志报错,无法连接ES。
    3. ES中没有新的索引创建。
    4. 日志采集链路中断。
  • 排查步骤:

    1. 第一步:排除产品BUG。

      • 操作:在官方补丁列表中,搜索关键词 日志、采集。
      • 相关补丁:暂无直接相关补丁。
      • 解决方案:按以下步骤排查。
    2. 第二步:检查filebeat常见错误。

      错误1:权限不足

      • 现象:permission denied 或 could not open file
      • 解决方案:
        # 查看文件权限
        ls -la /opt/dataEngine/logs/api.log
        
        # 修改权限
        chmod 644 /opt/dataEngine/logs/api.log
        # 或使用root用户运行filebeat
        

      错误2:harvester读取失败

      • 现象:harvester for file failed
      • 解决方案:检查文件是否被其他进程占用,重启filebeat。

      错误3:output.logstash连接失败

      • 现象:Failed to connect to logstash
      • 解决方案:
        # 测试logstash端口连通性
        telnet logstash_IP 5044
        
        # 检查logstash服务状态
        systemctl status logstash
        
    3. 第三步:检查logstash常见错误。

      错误1:端口被占用

      • 现象:Address already in use
      • 解决方案:修改logstash配置文件中的端口,或停止占用端口的进程。

      错误2:ES连接失败

      • 现象:Connection refused 或 No route to host
      • 解决方案:
        # 测试ES连通性
        curl -XGET 'http://ES_IP:9200'
        
        # 检查ES服务状态
        systemctl status elasticsearch
        

      错误3:日期解析错误

      • 现象:failed to parse date field
      • 解决方案:检查日志中的time字段格式,调整logstash配置中的match模式。
    4. 第四步:检查ES常见问题。

      问题1:磁盘空间不足

      • 现象:ES日志报 disk usage exceeded flood-stage
      • 解决方案:
        # 查看磁盘使用
        df -h
        
        # 清理旧索引
        curl -XDELETE 'http://ES_IP:9200/api-log-2023.*'
        

      问题2:集群状态异常

      • 现象:cluster health: red 或 yellow
      • 解决方案:
        # 查看集群健康状态
        curl -XGET 'http://ES_IP:9200/_cluster/health?pretty'
        
        # 查看未分配分片
        curl -XGET 'http://ES_IP:9200/_cat/shards?v'
        
    5. 第五步:重建采集链路。

      • 操作:如果以上步骤都无法解决,尝试重建采集链路。
      • 步骤:
        1. 停止filebeat、logstash服务。
        2. 清空filebeat注册表:rm -rf /var/lib/filebeat/registry
        3. 清空logstash的sincedb文件:rm -rf /var/lib/logstash/.sincedb_*
        4. 按顺序启动ES、logstash、filebeat。
        5. 触发一次服务调用,检查数据是否正常写入。

# 场景五:各部门调用分布异常

  • 问题现象:

    1. 统计页面中“各部门调用分布”图表显示异常。
    2. 部门数据为空或显示不全。
    3. 调用次数统计不准确。
    4. 特定数据库(如GaussDB)环境下统计报错。
  • 排查步骤:

    1. 第一步:排除产品BUG。

      • 操作:在官方补丁列表中,搜索关键词 分布、部门、GaussDB。
      • 相关补丁:
        • DAMP 7.5.0: DAMP_7.5.0_SERVER_20251016_P1(GaussDB适配补丁)
        • DAMP 7.3.1: 如有类似问题需联系技术支持获取适配补丁
      • 解决方案:若找到描述匹配的补丁,则申请并应用。
    2. 第二步:检查数据库方言兼容性。

      • 现象:使用GaussDB、PostgreSQL等特定数据库时统计异常。
      • 排查项:统计SQL中使用了特定数据库的方言语法。
      • 解决方案:
        • 查看DAMP后台日志,找到执行的统计SQL。
        • 在数据库客户端中单独执行该SQL,分析错误。
        • 申请数据库适配补丁。
    3. 第三步:检查部门数据同步。

      • 操作:确认部门信息已正确同步到DAMP。
      • 排查项:
        • 在“部门目录”中是否已同步所有部门。
        • 授权记录中的部门信息是否正确。
      • 解决方案:
        • 在“部门目录”中点击“重新同步”。
        • 检查服务授权时是否正确选择了部门。
    4. 第四步:检查日志中的org字段。

      • 操作:查看原始日志中的org字段是否有值。
      • 命令:
        # 查看最近日志中的org字段
        tail -20 /opt/dataEngine/logs/api.log | grep org
        
      • 解决方案:
        • 如果org字段为空,说明授权时未指定部门。
        • 重新授权,填写部门信息。

# 场景六:响应时间/性能问题

  • 问题现象:

    1. 统计页面加载缓慢(超过10秒)。
    2. 查询大时间范围时超时。
    3. ES查询响应慢。
    4. 统计接口耗时高。
  • 排查步骤:

    1. 第一步:排除产品BUG。

      • 操作:在官方补丁列表中,搜索关键词 性能、慢、超时。
      • 相关补丁:暂无直接相关补丁。
      • 解决方案:按以下步骤排查。
    2. 第二步:检查ES索引优化。

      • 操作:检查ES索引设置和分片情况。
      • 命令:
        # 查看索引设置
        curl -XGET 'http://ES_IP:9200/api-log-*/_settings?pretty'
        
        # 查看索引分片
        curl -XGET 'http://ES_IP:9200/_cat/shards/api-log-*?v'
        
      • 优化方案:
        • 增加主分片数量以提高并行查询能力。
        • 设置合适的刷新间隔。
        • 对常用查询字段创建索引。
    3. 第三步:调整时间范围。

      • 操作:统计页面默认查询时间范围是否过大。
      • 解决方案:
        • 缩小默认查询时间范围(如最近7天)。
        • 增加时间范围选择控件。
        • 对大数据量查询使用聚合而非全量数据。
    4. 第四步:检查服务引擎负载。

      • 操作:查看服务引擎的CPU、内存使用情况。
      • 命令:
        # 查看服务引擎进程资源
        top -p `pgrep -f dataEngine`
        
        # 查看JVM内存
        jstat -gcutil `pgrep -f dataEngine` 1000
        
      • 解决方案:
        • 如果CPU过高,检查是否有慢SQL或大量并发调用。
        • 如果内存不足,调整JVM参数增加内存。
        • 考虑水平扩展服务引擎。
    5. 第五步:网络延迟排查。

      • 操作:测试各组件之间的网络延迟。
      • 命令:
        # 测试DAMP到ES的延迟
        ping ES_IP
        
        # 测试服务引擎到logstash的延迟
        ping logstash_IP
        
      • 解决方案:
        • 如果延迟过高,考虑将组件部署在同一机房。
        • 优化网络配置,减少跳数。
上次更新: 2026/3/12下午1:52:20

← 数据服务接口开发问题 数据建模相关问题 →