通用方案:自动清理伏羲集群机器FuxiMonitor服务的stdout日志文件

1. 概述

本文主要介绍在专有云V3环境中,伏羲集群的机器中FuxiMonitor服务的stdout日志文件自动清理方法。

1.1. 适用范围

  • 专有云V3,伏羲

    说明:仅适用于专有云V3.7之前的版本。

1.2. 风险说明

清理脏数据无风险。

2. 问题描述

在专有云V3版本的伏羲集群的机器中,FuxiMonitor服务存在漏洞,stdout.XXXXXX日志文件不会自动清理,需要增加定时任务进行自动清理。

3. 解决方案

3.1. 环境检查

  1. 登录天基控制台,在左侧Project框中搜索tianji,选择tianji-XXXXXX集群,单击集群右侧的集群运维中心,进入集群运维中心页面。

  1. 选择fuxi服务,选择Tubo#服务角色,单击服务器右侧的Terminal,登录磁盘空间发生报警的Tubo#服务角色对应机器。

  1. 进入/apsara/cloud/data/fuxi/FuxiMonitor#/fuxi_monitor目录,执行以下命令,确认是stdout.XXXXXX日志文件占用磁盘空间过大。

    ll -hrt

    系统显示类似如下。

  1. 执行以下命令,确认存在crond进程。

    ps axu|grep crond

3.2. 实施步骤

  1. 登录磁盘空间发生报警的Tubo#服务角色对应机器,在/tmp目录下编辑Delete_FuxiMonitor_stdout.sh脚本文件,添加以下内容。

    #!/bin/bash
    
    crontab -l |grep fuximonitor_delete
    if [ $? -eq 0 ];then
    echo "has same task,exit!"
    exit 1
    fi
    
    Times=`date +%s`
    num1=`echo $RANDOM`
    num2=`echo "$num1%60"|bc`
    
    crontab -l >/tmp/crontabbak
    cp /tmp/crontabbak /tmp/crontab.$Times
    if [ -f /tmp/crontabbak ];then
    echo "$num2 2 * * * find /apsara/cloud/data/fuxi/FuxiMonitor#/fuxi_monitor/ -type f -name 'stdout.*' -print -exec cp /dev/null {} \;>/tmp/fuximonitor_delete.log 2>&1" >>/tmp/crontabbak
    else
    echo "old crontab backup failed,pls check !exit now!!"
    exit 2
    fi
    crontab /tmp/crontabbak
  1. 执行以下命令,切换到admin用户。

    su - admin
  1. 执行以下命令,运行脚本文件,脚本文件会自动在admin用户上添加Crontab计划任务,该计划任务会在凌晨2点到3点之间的某个时间执行。

    sh /tmp/Delete_FuxiMonitor_stdout.sh
  1. 执行以下命令,确认存在对应的计划任务。

    crontab -l|grep FuxiM

    系统显示类似如下。

现场环境需要紧急清理磁盘空间的情况

执行以下命令,清空/apsara/cloud/data/fuxi/FuxiMonitor#/fuxi_monitor/目录下的stdout.XXXXXX日志文件。

find /apsara/cloud/data/fuxi/FuxiMonitor#/fuxi_monitor/ -type f -name 'stdout.*' -print -exec cp /dev/null {} \;

3.3. 结果验证

  1. 登录磁盘空间发生报警的Tubo#服务角色对应机器,执行以下命令,确认磁盘空间使用率下降。
    df -h
  2. 确认stdout.XXXXXX日志文件的大小变成0字节。

4. 回滚方案

删除新增加的Crontab计划任务。