sysAK(青囊)系统运维工具集:如何实现高效自动化运维?| 龙蜥技术
简介:What is sysAK、典型工具介绍、开源 3 方面介绍了 sysAK 系统,目前 sysAK 工具集已经在龙蜥社区开源,并且在系统运维 SIG、跟踪诊断 SIG 一起共建,希望大家后期加入 SIG 一起讨论共建。
编者按:本文整理自「云栖大会龙蜥专场论坛」的技术分享。作者张毅,系统运维SIG 核心人员。另龙蜥专场视频已经上线至龙蜥社区官网,欢迎观看:云栖大会龙蜥专场论坛。
系统运维 SIG 已在龙蜥社区建立 SIG 组。目前 sysAK 工具集已经在龙蜥社区开源,并且在系统运维 SIG、跟踪诊断 SIG 一起共建,希望大家后期加入 SIG 一起讨论共建。本文将从技术角度分享 sysAK 系统。
一、 What is sysAK
sysAK 是我们去年才提的概念,但里面的功能来自于我们多年来在阿里百万规模的服务器运维经验。在系统运维过程中,资源监控与利用、问题排查与解决是核心诉求,因此 sysAK 覆盖系统运维的三大典型场景。
1、系统监控。除了常规的一些系统健康指标外,sysAK 还会针对各种系统资源提供更精细化的资源监控,帮助业务运维实现细粒度的运维调度和资源控制,进而高效运用资源。
2、系统诊断。这是对于典型的问题做分析的覆盖,比如说负载异常、网络抖动、内存泄漏、IO 毛刺、性能瓶颈、应用异常等等。
3、系统介入。这块更重要的一点是故障修复,因为我们的系统运维终极目标是减少或者避免业务损失,故障总是不可预期的会发生,发生之后我们能快速发现和分析,也需要对这个问题本身做一些修复或止血,所以 sysAK 也会提供一些系统不具备但常用的故障修复手段在里面。
覆盖比较全的场景做了可用工具集,其实还是不够的,另外一个目标是工具怎么做的好用。好用有很多因素,我认为至少要具备以下三点:
1、 对普通用户来说易懂。比如说现在的一些服务越来越多,系统越来越复杂,现在一些工具对运维来说要去了解背后的专业知识才能使用。运维工具输出结果要直达问题的核心,用户直接能看懂,不管是诊断结果或是修复建议。
2、 对运行系统来说影响少。工具本身要尽量减少对系统的扰动,sysAK 通过高性能实现来做,并通过统一的资源框架来做管理,工具可以随时随地常态化运行。这样的话,对系统问题及时发现是非常有好处的。
3、 对其他平台接口友好,便于被集成。sysAK 工具集可以做成标准化输出形式,在大型集群平台上也可以做集群化运维。
二、典型工具介绍
下面可根据一些分类场景的典型工具来看 sysAK 是怎么达到这些目的。
系统运维的话,Load 作为服务器运行负载的一个典型指标,经常被运维人员用于评价系统运行是否良好的一个关键因素,其计算本身是比较简单的,就只是简单恒量运行任务和 IO 等待任务的数量。对于运维人员来说,他可以方便的拿到当前是哪些进程导致 Load 高,但背后是什么导致,原因各种各样。系统错误或者硬件错误都可能会导致 Load 高,只是拿到进程情况,没有专业的操作系统知识是无法继续分析的。所以 loadtask 工具会进行全方位的系统分析,除获取进程运行栈外,还自动分析内存压力、cpu 压力、IO 压力、系统错误,并将这些因素和进程栈进行关联,跟当前进程对照,上下文结合,给出最后精确的 Load 异常原因,让运维人员直接根据这个作出决策。
内存泄露是内存问题的典型场景,对于内存泄露问题,通常我们的一些工具也是通过分配和释放、是否匹配的模式去识别泄露点在哪里,但这只是第一步工作。第二步工作才是最关键的,因为分配和释放不匹配其实是正常情况下也会出现,我们要对这个数据特征模式做分析,排除干扰因素,才能知道是否真的泄露了,而这块的工作花的时间是最多的,所以我们对于内核内存,通过以前的历史经验总结出来了一些模型,把数据分析的过程总结放在工具里面,我们通过这个工具可以自动快速的找到泄露点在哪个地方。
锁竞争分析工具,锁竞争是比较常见的业务效率低下或突发抖动的原因之一,通过静态分析我们可以找到锁的持有者是谁,但是一般业务抖动、长时间性能上不去,这是动态的锁的过程,ulockcheck 工具会跟踪锁的持有释放流程,对持有锁的时间时长和频率进行分析,真正判断出来到底是因为某一些任务持有过长还是业务竞争锁比较激烈,并且给出竞争场景的上下文,帮助业务开发人员精准判断出优化点在哪儿。
第四个是网络类问题,网络问题分析更是专业性极强的事情,通常需要抓包并分析数据报文,耗费大量时间。我们开发的 PingTrace 工具通过在内部封装自定义网络报文协议,在 server、clinent 对报文经过的全链路流程进行记录,除各个时间段进行精准时间统计外,还包括这个过程中所有的系统中断或者调度因素的影响,做综合性判断,把数据聚合出来,最后给出时延的精确原因。
第五个是性能瓶颈快速界定工具。业界有太多针对不同场景(从应用到硬件)的专业性能调优工具,找到性能瓶颈从程序或者系统级别去修改优化,我们接下来有一个议题也会讲性能调优工具。appscan 工具可能更侧重于运维人员,对运维人员来说,通常不会涉及到业务或系统具体怎么调优这么细致的力度,他更关注的是系统是否满足业务运行,哪一类资源是瓶颈,是否可以从运维手段上得到解决,因而除了帮助优化外,appscan 工具尽可能的从应用可能使用到资源的上去分析,帮助运维做出决策。
最后一个工具是ossre,这不是单独的工具,它其实是我们内部运行的自动化诊断专家系统,前端会分析数据、采集数据,后端会有大数据人工智能的方式去分析这个系统能存在的问题或者是已知问题。其前端集成到了 sysAK 中,也可单独使用,对于一些不需要后端大量数据也可分析出的已知问题给出解决方案。
三、开源
由于不断发展和变化的复杂业务环境,工具集也需要持续迭代,以覆盖更多的场景,因此希望通过社区合作,共同打造出这个跨平台的统一工具集,为此,工具集支持多种语言格式,c、shell、python、go 等,方便不同语言习惯的开发者进行开发,快速集成;同时针对需要采集系统内核数据的情况,也同时兼容 Linux kernel module 和 eBPF 两种技术,对内核版本不做限制。
目前 sysAK 工具集的代码已经在龙蜥社区进行了托管,并且在系统运维 SIG、跟踪诊断 SIG 中进行开源,希望大家后期加入 SIG 一起讨论共建。谢谢!
本文为阿里云原创内容,未经允许不得转载。
sysAK(青囊)系统运维工具集:如何实现高效自动化运维?| 龙蜥技术的更多相关文章
- 自动化运维工具-Ansible之3-playbook
自动化运维工具-Ansible之3-playbook 目录 自动化运维工具-Ansible之3-playbook PlayBook初识 YAML语法 PlayBook部署httpd PlayBook实 ...
- 自动化运维工具-Ansible之2-ad-hoc
自动化运维工具-Ansible之2-ad-hoc 目录 自动化运维工具-Ansible之2-ad-hoc Ansible ad-hoc Ansible命令模块 Ansible软件管理模块 Ansibl ...
- 自动化运维工具-Ansible之7-roles
自动化运维工具-Ansible之7-roles 目录 自动化运维工具-Ansible之7-roles Ansible Roles基本概述 Ansible Roles目录结构 Ansible Roles ...
- CheungSSH国产自动化运维工具开源Web界面
CheungSSH web2.0 发布文档 CheungSSH 简介 CheungSSH是一款国人自主研发的Linux运维自动化管理服务器软件,秉着为企业降低运营成本,解放管理员双手和自动化生产的理念 ...
- 用自动化运维工具解放IT运维
何谓自动化运维,即在最少的人工干预下,结合运用脚本与第三方工具,保证业务系统7*24小时高效稳定运行.这应该是所有业务系统运维终极目标. 我们对运维的要求通常是: 1.事前预警 在故障出现之前,管理人 ...
- 自动化运维之Saltstack
第三十八课 自动化运维之Saltstack 目录 一.自动化运维介绍 二. saltstack安装 三. 启动saltstack服务 四. saltstack配置认证 五. saltstack远程执行 ...
- 自动化运维与Saltstack
一.自动化运维介绍 1.自动化运维产生背景 传统的IT运维是将数据中心中的网络设备.服务器.数据库.中间件.存储.虚拟化.硬件等资源进行统一监控,当资源出现告警时,运维人员通过工具或者基于经验进行 ...
- 真正云原生的智能运维体系,阿里云发布ECS自动化运维套件
云计算的发展,推动了自动化运维.DevOps.AIOps 等趋势的兴起,在业务快速变化的今天,企业希望通过一套自动化运维的专家系统提高运维效率,为业务提供支撑. 传统的方式下,打造一套成熟的 DevO ...
- 【目录】Python自动化运维
目录:Python自动化运维笔记 Python自动化运维 - day2 - 数据类型 Python自动化运维 - day3 - 函数part1 Python自动化运维 - day4 - 函数Part2 ...
- python自动化运维篇
1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...
随机推荐
- eclipse错误之Errors occurred during the build. Errors running builder 'JavaScript Validator' on project
把JavaScript Validator去掉.去掉的方法是:选择一个项目--右键Properties--Builders(排第二)--点一下右侧会有四项--取消第一项"JavaScript ...
- vscode远程登陆免密码
A,B双方通信,A想向B发送信息,又不想让别人知道,使用非对称加密:若A向B发送信息,A需要知道B的公钥简称B-pub,用B-pub加密信息后 发送给B,B再用自己的私钥B-prv解密出信息. A想验 ...
- AntSK 0.2.1 版本揭秘:动态加载dll,驱动Function Call新境界!
在.NET的无限宇宙中,动态加载dll似乎一直是操控代码生生不息的魔杖.今天,我将与您探讨如何通过AntSK 0.2.1 版本灵活运用dll,将Function Call的强大功能插拔自如地融入项目之 ...
- 记录-js基础练习题
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 隔行换色(%): window.onload = function() { var aLi = document.getElementsB ...
- 如何使用 JavaScript 导入和导出 Excel
前言 在现代的Web应用开发中,与Excel文件的导入和导出成为了一项常见而重要的任务.无论是数据交换.报告生成还是数据分析,与Excel文件的交互都扮演着至关重要的角色.本文小编将为大家介绍如何在熟 ...
- 基于SCCB协议的FPGA实现
SCCB协议 1.协议内容 SCCB协议常用于vo系列的摄像头的寄存器配置中,是有IIC协议演变而来.本来,本人接触这个协议也是想配置摄像头用于摄像模块.但是,由于配置寄存器实在是太多,而且需要找的资 ...
- 通过位运算修改指定bit位的值
通过位运算将指定位的值置0或1 问题样例 假如现在有一个8bit二进制数A,其可以为任何值,所以这里不妨先设A=(xxxxxxxx)2,{x|0,1} 现在需要你将A的几个指定位修改为1或0,例如将A ...
- #随机#CF1198F GCD Groups 2
题目 将 \(n\) 个数分为两组,使得两组的GCD都为1,求具体的分组情况 分析 考虑直接打乱 \(n\) 个数,如果能使第一组GCD减小就减小,否则丢到第二组, 由于打乱后出错的概率会减小,所以r ...
- #区间dp#CF1114D Flood Fill
题目 有一个长度为\(n\)的颜色序列,在游戏前选择一个固定的位置, 若当前轮该位置的颜色为\(x\),那么可以将所有颜色为\(x\)的连通块改为任意颜色, 问最少进行多少轮使得区间\([1,n]\) ...
- OpenHarmony社区运营报告(2023年4月)
本月快讯 • 2023年4月9日,OpenAtom OpenHarmony(以下简称"OpenHarmony")3.2 Release新版本发布.相比一年前的OpenHarmo ...