prometheus構架圖
監控和報警
prometheus優勢
•監控資料的精細程度 絕對的第⼀ 可以精確到 1~5秒的採集精度 4 5分鐘 理想的狀態 我們來算算
採集精度 (儲存 效能)
• 集群部署的速度 監控指令碼的製作 (指的是熟練之後) ⾮常快速 ⼤⼤縮短監控的搭建時間成本
• 周邊外掛程式很豐富 exporter pushgateway ⼤多數都不需要⾃⼰開發了
• 本⾝基於數學計算模型,⼤量的實⽤函式 可以實現很複雜規則的業務邏輯監控(例如qps的曲線
彎曲 凸起 **的 ⽐例等等模糊概念)
• 可以嵌⼊很多開源⼯具的內部 進⾏監控 資料更準時 更可信(其他監控很難做到這⼀點)
• 本⾝是開源的,更新速度快,bug修復快。⽀持n多種語⾔做本⾝和外掛程式的⼆次開發
• 圖形很⾼⼤上 很美觀 ⽼板特別喜歡看這種業務圖 (主要是指跟grafana的結合)
不足之處
• 因其資料採集的精度 如果集群數量太⼤,那麼單點的監控有效能瓶頸 ⽬前尚不⽀持集群 只能
workaround
• 學習成本太⼤,尤其是其獨有的數學命令⾏(⾮常強⼤的同時 又極其難學《=⾃學的情況下),
中⽂資料極少,本⾝的各種數學模型的概念很複雜(如果沒⼈教 ⾃⼰⼀點點學英⽂官⽹ 得 1-3 個
⽉⼊門)
• 對磁碟資源也是耗費的較⼤,這個具體要看 監控的集群量 和 監控項的多少 和儲存時間的長短
• 本⾝的使⽤ 需要使⽤者的數學不能太差 要有⼀定的數學頭腦
較完善的監控系統體系
1)監控系統設計
設計部分包括以下內容
評估系統的業務流程,業務方向不同,程式**不同,系統構架不同
對於各個地方的細節,都需要一定程度的認知,才是監控設計的源頭
分類列出所需監控項種類
一般可分為: 業務級別監控/系統級別監控/網路監控/程式**監控/日誌監控/使用者行為監控/其他型別監控
大的分類,還有更多細小分類
例如網路監控:對網路狀態的監控,例如丟包率,延遲等等
日誌監控:監控中的重頭戲,往往單獨設計和搭建,各種種類的日誌都需要採集
程式監控:一般需要和開發人員配合,程式中嵌入各種介面,直接獲取資料或者特質的日誌格式
監控技術方案軟體選取
各種監控軟體層出不窮,開源的 商業的 自行開發的幾百種方案可選
架構師憑藉一些因素,開始選材
針對企業的架構特點 大小種類,人員多少等等選取合適的技術方案
監控體系人員安排
運維團隊任務劃分,責任到人,分塊進行
2)監控系統的搭建
3)資料採集的編寫
例如: shell/python/awk/lua(nginx安全控制 功能分類)/php/perl/go等等
shell:運維入門指令碼,任何和效能,後台,介面無關的邏輯都可以實現最快速的開發
python:各種擴充套件功能,擴充套件庫,功能豐富
awk:本身是乙個實用命令,也是一門龐大的程式語言。結合shell或者獨立都可以使用
lua:多用於nginx模組結合,是比較新的乙個語言
php:老牌子的開發語言,在大型網際網路開發中,目前有退潮趨勢,不過在運維開發中還是很依賴php
perl:傳說中對文字處理最快的工具(但是**可讀性不強)
go:新型的語言 目前在開發和運維中很熱,在各種後端服務邏輯編寫上開發速度快
作為監控資料的採集,首推shell和python
資料採集的形式分類
一次性採集:例如我們使用比較簡單的shell + crontab 按定時任務
優點:穩定性比較好,不容易出現錯誤和效能瓶頸,開發邏輯簡單實現快速
缺點:對於有些採集專案實現起來不夠智慧型,也不到位。例如日誌的實時採集
後台式採集:採集程式以守護程序執行在linux後台,持續不斷地採集資料
優點:後台採集程式 資料準確性高,採集密度精確,管理方便
缺點:如果開發不夠仔細,會出現記憶體洩漏,殭屍程序 效能瓶頸等問題,且開發時間較長
橋接式採集:本身已後台程序執行,單採集過程不能獨立,以橋接方式採集資料
監控的資料和演算法其實非常依賴運維架構師對linux操作系的各種底層知識的掌握
如果我們使用老式傻瓜式的監控nagios,裡面的監控指令碼很全面,生成報警規則和閾值也很簡單,缺點也顯而易見;監控太粗糙,實用性不強,另外也不利於希望提高的同學
業務級別監控的演算法 運維自身無法做到十分專業
監控圖形 曲線qps**,**,qps和歷史資料的比較方法,等等這些都屬於業務級別的監控閾值型別
需要有專業的資料分析人員的協助 才可以算出優良的演算法
例如:如果我現在想針對qps**率進行報警計算,那麼用什麼樣的公式針對我們的業務型別更貼切
計算當前5分鐘內的平均值《乙個固定數值的時候 報警合適
計算當前10分鐘的總量然後和前乙個小時同一時間段比較
計算當前1小時的平均值和過去一周內每一天同一時間段的時間比較合適
這些資料演算法和linux無關,只有非常專業的資料計算團隊,才可以給出乙個合理的演算法
監控穩定測試
不管是一次性採集,還是後台採集,只要是部署在linux都會多多少少產生一定影響
監控自動化
監控客戶端的批量部署,監控服務端的ha安裝,監控專案的修改,監控專案的監控集群變化
這裡給出幾個例項
puppet(配置檔案部署)
jenkins(持續整合)
cmdb(運維自動化的最高資源管理平台和理念)
監控圖形化工作
採集好的資料和準備好的監控演算法,最終需要乙個好的圖形展示
grafanna的使用和搭建
Nginx運維 企業級優化
一 優化引數 1 引數與linux引數優化一致 2 nginx的健康檢查 二 keepalived介紹 1 keepalived服務介紹 2 keepalived故障切換轉移原理 3 vrrp協議介紹 4 keepalived工作原理 三 安裝keepalived 2 複製keepalived的啟動...
第十講 企業級監控資料採集指令碼開發實踐
第十講內容 pushgateway 的介紹 pushgateway 的安裝和運 和配置 定義編寫指令碼的 法 傳送pushgateway 採集 使 pushgateway的優缺點 pushgateway 的介紹 pushgateway 是另 種採 被動推送的 式 不是exporter 主動獲取 獲取...
企業級自動化運維工具Ansible實戰課程
什麼是ansible?ansible是新出現的自動化運維工具,基於python開發,集合了眾多運維工具 puppet chef func fabric 的優點,實現了批量系統配置 批量程式部署 批量執行命令等功能。ansible是基於 paramiko 開發的,並且基於模組化工作,本身沒有批量部署的...