运维编排场景系列-----定时清理Windows服务器日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
系统运维管理,不限时长
简介:

本文介绍在运维编排OOS的控制台,通过OOS服务下的定时运维功能,定时执行一个功能性模版,实现某些需定时管理服务器或定时管理其它服务的需求。

应用背景

运行中的实例内部运行了很多服务程序,随时间的推移系统会产生大量的日志文件或一些垃圾文件。其中产生的某些日志文件可能并无实际作用,时间久了产生越来越多的日志文件会占用实例中很大的存储空间,所以需要定期清理无用的日志文件,优化实例存储空间。

前提条件

  1. 实例状态为运行中Running

模版介绍:

模版功能:

  • 获取实例
  • 根据设置的时间天数,搜索到指定目录下模糊匹配的日志文件,来清理指定天数之前的匹配日志。(例如:清理5天前日志名称包含info.log.的所有日志。)

模版参数:

参数 说明 示例
LogFilePath 存放日志文件的绝对路径。 C:\Users\Administrator\testlogway
LogKeepTime 清理几天之前的日志文件。 5
Targets 根据实例标签(tags)或实例ID(InstanceId)选定需要的实例。 i-11111111111
RateControl 固定参数。
- 速率控制类型:并发控制
- 并发速率:1
- 最大错误次数:0
OOSAssumeRole 可选参数。
- (默认设置)当前账号的已有权限:执行您使用的账号的权限动作。请确保您拥有创建自定义镜像涉及的所有ECS API调用权限。
- 指定RAM角色,使用该角色的权限:如果指定了RAM角色名称,OOS扮演该RAM角色执行运维任务。
当前账号的已有权限

模版内容:

注:模版设置的测试删除的文件名为模糊匹配的方式,本模版匹配的名称为“ info.log. ”,请根据实际的日志文件名称更改模版内的需要删除文件的模糊名称。)

  FormatVersion: OOS-2019-06-01
  Description:
    en: Compared to the current time, specify the period of time to keep log files and delete log files outside the time period.
    zh-cn: 相比于当前时间,指定保留日志文件的时间段,并删除时间段之外的日志文件。
  Parameters:
    LogFilePath:
      Type: String
      Description:
        en: Log file storage location.
        zh-cn: 日志文件存放位置。
    LogKeepTime:
      Type: Number
      Description:
        en: How long to pre-retain log files compared to the current time.
        zh-cn: 相比于当前时间,预保留日志文件的时间天数。
      Default: 5
    Targets:
      Type: Json
      AssociationProperty: Targets
      AssociationPropertyMetadata:
        ResourceType: 'ALIYUN::ECS::Instance'
    RateControl:
      Description:
        en: Concurrency ratio of task execution.
        zh-cn: 任务执行的并发比率。
      Type: Json
      AssociationProperty: RateControl
      Default:
        Mode: Concurrency
        MaxErrors: 0
        Concurrency: 10
    OOSAssumeRole:
      Description: The RAM role to be assumed by OOS.
      Type: String
      Default: OOSServiceRole
  RamRole: '{{ OOSAssumeRole }}'
  Tasks:
    - Name: getInstance
      Description:
        en: Views the ECS instances.
        zh-cn: 获取ECS实例。
      Action: 'ACS::SelectTargets'
      Properties:
        ResourceType: 'ALIYUN::ECS::Instance'
        Filters:
          - '{{ Targets }}'
      Outputs:
        instanceIds:
          Type: List
          ValueSelector: 'Instances.Instance[].InstanceId'
    - Name: runCommand
      Action: 'ACS::ECS::RunCommand'
      Properties:
        commandContent: |-

          $pathExistOrNot = Test-Path -Path "{{ LogFilePath }}"
          if ($pathExistOrNot)
          {
              $timeOutDay = {{ LogKeepTime }}
              $filePath = "{{ LogFilePath }}"

              $allFile = Get-ChildItem -Path $filePath

              foreach($file in $allFile)
              {
                $daySpan = ((Get-Date) - $file.LastWriteTime).Days
                if ($daySpan -gt $timeOutDay -and $file.FullName.contains("info.log."))
                {
                    Remove-Item $file.FullName -Recurse -Force
                  echo "delete:" $file.FullName
                }
              }
          } else
          {
              echo "path not exist"
          }

        instanceId: '{{ ACS::TaskLoopItem }}'
        commandType: RunPowerShellScript
      Loop:
        Items: '{{ getInstance.instanceIds }}'
        RateControl: '{{ RateControl }}'
        Outputs:
          commandOutputs:
            AggregateType: 'Fn::ListJoin'
            AggregateField: commandOutput
      Outputs:
        commandOutput:
          Type: String
          ValueSelector: invocationOutput
  Outputs:
    commandOutput:
      Type: String
      Value: '{{ runCommand.commandOutputs }}'

模版执行效果:

  • 未执行上述模版前,实例内测试文件夹下的文件如下所示。1579498610739_7ed3b190_a220_46b5_9f1d_4bb084213fbd
  • 执行模版后测试文件下模糊匹配的日志文件全部被删除。1579500673309_a973c20c_00a4_4792_b977_fead3f279079

控制台操作步骤

