目前笔者工作环境基本是在自动化阶段,有些特殊任务还在人肉运维,也熟悉对于脚本、工具的使用。在云接触到云计算后,也玩过几个云服务器,对于ai方面有一点点认识。在论坛看到可以将AI和Ops结合到一起,对于运维来说是一个机会,以前在软件生产链最末端,容易被鄙视,也远离业务部门而老背锅,借助于AIOps升格为技术运营。
最近阅读的一本书《智能运维AIOps》,看着挺nb的,可是越看越觉得这本书不是我需要的一本书。因为笔者感觉是在凑字数,互联网思维为了赚快钱,而不是真正的一本技术书籍。虽然前面部分仔细阅读了,后面基本只是翻翻。前面部分总结得比较好,在此也分享一下自己得感想。
运维偏重的不是编程,而是环境、架构和平台的使用和管理。运维初期掌握系统的软硬件知识,进阶阶段开发服务于软件的软件,支撑业务系统的可靠运行,最高阶段就是反作用于系统的构建和运行,使得系统具有天然的可维护性,最大化系统的生产力。
运维分为四个阶段:纯人工运维阶段、脚本和开源工具阶段、平台建设阶段、智能运维阶段。目前笔者工作环境是在第二往第三阶段发展,对于shell、python都能够熟练使用来解决问题,对于ansible、zabbix等工具也可以应用来配置系统,也可以自己针对业务需求来开发一些辅助监控程序,来弥补监控的不足或者优化监控流程。
在运维工作中,快速解决问题、降低故障率、不断提高系统可用性是运维非常关键的职责。故障源于技术和产品占20%,流程失误占40%,人员疏忽占40%,也就是人机环管这四个方面的三个基本是构成故障的主要原因。每一类工作都不简单,但是这些领域都有成熟的解决方案,运维工作就是如何应用好这些工具来解决问题。处理复杂问题最基本的方法就是分类,每一个部分看上去就是一个可以解决问题。对数据、需求分类后,基本的框架就定下来了,剩下的工作就是集成使用这些工具。
filebeat轻量级采集工具,监控客户端指定目录或者指定文件、跟踪文件,将它们转发到目的。稳定可靠,会记录每次读取日志的offset值,自动流控,接收端处理缓慢,filebeat自动减缓读取日志的速度。消息队列可以以提高写入的并发性能和读取的并发性能,让系统简间的耦合度大大降低,实现业务处理的异步化。kafka具有高吞吐。低延时特点。
日志保留系统运行状态,还保留了系统业务处理逻辑。集中式储存最大的特点就是部署结构简单,日志接收服务器可以通过网络共享、rsync、网络传输等技术,将日志收集到大型主机上。但是存在单点问题。分布式存储可以解决这个问题,集中式存储可以使用RAID技术的冗余方式。
sed(非交互式编辑器)、awk(行处理)、python的pandas库库完成经典的文本处理和查询。python的不足之处在运行效率,优势在于开发效率和高可维护性。python的cpu密集型操作的性能低,io密集型操作用什么语言不重要,可以使用python做整个流程的框架,然后核心的cpu密集型操作部分调用c函数,这样效率和性能都不错。
传统的故障定位有监控告警型和日志分析型,监控告警型非常依赖经验,也不够精确,日志分析型对日志中的关键字来进行统计,但是系统较大时无法收集全部日志,一般用于事后追溯。
网友评论