要想了解智能運維,首先需要知道幾點:
- 運維是什么?
- 運維干什么?
- 為什么重視運維?
運維是什么?
要說運維,我先說說目前中國互聯網的發展。
中國互聯網的發展
- 第一階段:
- 新浪、搜狐、網易等門戶網站,解決了新聞信息的傳播問題
- 第二階段:
- 騰訊、阿里、百度等科技型,解決了社交、信息獲取及電商等需求問題
- 第三階段:
- 需要解決心理需求問題,直播、短視頻、綜藝、電視劇等
- 第四階段:
- 區塊鏈、自動駕駛、智能機器人等
我自己心里認為,運維的水平可以成為衡量一個公司(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
(參考書籍彭東等編寫的《智能運維--從0搭建大規模分布式AIOps系統》)