<s id="xcxsa"></s><rp id="xcxsa"></rp>

  • <span id="xcxsa"><pre id="xcxsa"><rt id="xcxsa"></rt></pre></span>
    <dd id="xcxsa"></dd><tbody id="xcxsa"></tbody>
        首頁 運維干貨最全面系統的Zabbix講解 _ 含源碼&監控類型整理

        最全面系統的Zabbix講解 _ 含源碼&監控類型整理

        運維派隸屬馬哥教育旗下專業運維社區,是國內成立最早的IT運維技術社區,歡迎關注公眾號:yunweipai
        領取學習更多免費Linux云計算、Python、Docker、K8s教程關注公眾號:馬哥linux運維

        主講人:王鴻杰,云智慧/企業效能部/架構師
        講師簡介:云智慧架構師,PHP/PECL 開發組成員,PECL/SeasClick、PECL/SeasLog Maintainer。6 年研發經驗,2018 年加入透視寶團隊,致力于 APM 產品的架構與研發,專注于服務的性能分析與優化。2021 年加入效能工程團隊,為高效而生,立足于使用最少的資源來解決最大的問題,研究各種不同的 bot 技術,讓整個團隊更高效運轉。

        公司簡介:云智慧集團成立于2009年,是國內領先的全棧智能業務運維解決方案服務商。經過多年自主研發,公司形成了從IT運維、電力運維到IoT運維的產業布局,覆蓋ITOM、ITOA、ITSM、DevOps以及IoT幾大領域,為金融、政府、運營商、能源、交通、制造等上百家行業的客戶,提供了數字化運維體系建設及全生命周期運維管理解決方案。云智慧秉承Make Digital Online的使命,致力于通過先進的產品技術,為企業數字化轉型和提升IT運營效率持續賦能。

        從本篇內容你能得到:

        1. Zabbix是什么、能做到什么
        2. Zabbix組件詳解、架構和處理工作流程
        3. Zabbix各監控項類型的采集實現(SNMP、ICMP、Ping、簡單檢查等)
        4. Zabbix 模板組成結構與實現
        5. Zabbix Agent源碼結構與實現分析
        6. Zabbix 自動發現邏輯的源碼結構與實現詳解

        全棧監控是什么?

        監控一切需要監控的東西,只要能夠想到,能夠用命令實現的都能用來監控。

        基礎層:主要偏硬件,監控主機和底層資源。比如cpu、 內存、網絡吞吐、硬盤I/O、硬盤使用等

        中間層:包括nginx、Redis、MQ、MySQL、 Tomcat等

        應用層: HTTP訪問的吞吐量、響應時間、 返回碼、調用鏈路分析、性能瓶頸, 還包括用戶端的監控等

        日志:syslog、nginx log、mysql log等

        最全面系統的Zabbix講解 _ 含源碼&監控類型整理插圖

        為什么使用Zabbix?

        目前開源的解決方案中,Zabbix和Prometheus是使用較多的兩個方案,這兩個方案的區別和優勢是什么?

        最全面系統的Zabbix講解 _ 含源碼&監控類型整理插圖1

        對于偏傳統的行業,云環境較少的場景下,是比較適合于Zabbix的使用,當然Prometheus是未來發展的方向。

        Zabbix是什么?

        Zabbix源碼主要組成:

        frontends:php,主要負責前端的業務操作

        Zabbix agent:采集數據

        Zabbx server:同步配置,處理數據,分析告警等。

        最全面系統的Zabbix講解 _ 含源碼&監控類型整理插圖2

        Zabbix處理流程:

        主要由四部分組成:

        Portal-DB-Server-Agent

        詳細的工作流程如下:

        最全面系統的Zabbix講解 _ 含源碼&監控類型整理插圖3

        詳細流程可查看下圖:

        最全面系統的Zabbix講解 _ 含源碼&監控類型整理插圖4

        Zabbix是怎么做的?

        Zabbix Process

        1. 當添加(自動發現)一個 host,并且為 host 添加對應的模板的時候,Portal 會解析出來對應的 item, preprocess,trigger 然后放在對應的 Db 表里面。
        2. Server 的 dbconfig_thread 會從 Db 拿到對應的數據放在共享內存中,然后poller_thread 進程讀取到對應的 items,開啟與 Agent 建立連接,遍歷 items 從 Agent(snmp,簡單檢查 等) 獲取到對應的指標數據
        3. 然后將 指標數據給 preprocessing_manager_thread 進程,preprocessing_manager_thread 進程會安排對應的preprocessing_worker 進程對數據進行 preprocess
        4. 最后由 dbsyncer_thread 進程將數據放入 Db 中,Portal 界面從 Db 拿到對應的數據信息繪制和顯示
        5. dbsyncer_thread 同步數據到DB,遍歷數據 并計算 expression 表達式計算指標,最后觸發 escalator_thread 和 alerter_thread 做出相應的動作。
        6. 對于可監控指標,Agent 自帶多種可監控指標 cmd,Agent 只能監控內置的監控指標,可以通過插件拓展 可監控指標。

        Zabbix Server

        • dbconfig_thread: 配置同步到共享內存,保證所有進程都可讀
        • poller_thread: 主動監控,解析 items 調用 Agent
        • *trapper_thread: 收集 Agent 上報上來的數據
        • pinger_thread: 定期 ping 所有監控主機,簡單檢查 ICMP
        • *alerter_thread: 告警消息處理進程從 IPC 讀出需要發動的消息,發出告警
        • housekeeper_thread: 管家進程,過期數據清理
        • discoverer_thread: 主機、服務的自動發現
        • escalator_thread: 根據觸發器的值判斷是否告警,具體執行什么動作
        • dbsyncer_thread:同步數據到 db,并計算觸發器值也同步到db
        • selfmon_thread: 自監控
        • preprocessing_worker_thread: 數據預處理進程,數據從 poller 和 trapper 進程過來

        Zabbix Agent

        • collector_thread 周期采集基礎信息,主要是內存和 CPU,儲存于共享內存中
        • listener_thread 用于接收 server 或者 proxy 分配的的采集任務,被動采采集
        • active_checks_thread 主動采集上報

        指標類型

        按進程(處理方式)劃分指標類型

        Poller 進程(被動)

        1. snmp|SNMP代理檢查
        2. simple_checks|簡單檢查(應用層狀態檢查)
        3. calculated|計算監控項
        4. internal|Zabbix內部檢查
        5. ssh_checks|SSH檢查
        6. telnet_checks|Telnet檢查
        7. external|外部檢查
        8. aggregate|匯總檢查
        9. odbc_checks|ODBC監控

        httppoller 進程(被動)

        • http|HTTP 檢查

        ipmi_poller_thread 進程(被動)

        • ipmi|IPMI檢查

        icmp pinger 進程(被動)

        • simple_checks|簡單檢查(icmp 檢查)

        trapper 進程(主動)

        1. trapper|捕捉器監控項
        2. log_items|日志文件監控
        3. snmptrap|SNMP traps

        preprocess 進程(Follow me)

        • dependent_items|相關項目(從屬監控項)

        按客戶端依賴劃分指標類型

        無依賴

        1. snmp|SNMP代理檢查
        2. ipmi|IPMI檢查
        3. simple_checks|簡單檢查
        4. external|外部檢查
        5. odbc_checks|ODBC監控

        依賴其他監控項

        1. calculated|計算監控項
        2. aggregate|匯總檢查

        依賴第三方

        1. zabbix_agent|Zabbix代理檢查 (Agent)
        2. snmptrap|SNMP traps (snmptrap)
        3. log_items|日志文件監控 (Agent)
        4. ssh_checks|SSH檢查 (ssh 秘鑰或密碼)
        5. telnet_checks|Telnet檢查 (Telnet Server和 Telnet 密碼)
        6. trapper|捕捉器監控項 (Zabbix Sender)
        7. http|HTTP 檢查 (http 接口)

        IDEA

        被動監控對 Zabbix Server 來說會有大的壓力

        從監控類型來看,Zabbix 更多的是被動監控,主動監控只有 Agent Active、SnmpTrap,Sender,但是由于 Zabbix Agent 的強大,很多場景下主動監控的指標覆蓋度完全能跟被動監控硬懟。

        所以要根據具體監控場景,主動和被動互相搭配,耗時的指標更加傾向于主動監控。

        Zabbix監控項類型梳理

        Zabbix的自動發現

        最全面系統的Zabbix講解 _ 含源碼&監控類型整理插圖5

        自動發現是伴隨著指標監控來的,當發現能有采集到預設的指標時,這臺主機就會被標記為可用,然后觸發預設的Action,通知或者自動添加監控模板等。

        自動發現分類

        1. 簡單檢查類
        2. Agent 類型
        3. snmp 類型
        4. ICMP (ping) 類型

        自動發現流程

        1. 配置 IP 段
        2. 配置自動發現指標
        3. 配置發現動作 Action
        4. 發現主機后添加 event
        5. escalator_thread 進程處理對應的 event

        Zabbix的模板結構

        模板結構

        最全面系統的Zabbix講解 _ 含源碼&監控類型整理插圖6

        從屬指標

        最全面系統的Zabbix講解 _ 含源碼&監控類型整理插圖7

        計算指標

        最全面系統的Zabbix講解 _ 含源碼&監控類型整理插圖8

        Agent源碼

        最全面系統的Zabbix講解 _ 含源碼&監控類型整理插圖9

        寫在最后

        近年來,在AIOps領域極速發展的背景下,IT工具、平臺能力、解決方案、AI場景及可用數據集的迫切需求在各行業迸發?;诖?,云智慧在2021年8月發布了AIOps社區,旨在樹起一面開源旗幟,為各行業客戶、用戶、研究者和開發者們構建活躍的用戶及開發者社區,共同貢獻及解決行業難題、促進該領域技術發展。

        成立近半年,社區先后開源了數據可視化編排平臺-FlyFish、運維管理平臺OMP、云服務管理平臺-摩爾平臺、Hours算法等產品。其中FlyFish斬獲中國開源云聯盟2021優秀開源項目獎。OMP運維管理平臺入選2021 年度 OSC 中國開源項目「最受歡迎項目」榜單。并在業內首次開源了智能運維開源數據集-GAIA數據集,填補了AIOps開源集數據領域的空白。

        本文鏈接:http://m.abandonstatusquo.com/40816.html

        網友評論comments

        發表評論

        您的電子郵箱地址不會被公開。

        暫無評論

        Copyright ? 2012-2022 YUNWEIPAI.COM - 運維派 京ICP備16064699號-6
        掃二維碼
        掃二維碼
        返回頂部
        十分钟免费观看视频高清下载