应急预案:专有云环境中关停SLS服务的方法

应急预案:专有云环境中关停SLS服务的方法

更新时间:2020-07-08 12:25:47

1. 概述

本文主要介绍在专有云环境中,关停SLS服务的方法。

1.1. 适用范围

  • 专有云V2企业版,日志服务
  • 专有云V3企业版,日志服务

1.2. 用户告知

  • 适用平台:x86、ARM
  • 授权级别:L3(产品研发工程师)
  • 临时或固化方案:固化
  • 操作复杂度:低
  • 预估执行时长:1小时
  • 业务影响:否
    说明:SLS数据采集停止,相关的依赖产品会暂时无数据,如云监控或神农等。
  • 风险等级:低

2. 问题描述

当盘古的ChunkServer数较高,查看是SLS导致的,即可按照该方案关闭SLS服务。

3. 解决方案

3.1. 环境检查

SLS服务状态检查

  • 在专有云V2环境,登录天目控制台,检查SLS服务的状态是否正常,如果不正常,请联系阿里云技术支持进行处理。
  • 在专有云V3环境,登录天基控制台,检查SLS服务的状态是否正常,如果不正常,请联系阿里云技术支持进行处理。

数据状态检查

经确认SLS服务导致OTS或OSS的ChunkServer数较高。

3.2. 实施步骤

适用于专有云V2环境

  1. 登录sls_ag容器,关于如何登录容器请参见专有云V2环境中如何登录容器
  2. 切换到admin用户,执行以下命令,检查SLS服务是否为启动状态。如果输出中有shennongworker和replayworker,则表示SLS服务为启动状态。
    r wl |egrep -i "ShennongReplayWorker|ShennongWorker"
  3. 登录sls_ag容器,切换到admin用户,执行以下命令,进入sls_deploy目录。
    cd /opt/aliyun/app/sls/sls_deploy
  4. 执行以下命令,停止SLS服务。
    python sls_deploy.py StopModule nginx  sls_fastcgi shennong_worker sls_replay_worker -i false

适用于专有云V3环境

  1. 登录OPS服务器,如何登录OPS服务器请参见专有云如何登录OPS服务器
  2. 切换到root用户,执行以下命令,登录到common-sls的VM。
    ssh `tj_show -r sls-common.ServiceTest# --ip`
  3. 执行以下命令,切换到admin用户。
    su - admin
  4. 执行以下命令,查看ShennongWorker和ShennongReplayWorker的start进程情况。
    ps -ef |egrep -i "ShennongWorker|ReplayWorker" |grep -i start 
  5. 依次执行以下命令,查看每个Worker的调度情况。
    r swl sys/ShennongWorker
    r swl sys/ShennongReplayWorker
  6. 依次执行以下命令,分别查看ShennongWorker和ShennongReplayWorker的start脚本执行权限。
    ls -l /cloud/app/sls-common/FuxiServiceShennongWorker#/shennong_worker/current/start
    ls -l /cloud/app/sls-common/FuxiServiceSlsReplayWorker#/sls_replay_worker/current/start
  7. 依次执行以下命令,分别取消ShennongWorker和ShennongReplayWorker的start脚本执行权限。
    chmod a-x /cloud/app/sls-common/FuxiServiceShennongWorker#/shennong_worker/current/start
    chmod a-x /cloud/app/sls-common/FuxiServiceSlsReplayWorker#/sls_replay_worker/current/start
  8. 依次执行以下命令,分别确认ShennongWorker和ShennongReplayWorker的start脚本执行权限已取消。
    ls -l /cloud/app/sls-common/FuxiServiceShennongWorker#/shennong_worker/current/start
    ls -l /cloud/app/sls-common/FuxiServiceSlsReplayWorker#/sls_replay_worker/current/start
  9. 执行以下命令,将输出的两个进程都使用kill命令结束。
    ps -ef |egrep -i "ShennongWorker|ReplayWorker" |grep -i start 
  10. 再次执行以上命令,确认两个进程都已被kill命令结束。
  11. 依次执行以下命令,分别停止ShennongWorker和ShennongReplayWorker。
    r sstop sys/ShennongWorker
    r sstop sys/ShennongReplayWorker
  12. 再次执行以下命令,若输出异常,则表示Worker已停止。
    r swl sys/ShennongWorker
    r swl sys/ShennongReplayWorker

3.3. 结果验证

适用于专有云V2环境

登录sls_ag容器,切换到admin用户,执行以下命令,如果输出中已经没有ShennongWorker和ShennongReplayWorker,则表明服务停止成功。

r wl |egrep -i "ShennongReplayWorker|ShennongWorker

适用于专有云V3环境

实施步骤中的第12步即为验证步骤。

4. 回滚方案

适用于专有云V2环境

  1. 登录sls_ag容器,切换到admin用户,执行以下命令,进入sls_deploy目录。
    cd /opt/aliyun/app/sls/sls_deploy
  2. 执行以下命令,启动SLS服务。
    python sls_deploy.py StartModule nginx sls_fastcgi shennong_worker sls_replay_worker -i false
  3. 登录sls_ag容器,切换到admin用户,执行以下命令,检查服务是否启动成功。
    r wl |egrep -i "ShennongReplayWorker|ShennongWorker"
    系统显示类似如下,输出中有ShennongWorker和ShennongReplayWorker,说明启动成功。
    "sys/ShennongReplayWorker": { 
    "accessName": "nuwa://AYSLS-SHUGUANG:10240/sys/ShennongReplayWorker/ServiceMaster",
    "sys/ShennongWorker": {
    "accessName": "nuwa://AYSLS-SHUGUANG:10240/sys/ShennongWorker/ServiceMaster",

适用于专有云V3环境

  1. 登录OPS服务器,切换到root用户,执行以下命令,登录到sls-common服务ServiceTest#服务角色的VM。
    ssh `tj_show -r sls-common.ServiceTest# --ip`
  2. 执行以下命令,切换到admin用户。
    su - admin
  3. 依次执行以下命令,分别添加ShennongWorker和ShennongReplayWorker的start脚本执行权限。
    chmod a+x /cloud/app/sls-common/FuxiServiceShennongWorker#/shennong_worker/current/start
    chmod a+x /cloud/app/sls-common/FuxiServiceSlsReplayWorker#/sls_replay_worker/current/start
  4. 依次执行以下命令,分别确认ShennongWorker和ShennongReplayWorker的start脚本执行权限已添加。
    ls -l /cloud/app/sls-common/FuxiServiceShennongWorker#/shennong_worker/current/start
    ls -l /cloud/app/sls-common/FuxiServiceSlsReplayWorker#/sls_replay_worker/current/start
  5. 执行以下命令,查看ShennongWorker和ShennongReplayWorker的start进程运行情况。
    ps -ef |egrep -i "ShennongWorker|ReplayWorker" |grep -i start
  6. 依次执行以下命令,查看每个Worker是否被正常拉起。
    r swl sys/ShennongWorker
    r swl sys/ShennongReplayWorker