问题描述

阿里云容器服务Kubernetes版集群中,Java应用安装Agent后,应用监控没有数据。

问题原因

应用所在Pod未被注入arms-init-container、应用YAML文件中无Annotations注解,STS服务未正确授权等原因都可能导致应用监控无数据。

解决方案

需要通过RAM授权的方式,给予RAM用户操作阿里云账号资源的权限。

  1. 登录容器服务Kubernetes版控制台
  2. 在左侧导航栏选择集群,在集群列表页面上的目标集群右侧操作列单击应用管理
  3. 容器组页签顶部选择您的应用所在的命名空间,然后目标应用右侧单击编辑
  4. 编辑YAML对话框中查看YAML文件中是否存在initContainers
    db_am_ack_apppod_yaml
    • 如果不存在,则说明未被注入arms-init-container,执行第5步。
    • 如果存在,则说明已被注入arms-init-container,执行第8步。
  5. 容器组页签顶部选择命名空间arms-pilot。查看Pod列表中是否存在名称前缀为arms-pilot的Pod。
    • 如果存在,则执行第6步。
    • 如果不存在,则在应用市场中安装arms-pilot。具体操作,请参见安装ARMS应用监控组件
  6. 无状态有状态页签目标应用右侧操作列中选择更多>查看Yaml,在编辑YAML对话框查看YAML文件中是否存在以下Annotations注解。
    annotations: armsPilotAutoEnable: 'on' armsPilotCreateAppName: [$Your_Deployment_Name]
    说明:[$Your_Deployment_Name]为资源的声明式更新名称。
    • 如果存在,则执行第7步。
    • 如果不存在,则在编辑YAML对话框中的spec>template>metadata层级下添加以上Annotations注解,并将[$Your_Deployment_Name]替换为您的应用名称,然后单击更新
  7. 容器组页签目标应用右侧单击日志,查看arms-pilot的Pod日志是否报STS错误,即提示"Message":"STS错误"
    • 如果报STS错误,则需为应用所在集群授权,并重启应用所在Pod。具体操作,请参见为容器服务Kubernetes版授权
    • 如果未报STS错误,则联系ARMS钉钉服务账号:arms160804。
  8. 容器组页签目标应用右侧单击编辑,在编辑YAML对话框中查看YAML文件中是否存在以下javaagent参数。
    -javaagent:/home/admin/.opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar
    • 如果存在,则单击容器组页签右侧的终端进入命令行页面,执行以下命令,进入logs目录查看是否存在以.log为后缀的日志文件,然后联系ARMS钉钉服务账号:arms160804。
      cd /home/admin/.opt/ArmsAgent/logs
    • 如果不存在,则联系ARMS钉钉服务账号:arms160804。

适用于

  • 容器服务Kubernetes版集群
  • 应用实时监控服务ARMS