孔祥文 沈辰楠 張重陽 任仕輝
(中國市政工程華北設計研究總院有限公司,天津 300074)
隨著企業(yè)信息化程度的不斷提高,服務器硬件設備、存儲設備、應用系統(tǒng)、中間件、數(shù)據(jù)庫等數(shù)量呈逐年遞增趨勢,對集中式服務器端/群等的提出了更多的考驗。動態(tài)了解企業(yè)信息化需求,合理分配網(wǎng)絡資源;保障信息系統(tǒng)的高效性、穩(wěn)定性、可靠性;及時發(fā)現(xiàn)網(wǎng)絡中潛在的各種風險并采取有效措施,都對企業(yè)日常網(wǎng)絡運維以及系統(tǒng)監(jiān)控工作提出了更高的要求。網(wǎng)絡故障的預警機制不夠完善,運維工程師的大部分時間和精力都花在處理簡單且重復的問題,而且有可能出現(xiàn)難以預見的連鎖反應,這種解決方式無法滿足對網(wǎng)絡故障預警機制的靈活性和可靠性的要求。維護IT基礎設計的穩(wěn)定是企業(yè)發(fā)展的基礎,也是開展業(yè)務的必要條件。通過建立監(jiān)控解決方案,構建了一套穩(wěn)定、實時的智能化監(jiān)控平臺不僅能夠規(guī)范化運維管理流程,有效提升運維工作的效率和服務質(zhì)量,實時采集硬件、操作系統(tǒng)、服務進程網(wǎng)絡設備等各類被監(jiān)控對象的指標數(shù)據(jù),從多角度掌握網(wǎng)絡及信息系統(tǒng)運行狀況,將有限的管理人員從繁雜的運維工作中解放出來,同時可以通過對監(jiān)控數(shù)據(jù)性能圖表的智能分析,為服務器系統(tǒng)重構和完善提供重要參考,對企業(yè)的標準化、平臺化與智能化推進具有重要意義。
主服務器Server底層運行的環(huán)境為Linux+PHP+MySQL,軟件環(huán)境以CentOS7(64位)操作系統(tǒng)、httpd、PHP和MariaDB為基礎。集成安裝官方RPM包,在此基礎之上導入源碼,安裝數(shù)據(jù)庫并修改配置文件,編譯生成監(jiān)控平臺管理界面。對主服務器及客戶服務器分別安裝Agent插件,網(wǎng)絡監(jiān)控平臺工作流程在此基礎上進行,Agent將獲取到的監(jiān)控網(wǎng)絡設備的數(shù)據(jù),實時/非實時地通過主動推送或者被動響應的模式傳輸給主服務器,將網(wǎng)絡參數(shù)以圖表形式進行數(shù)據(jù)可視化展現(xiàn),通過監(jiān)控平臺來實現(xiàn)告警的發(fā)送和分析,并具備一定的可擴展能力[1]。監(jiān)控平臺數(shù)據(jù)處理流程圖1所示。
圖1 監(jiān)控平臺數(shù)據(jù)處理流程Fig.1 Data processing flow of monitoring platform
Web服務器監(jiān)控對狀態(tài)碼、返回字符串等特定的數(shù)據(jù)進行比較和監(jiān)控,從而判斷Web服務的高性能和可用性[2]。
2.1.1 基于Web性能的監(jiān)控
HTTP狀態(tài)碼、響應時間和頁面加載速度是直觀反映Web服務的可用性和性能的指標。Web性能監(jiān)控通過幾個環(huán)節(jié)進行設置:(1)通過監(jiān)控平臺設置configure→Hosts→Web→Create Web scenario,建立可視化界面監(jiān)控模板;(2)在Web監(jiān)控中對登錄用戶的賬號和密碼設置變量;(3)定義URL全路徑和登錄回顯參數(shù)等模擬Web登錄行為的參數(shù)。在監(jiān)控系統(tǒng)的可視化界面可以實時查看服務的運行狀態(tài)。配置觸發(fā)器當頁面加載速度為零或者響應時間大于1000毫秒,并且持續(xù)時間大于5秒,或者HTTP狀態(tài)碼不是200時,監(jiān)控平臺提示服務運行異常的告警數(shù)據(jù)。
2.1.2 基于Web進程的監(jiān)控
HTTP服務的可用性,是實時判斷HTTP進程運行狀態(tài)的指標,通過幾點設置實現(xiàn)對其監(jiān)控:(1)net.tcp.listen[port]用于監(jiān)控服務器port是否處于開啟狀態(tài)。返回值1:開啟;返回值0:未開啟。(2)service.info[service,]用于監(jiān)控與Web服務相關聯(lián)的關鍵服務的進程狀態(tài)。返回值0:服務進程運行正常;返回值1:服務進程暫停;返回值6:服務進程停止;返回值255:服務進程不存在。
2.1.3 基于SNMP協(xié)議對網(wǎng)絡設備的監(jiān)控
針對網(wǎng)絡的核心傳輸中不能或者不方便安裝Agent插件的設備,包括打印機、交換機、路由器、UPS等網(wǎng)絡設備,需要采用SNMP協(xié)議進行數(shù)據(jù)信息的采集。通過命令行或者Web界面配置被監(jiān)控端網(wǎng)絡設備的SNMP協(xié)議支持,使用snmpwalk獲取SNMP數(shù)據(jù)。
2.2.1 服務器監(jiān)控
(1)CPU負載監(jiān)控如圖2所示。(2)網(wǎng)卡流量如圖3所示。
圖2 CPU負載監(jiān)控Fig.2 CPU load monitoring
圖3 網(wǎng)卡流量Fig.3 Network card traffic
2.2.2 網(wǎng)絡拓撲圖
監(jiān)控平臺拓撲圖用來直觀地圖形化地顯示設備的整體情況,并可以通過標記顯示不同的故障事件。監(jiān)控平臺如圖4所示。
圖4 監(jiān)控平臺拓撲圖Fig.4 Monitoring platform topology
監(jiān)控系統(tǒng)根據(jù)實際應用的需求,實時或非實時地進行數(shù)據(jù)采集和展示,通過第三方告警介質(zhì)可編程接口實現(xiàn)多種方式可定制化的告警模塊[3]。
通過關聯(lián)SMTP對報警郵件進行實時/非實時推送。郵件推送通過幾個步驟進行配置:(1)在/etc/zabbix/zabbix_server.conf配置文件中的SMTP地址、登錄用戶、授權碼等信息;(2)在/etc/zabbix/alertscripts/目錄下創(chuàng)建郵件Shell腳本程序zabbix_sendmail.py;(3)在監(jiān)控平臺報警媒介中配置自定義Shell腳本程序,并進行觸發(fā)及告警配置。
通過企業(yè)微信提供的接口調(diào)用相關的消息發(fā)送接口,在移動終端APP對告警消息進行實時/非實時推送。微信推送通過幾步驟進行配置:(1)在/etc/zabbix/alertscripts/wechat目錄下配置Shell腳本程序;(2)在監(jiān)控平臺Web報警界面中調(diào)用微信Shell腳本程序[4]。所配置的參數(shù)如圖5所示。
圖5 監(jiān)控平臺報警媒介Fig.5 Monitoring platform alarm media
隨著企業(yè)信息化規(guī)模的不斷擴大以及網(wǎng)絡設備及服務的增多,對網(wǎng)絡基礎架構和信息系統(tǒng)的運行進行監(jiān)控和管理的重要性與日俱增。本文通過對監(jiān)控平臺的開發(fā)與部署,以及深層次的應用實踐,實現(xiàn)了網(wǎng)絡應用的性能監(jiān)控和自動告警,為企業(yè)信息系統(tǒng)自動化、智能化提供了有效的支撐手段。在未來的工作中,將致力于針對監(jiān)控平臺分布式架構進行探索,并將跟隨企業(yè)云平臺的建設提供更多的網(wǎng)絡支持。