ARMS同步加载方式接入 有日志上报 但应用看不到监控数据可能是什么原因?

ARMS同步加载方式接入 有日志上报 但应用看不到监控数据可能是什么原因?aa18dd43a770560e3cfb236defad129a.png

展开
收起
三分钟热度的鱼 2024-04-25 08:25:34 64 分享 版权
阿里云 AI 助理回答

问题分析与排查步骤

在ARMS同步加载方式接入后,如果日志显示有数据上报,但应用监控页面看不到监控数据,可能是由于以下原因导致的。以下是详细的排查步骤和可能的原因分析:


1. 检查Agent配置与安装

  • 确认Agent是否正确加载
    如果ArmsAgent/log/目录下没有生成日志文件,说明Agent未被成功加载。请检查以下内容:

    • 确保arms-bootstrap-1.7.0-SNAPSHOT.jar文件路径正确。
    • 确保-javaagent参数在-jar之前。
    • 检查ArmsAgent安装目录的权限是否正确。
  • 验证LicenseKey有效性
    如果日志中出现LicenseKey is invalid.异常,请检查以下内容:

    • 应用所属地域与Agent所属地域是否一致。
    • LicenseKey是否正确配置。

2. 检查网络连通性

  • 确认上报地址与网络配置
    如果使用内网地址上报,请确保上报服务器和上报地址处于阿里云同一个VPC内,不能跨Region上报。
    使用curltelnet命令检查上报地址和端口是否可用。例如:
    telnet tracing-analysis-dc-hz.aliyuncs.com 8090
    

    如果无法连接,请检查ECS的安全组设置和网络配置。


3. 检查数据采集状态与开关设置

  • 确认数据采集是否开启
    登录ARMS控制台,导航至“应用监控 > 应用列表”页面,检查以下内容:
    • 在“设置 > 应用启停设置”中,确认数据采集是否已关闭。
    • 在“应用设置 > 自定义配置”页面,检查“Agent总开关”是否已开启。

4. 检查应用流量与框架支持

  • 确认应用是否有持续的外部请求访问
    如果Agent日志中出现send agent metrics. no metrics.,请确认以下内容:

    • 应用是否有持续的外部访问请求(如HTTP、HSF、Dubbo请求)。
    • 开发框架是否在ARMS Agent的支持范围内。具体支持范围可参考官方文档。
  • 检查JDK版本兼容性
    如果应用使用的是JDK 17或Spring Boot 3.0,请注意以下事项:

    • ARMS从2.8.3版本探针开始支持JDK 17,但2.8.3版本不支持Spring Boot 3.0。
    • Spring Boot 3.0依赖Servlet 5.0规范,包名从javax升级到jakarta。如果存在低版本Servlet-api依赖,可能导致埋点失败。
    • 解决方法:将探针升级到2.9.1.2或更高版本,并移除低版本Servlet-api依赖。

5. 检查特殊组件与异步框架支持

  • OpenFeign组件相关问题
    如果应用使用了OpenFeign组件,默认开启了Hystrix异步框架,而ARMS Agent 2.6.0以下版本不支持异步框架。
    解决方法
    1. 关闭Hystrix并启用OkHttp请求类。
    2. pom.xml中添加以下依赖:
      <dependency>
       <groupId>io.github.openfeign</groupId>
       <artifactId>feign-okhttp</artifactId>
      </dependency>
      
    3. 在SpringCloud配置文件中添加以下配置:
      feign:
      okhttp:
       enabled: true
      hystrix:
       enabled: false
      
    4. 配置OkHttp请求类,示例代码如下:
      @Configuration
      @ConditionalOnClass(Feign.class)
      @AutoConfigureBefore(FeignAutoConfiguration.class)
      public class FeignClientOkHttpConfiguration {
       @Bean
       public OkHttpClient okHttpClient() {
           return new OkHttpClient.Builder()
               .connectTimeout(20, TimeUnit.SECONDS)
               .readTimeout(20, TimeUnit.SECONDS)
               .writeTimeout(20, TimeUnit.SECONDS)
               .retryOnConnectionFailure(true)
               .connectionPool(new ConnectionPool())
               .build();
       }
      }
      


6. 检查时间范围与数据延迟

  • 确认查询时间范围是否正确
    在ARMS控制台中,将查询时间条件设为最近15分钟,再次确认是否有监控数据。

  • 检查数据延迟
    如果数据上报正常但监控页面无数据,可能存在数据延迟。建议等待几分钟后重新查看。


7. 提交工单获取进一步支持

如果经过上述排查仍无法解决问题,请执行以下操作: - 将Java Agent日志(路径:ArmsAgent/log)保存为压缩文件。 - 联系钉钉服务账号arms160804或提交工单,提供详细日志和问题描述以获取进一步支持。


重要提醒

  • 加粗提示:请确保-javaagent参数在-jar之前,否则可能导致Agent无法加载。
  • 加粗提示:对于JDK 17或Spring Boot 3.0的应用,务必升级探针版本至2.9.1.2或更高版本。
  • 加粗提示:如果使用OpenFeign组件,请关闭Hystrix并启用OkHttp请求类,以避免异步框架导致的数据缺失。

通过以上步骤,您可以系统性地排查并解决ARMS监控数据缺失的问题。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

云原生可观测基于Prometheus、Grafana 、OpenTelemetry 等核心产品, 形成指标、链路存储分析、异构数据源集成的数据层, 通过标准PromQL和SQL提供大盘展示、告警与探索能力。

还有其他疑问?
咨询AI助理