要想了解智能运维,首先需要知道几点:
- 运维是什么?
- 运维干什么?
- 为什么重视运维?
运维是什么?
要说运维,我先说说目前中国互联网的发展。
中国互联网的发展
- 第一阶段:
- 新浪、搜狐、网易等门户网站,解决了新闻信息的传播问题
- 第二阶段:
- 腾讯、阿里、百度等科技型,解决了社交、信息获取及电商等需求问题
- 第三阶段:
- 需要解决心理需求问题,直播、短视频、综艺、电视剧等
- 第四阶段:
- 区块链、自动驾驶、智能机器人等
我自己心里认为,运维的水平可以成为衡量一个公司(IT公司)技术实力的标准。
(因为不管是系统还是机器,实现功能只是一部分,稳定性更加重要!)从系统运行的各种环境,机房、网络、存储、物理机、虚拟机这些基础设施,再到数据库、中间件平台、云平台、大数据平台等,运维的侧重点不在于编程,而是对这类平台的使用和管理。
(企业管理也是一样的,产品再好,管理不行,最终也是失败的。)
运维干什么?
运维工程师(Operation Engineer)
- 工作范围:
- 服务器购买、租用和上架等基本管理
- 调整网络设备的配置管理和部署
- 服务器操作系统安装调试
- 测试环境和生产环境的初始化与维护
- 代码部署和管理(Git和SVN等)
- 设计和部署线上服务的监控和报警
- 服务安全性检测(防止漏洞和攻击)
- 数据库管理和调优
- 公司IT设备的资产管理和分配
- 大型公司中,可根据工作内容被细分为
- 网站和业务服务运维
- 系统运维
- 网络运维
- 数据库运维(DBA)
- 运维开发(DevOps)
- 运维安全
- 优势:
- 更容易诞生架构师
- 知道如何优化服务
- 如何使用资源利用最大化
为什么重视运维?
在业余的运维眼里,运维这个工作是什么特点?
- 处于软件生产链最末端
- 容易被“鄙视”
- 远离业务部门
- 老背锅
在专业的运维眼里,又是什么特点?(我不算专业的,我只是总结)
- 可以从运维升格为技术运营
- 可通过改善产品用户体验,从而提高DAU(Daily Active User)日活跃用户数量、营收和利润
- 和其他业务部门建立广泛而又建设性的合作
运维发展
- 人工 –遇到什么问题就解决什么问题,整理一堆的重复性高的资产台账
- 工具 –提高运维工作的效率(用别人开发好的工具,直接敲命令或双击运行)
- 自动化 –规范化、快速解决能力,需要一定的开发能力
- 平台化 –自动化脚本和工具的整合,降低了运维成本、降低系统风险概率、提高可用性
- 智能化 –建立在大数据和机器学习的技术上
运维的现状
- 故障率高
- 系统的复杂性高
- 大数据的环境
- 数据的采集
- 数据存储
- 数据的分析和建模 (数据不用来分析使用,存着来干嘛?)
最后我就总结一句:智能运维 AIOps
智能运维 AIOps (Algorithmic IT Operations)
利用大数据分析、机器学习等人工智能技术来自动化管理运维事务。Gartner公司提出来定义标准。
Gartner公司
- 全球最具权威的IT研究与顾问咨询公司
- 主要是迎合中型公司的需要
- 它希望使自己的业务覆盖到IT行业的所有领域
- 让自己成为每一位用户的一站式信息技术服务公司
智能运维干什么?
- 实时监控
- 实时报警
- 异常检测
- 故障根源分析
- 趋势预测
- 数据关联
智能运维的难题
- 海量数据的存储、分析和处理
- 实时数据和非实时数据
- 格式化数据和非格式化数据
- 需要索引的数据和只需要运算的数据
- 全量数据和抽样数据
- 可视化数据和告警数据
- 多维度、多数据源(主要是分析故障和预测趋势)
- 监控数据
- 告警事件
- 分析报表
- 日志检索
- 信息过载(告警数据过多)
- 数据的聚合
- 降低维度:聚类和分类
- 标准化和归一化
- 复杂业务模型下的故障定位
- 日志标准化:包含内容、格式、自己的业务线、服务层级等
- 全链路追踪
- SLA规范化:例如用响应时间来约定性能指标、用慢速比来衡量系统健康度。
智能运维基础设设施
- 开源数据采集技术 Filebeat、Logstash
- 分布式消息队列 Kafka、Redis、RabbitMQ
- 大数据存储技术
- 大规模数据离线计算分析 ETL、Hadoop
- 实时计算框架
- 时序数据分析框架
- 机器学习框架 TensorFlow
智能运维的技术
- 数据聚合与关联技术
- 数据异常点检测技术
- 故障诊断和分析策略
- 趋势预测算法
系统可用性(Availabiity)
Availability = MTBF/(MTBF + MTTR)
- MTBF –平均故障间隔时间
- 相邻两次故障之间的平均工作时间
- 间隔时间越短说明系统可靠性越高
- MTTR –平均修复时间
- 故障修复所需要的平均时间
- 越低说明故障修复越及时
运维在产品研发的主要职责
产品阶段 运维职责 设计阶段 稳定性评估、资源评估、资源申请和准备 开发阶段 环境部署、依赖库及包管理、操作系统维护、数据库准备等 测试阶段 测试环境部署、稳定性评估,从系统的稳定性和可运维性的角度提出开发需求 部署阶段 自动化部署、稳定性检验、可扩展部署等 线上阶段 实时监控、故障处理、容量管理 下线 资源回收、服务终止
运维涉及的常见技术和框架
功能描述 技术和框架 操作系统 Linux Ubuntu Window CentOS Redha Web Server Nginx Tomcat Apache 网络工具 tcpcopy curl 监控和报警系统 Grafana zabbix cacti 自动部署 Ansible saltstack 配置管理及服务发现 Puppet Consul Zookeeper 负载均衡 LVS HAProxy Nginx 传输工具 Scribe Flume 集群管理工具 Zookeeper 数据库 MySQL Oracle SQLServer 缓存技术 Redis Memcache 消息队列 Kafka ZeroMQ RabbitMQ Redis 大数据平台 HDFS Spark Hive Storm 大数据存储 HBASE MongoDB LevelDB 时序数据 Druid OpenTSDB 容器 Docker LXC 虚拟化 Openstack XenServer KVM VMWare
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/293521.html