步骤一:创建模版

  1. 请访问运维编排OOS的控制。单击我的模版,单击创建模板按钮,选取空白模板。将上述提供的模板粘贴到yaml栏,输入名称DeleteWindowsLogFile或自定义名称,点击创建模板1579511159765_e243904a_e16c_4026_b6be_bc39caeb5925

    1579509355472_d91ef3f1_37e8_4f64_b8d5_91f1d520d4dc

步骤二:设置定时触发及参数

  1. 单击定时运维,在定时运维内部,设置模版的执行周期频率。操作步骤如下图所示。1579501546739_7afefea8_84bd_499c_9d17_fd80be8a123b
  2. 选择模版下,选择我的模版,通过搜索框找到刚刚创建完成的模版。1579501846100_07782c68_8473_46c4_940d_56d3d3896908
  3. 在定时运维下的设置参数一栏,设置模版需要的参数。参数设置完成单击立即执行1579502141517_3e46ec3f_746c_447d_a9f9_a358a28b64a2

步骤三:查看执行运行情况

  1. 执行管理中查看创建的运维任务。1579502367712_7c2a5abb_a4fe_4dc9_af09_517381efa068

系列文章

主题文章

阿里云重磅发布云上自动化利器——运维编排OOS

最佳实践

玩转运维编排服务的权限:Assume Role+Pass Role
阿里云运维编排新功能:一键批量克隆ECS
批量在多台ECS内执行命令

场景系列

运维编排场景系列----更新ECS镜像
运维编排场景系列----给ECS实例自动打TAG
运维编排场景系列----从实例中拷贝文件到OSS
运维编排场景系列----给实例加到SLS机器组
运维编排场景系列----检测MFA功能状态
运维编排场景系列----每日统计多Region实例的运行状态
运维编排场景系列----如何使用jq
运维编排场景系列----分批到机器上运行命令
运维编排场景系列----更新镜像后自动更新伸缩配置镜像
运维编排场景系列----向Linux实例上传文件
运维编排场景系列----运行远端shell脚本
运维编排场景系列----在ECS实例上运行Ansible-playbook
运维编排场景系列----下载JVM堆栈到OSS
运维编排系列场景----将实例的固定公网IP转换为其它新EIP
运维编排场景系列----自动定时升级临时带宽
运维编排场景系列----批量更新云助手客户端
运维编排系列场景----批量释放实例
运维编排场景系列----ECS实例系统快照下载到本地
运维编排场景系列----批量更换系统盘
运维编排场景系列----自动创建多个区域同类型存储空间

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 编解码 缓存
阿里云服务器实例规格选择参考:根据业务场景选择云服务器实例规格
在阿里云服务器的购买过程中,云服务器实例规格是很多用户最难选择的一个选项,因为阿里云有着多达几十种不同的实例规格,为此,阿里云官方在云服务器购买页面新推出了一个场景化选型推荐,用户可通过自己的上云场景结合场景化选型里面的业务场景和细分场景来选择适合自己的阿里云服务器实例规格,在很大程度上解决了新手用户在选择阿里云服务器实例规格上的困局。
117 11
阿里云服务器实例规格选择参考:根据业务场景选择云服务器实例规格
|
4月前
|
存储 安全 数据库
阿里云服务器计算型、通用型、内存型主要实例规格性能特点和适用场景汇总
阿里云服务器ECS计算型、通用型、内存型规格族属于独享型云服务器,在高负载不会出现计算资源争夺现象,因为每一个vCPU都对应一个Intel ® Xeon ®处理器核心的超线程,具有性能稳定且资源独享的特点。本文为大家整理汇总了阿里云服务器ECS计算型、通用型、内存型主要实例规格族具体实例规格有哪些,各个实例规格的性能特点和主要适用场景。
阿里云服务器计算型、通用型、内存型主要实例规格性能特点和适用场景汇总
|
12天前
|
缓存 关系型数据库 MySQL
服务器磁盘爆满?别慌,教你轻松清理!
服务器磁盘空间告急?别慌!本文将教你如何快速识别并清理占用大量磁盘空间的文件和目录,优化日志文件,释放磁盘空间,恢复系统正常运行。适合服务器管理员和网站运营者。
35 0
 服务器磁盘爆满?别慌,教你轻松清理!
|
26天前
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
26 5
|
23天前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
35 1
|
23天前
|
分布式计算 资源调度 数据可视化
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
29 1
|
8天前
|
机器学习/深度学习 人工智能 边缘计算
高算力服务器的应用场景
【10月更文挑战第18天】高算力服务器作为现代信息社会不可或缺的计算资源,正广泛应用于各行各业。从人工智能到科学研究,从智能交通到数字孪生,它为复杂的计算任务提供了不可替代的支持。
12 0
|
2月前
|
关系型数据库 MySQL 应用服务中间件
服务器端日志在哪里
服务器端日志在哪里
|
3月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
3月前
|
Prometheus 监控 Cloud Native
Web服务器的日志分析与监控
【8月更文第28天】Web服务器日志提供了关于服务器活动的重要信息,包括访问记录、错误报告以及性能数据。有效地分析这些日志可以帮助我们了解用户行为、诊断问题、优化网站性能,并确保服务的高可用性。本文将介绍如何使用日志分析和实时监控工具来监测Web服务器的状态和性能指标,并提供具体的代码示例。
328 0