本来这篇文章的主题应该是在介绍Runbook automation,后来发现其实国内做IT运维的很少有了解Runbook是什么,因此,在介绍Runbook automation之前,我们需要先了解一下Runbook是什么,然后通过下一次的文章再介绍我们的重头戏:Runbook automation。

Runbook在运维领域是一份详细的“操作方法”使用指南,它可以是:
当发生IT告警事件时,通过一份好的Runbook可以协助运维工程师快速定位问题,避免事件升级。
在日常的运维过程中,可以是IT运维流程中经常重复的任务或程序。
在越来越复杂的IT环境中,团队中的每个人都不会对每个系统都有所了解,而Runbook是一份统一的知识管理手册,也是好的知识共享的方法。
Runbook,也可以用用于IT系统和应用程序的定期维护、升级。如:创建数据库备份、更新访问权限。
当发现系统资源或容量不足时,可以通过Runbook的手册来进行扩容。
...
一份runbook,会根据以往解决问题的经验提供了快速有效的方式记录特定任务的详细说明,主要包括如下内容:
这项服务或应用是什么?它主要是做什么的?
元数据?用于说明代码库存放地址、服务的责任人等信息
问题升级?用于说明如果需要专家协助解决问题,应该找谁?
这个应用或服务有什么外部依赖关系?
这个应用或服务的内部依赖关系是什么?
都用到了哪些技术栈?
主要监控的指标和日志有哪些?
主要设置了哪些告警?针对这些告警如何被处置?
以下是一份针对网站应用的 Runbook示例:
服务或应用名称:drbool博客系统
drbool.net是一套简单的通过PHP开发的博客应用程序。主要组件包括mysql数据库支持的用户信息管理模块和一个博客内容的发布/评论/后台管理模块。
元数据
代码库位于内部源代码库中 HTTP://10.1.11.11/CODES/DRBOOL
所有者:wang***。
问题升级:如果需要协助来解决此问题,请联系专家zhang**。
外部依赖关系:该系统无任何外部依赖关系
内部依赖关系
NGINX服务,运行在aws上。
mysql服务,运行在rds-drbool.drbool.net的一个RDS实例上。
技术栈
PHP 5.7
MYSQL(AWS RDS)
Nginx 1.15.16
监控指标和日志
指标
用户登录(计数)
用户退出(计数)
文章创建(计数)
文章删除(计数)
评论创建(计数)
评论删除(计数)
文章创建时间(计时)
文章删除时间(计时)
用户注册时间(计时)
用户登录时间(计时)
用户退出时间(计时)
应用日志内容:
登录日志:用户ID、状态(成功、失败)、IP地址、登录日期
文章创建日志:用户ID、状态(成功、失败)、IP地址、创建日期
评论创建日志:用户ID、状态(成功、失败)、IP地址、创建日期
告警
用户登录失败率
触发:当用户登录失败率在5分钟内超过5%时
原因:
潜在原因是错误的部署,需要检查最近的版本发布
暴力攻击,需要检查用户登录日志查看攻击的迹象
用户登录时间过长
触发:当用户登录所需时长指标超过1秒时
原因:
潜在的原因是错误的部署,需要检查最近的版本发布
检查mysql的性能问题
文章创建时间过长
触发:用户创建文章的时间走过1秒时
原因:
潜在的原因是错误的部署,需要检查最近的版本发布
检查mysql的性能问题
评论创建时间过长
触发:用户创建评论的时间超过1秒
原因:
潜在的原因是错误的部署,需要检查最近的版本发布
检查mysql的性能问题




