Agent状态切换或监控面板有断点该如何处理?
问题现象
当云监控服务的Agent进程出现以下现象时,可能是因为Agent负载过高,状态不稳定导致:
- 管理控制台主机监控页面的“插件状态”参数在“运行中”和“故障”两个状态切换。
- 监控指标面板中存在断点。
约束与限制
当前章节的修复方式只支持新版本Agent,若Agent版本为老版本,建议先升级到新版本。
查看当前Agnet版本的命令为:
if [[ -f /usr/local/uniagent/extension/install/telescope/bin/telescope ]]; then /usr/local/uniagent/extension/install/telescope/bin/telescope -v; elif [[ -f /usr/local/telescope/bin/telescope ]]; then echo "old agent"; else echo 0; fi
- 返回“old agent”,表示使用老版本Agent。
- 返回版本号,表示使用新版本Agent。
- 返回“0”,表示未安装Agent。
问题原因
为避免Agent负载过高,影响主机上的其他业务,云监控服务在Agent占用CPU或内存过高时,提供了熔断机制。当Agent负载过高时,会自动触发熔断,触发熔断机制后,Agent暂时停止工作,不上报监控数据。
熔断机制原理
默认情况下,Agent检测机制为:
1分钟查检测一次Agent是否超过第二阈值(占用CPU超过30%或占用内存超过700M)。如果CPU或内存任何一个超出,Agent直接退出:如果没有超过第二阈值,查看Agent是否超过第一阈值(占用CPU超过10%或占用内存超过200M),连续三次超过第一阈值,则退出Agent进程并记录。
退出后,守护进程会自动拉起Agent进程,首先检测退出记录,如果有连续三次退出记录,则休眠20分钟,休眠期间,不会采集监控数据。
当主机挂载磁盘数量较多时,Agent占用的CPU或内存可能较高。您可以根据实际观测主机的资源占用率,参考操作步骤配置Agent熔断机制中的第一阈值和第二阈值。
操作步骤
- 使用root帐号,登录Agent不上报数据的ECS或BMS。
- 可选:执行以下命令,切换至Agent安装路径的bin下。
Windows系统下,路径为:“C:\Program Files\uniagent\extension\install\telescope”
Linux系统下, 路径为:/usr/local/uniagent/extension/install/telescope/bin
- 修改配置文件conf.json。
- 执行以下命令,打开配置文件conf.json。
- 在conf.json文件中,添加如下四行参数,具体参数请参见表1。
表1 参数说明 参数
说明
cpu_first_pct_threshold
第一阈值(CPU),默认值为10,单位为%。
memory_first_threshold
第一阈值(内存),默认值为209715200(200MB),单位为Byte。
cpu_second_pct_threshold
第二阈值(CPU),默认值为30,单位为%。
memory_second_threshold
第二阈值(内存),默认值为734003200(700MB),单位为Byte。
aAgent的CPU使用率和内存使用率查询方法:
{ "cpu_first_pct_threshold": xx, "memory_first_threshold": xxx, "cpu_second_pct_threshold": xx, "memory_second_threshold": xxx }
- 执行如下命令,保存并退出conf.json文件。
- 请执行如下命令,重启Agent。
- Windows系统下:
- 在Agent安装包存放目录下,先双击执行shutdown.bat脚本,停止Agent,再执行start.bat脚本,启动Agent。
- Linux系统下:
- 执行以下命令查看telescope的PID。
- ps -ef |grep telescope
- 强制关闭进程后等待3-5分钟telescope可实现自动重启,操作示例如图1所示。
- kill -9 PID
- Windows系统下: