# Agent状态切换或监控面板有断点该如何处理？
#### 问题现象
当云监控服务的Agent进程出现以下现象时，可能是因为Agent负载过高，状态不稳定导致：
- 管理控制台主机监控页面的"插件状态"参数在"运行中"和"故障"两个状态切换。
- 监控指标面板中存在断点。
 
#### 约束与限制
当前章节的修复方式只支持新版本Agent，若Agent版本为老版本，建议先升级到新版本。
- Linux平台：
  1. 使用root账号，登录主机。
  
  2. 执行如下命令，确认使用Agent的版本。
     ```
     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。
      
   
- Windows平台：请根据安装路径确定Agent版本。
  - 新版本Agent默认安装路径为"C:\\Program Files\\uniagent\\extension\\install\\telescope"
  
  - 老版本Agent默认安装路径为C:\\Program Files\\telescope
   
 
#### 问题原因
为避免Agent负载过高，影响主机上的其他业务，云监控服务在Agent占用CPU或内存过高时，提供了熔断机制。当Agent负载过高时，会自动触发熔断，触发熔断机制后，Agent暂时停止工作，不上报监控数据。
#### 熔断机制原理
默认情况下，Agent检测机制为：
1分钟检测一次Agent是否超过第二阈值（占用CPU超过30%或占用内存超过700M）。如果CPU或内存任何一个超出，Agent直接退出：如果没有超过第二阈值，查看Agent是否超过第一阈值（占用CPU超过10%或占用内存超过200M），连续三次超过第一阈值，则退出Agent进程并记录。
退出后，守护进程会自动拉起Agent进程，首先检测退出记录，如果有连续三次退出记录，则休眠20分钟，休眠期间，不会采集监控数据。
当主机挂载磁盘数量较多时，Agent占用的CPU或内存可能较高。您可以根据实际观测主机的资源占用率，参考[操作步骤]配置Agent熔断机制中的第一阈值和第二阈值。
 #### 操作步骤
1. 登录Agent不上报数据的ECS或BMS。
2. **可选：** 执行以下命令，切换至Agent安装路径的bin下。
   Windows系统下，路径为："C:\\Program Files\\uniagent\\extension\\install\\telescope\\bin"
   Linux系统下， 路径为：/usr/local/uniagent/extension/install/telescope/bin
   
3. 修改配置文件conf.json。
   1. 执行以下命令，打开配置文件conf.json。 **vi conf.json**
      
   
   2. 在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。   |
      | Agent的CPU使用率和内存使用率查询方法： - Linux： top -p *telescope的PID*   - Windows： 在任务管理器中查看Agent进程详情。    ||
         
      ```
      {
          "cpu_first_pct_threshold": xx,
          "memory_first_threshold": xxx,
          "cpu_second_pct_threshold": xx,
          "memory_second_threshold": xxx
      }
      ```
      
      
   
   3. 执行如下命令，保存并退出conf.json文件。 **:wq**
      
    
4. 执行如下命令重启agent：
   - Windows系统：
     1. 在"C:\\Program Files\\uniagent\\extension\\install\\telescope"路径下，先双击执行shutdown.bat脚本，停止Agent，再执行start.bat脚本，启动Agent。
     
     2. 在"C:\\Program Files\\uniagent\\script"路径下，先双击执行shutdown.bat脚本，停止Agent，再执行start.bat脚本，启动Agent。
      
   
   - Linux系统：
     ```
     service ces-uniagent stop
     service ces-uniagent start
     /usr/local/uniagent/extension/install/telescope/telescoped restart
     ```
     
    
 
