劉蘊華


隨著民航IP網的建設,越來越多的運維需求被提出,對于網絡中心而言,轉報、ATM、衛星網網絡的監控已經非常成熟,但是對于網控中心服務器的性能監控尚有空白,在這里我們將探討Collectd在民航網絡服務器中的應用前景及意義。
首先Collectd是什么,說到Collectd,不能不談到APM,即Application Performance Monitoring——應用程序性能監控系統,現代化的運維非常依賴于應用性能監控系統,類比于民航數據通信網的網管,其作用都是在應用或者線路出現問題的時候及時通知維護人員。
Collectd的作用就是負責收集系統健康度信息,InfluxDB負責基于時序存儲收集到的數據(也可以替換成Elasticsearch等),Grafana負責監控數據的報表展示。Collectd作為定期收集系統和應用程序的性能指標的守護進程,可以使用不同方式存儲這些指標值。當系統運行和存儲信息的時候,Collectd會周期性統計系統的相關統計信息,并展示在grafana中(Grafana是一個可視化面板,有著非常漂亮的圖表和布局展示,功能齊全的度量儀表盤和圖形編輯器),同樣需要指出的是,Grafana可以接入zabbix源,這為今后實現多樣性的告警形式成為了可能,zabbix可以接入企業微信號,通過微信來通知維護人員。一圖勝千言,這些數據在grafana中會變成神奇的圖形。
我們通過已經搭建好的Grafana圖形來看問題,從上面這張圖可以很清楚的看出,服務器在13:30到16:00期間出現了很不穩定的狀態,CPU的使用量上升到了百分之八十三,這一項使服務器性能水平處在危險的邊緣,而這可能并不會直接反映在用戶使用中,但是卻已經成為了安全隱患,圖中的問題是因為在14:00-16:00這個過程中,程序產生了大量的報錯日志內容并進行壓縮,導致CPU使用率急劇提升,這樣的數據可以使運維人員在服務器真正出現生產問題之前進行應對,從而提升保障水平。
隨著民航業的發展,網絡性能勢必隨著進行資源的擴充,由于系統性能有了記錄,可以記錄系統使用高峰期(瓶頸),Collectd使得在高峰到達之前進行資源擴容成為可能。類比于阿里巴巴雙11的資源擴充策略,多是依賴于這類性能監控軟件的采樣結果,采樣并分析每年的用量高峰,來分配服務器資源,機器會記錄真實的使用狀態,而是否需要擴容,擴容哪些資源,很多情況是憑借老員工的經驗無法得來的。
Collectd可以監控的數值非常多,從CPU、內存、SWAP使用情況,到磁盤空間使用率,網絡帶寬利用率等,都可以通過不同的插件,配置來實現,Collectd支持多服務器監控,這對于機器眾多的機房而言,大幅的節省了每臺服務器需要安裝Collectd終端需要消耗的資源,通過network插件,可以將一個Collectd配置成為server,其他的配置成為client,然后client會向服務器端發送數據,所有的統計都會記錄在服務端。
Grafana圖表內容均通過維護人員手工錄入,雖然很麻煩,但是只需要一次建立就一直可以使用,同時,Grafana可以通過不同的ip地址,對設備進行分類,如監控某一應用的使用,可以單獨顯示為不同的圖表,如轉報服務器,華為服務器等。Grafana的數據保存時間可以自由設置,具體的時間可以設置為5天,也可以不設限制,但是對于網頁的顯示來說會造成一定的負擔,導致頁面的崩潰(視機器性能而定)。
上圖為Collectd的架構圖,圖中可以看到Collectd進程通過和各種插件交互完成對數據的采集。相對于zabbix,nagios這種更適合于企業級(更多應用服務器),且需要專人負責維護的大型監控應用來說,使用Collectd相較于其他收集系統相關指標的工具,有一定的優點,比如嵌入式系統,C 語言開發(高效)、無需系統 cron 支持(獨立)、簡單易用,此外他還包含有超過70多種插件以及文檔支持。Collectd 除了解析 configfile 其他一切都是在插件下完成,這意味著主守護進程沒有任何外部依賴,現在已知的可以應用在 Linux,Solaris,Mac OS X上,AIX,FreeBSD,NetBSD 和 OpenBSD 等系統中,Collectd 配置簡單:除了那些需要加載的模塊,你不需要配置其他任何東西。Collectd 不是腳本,而是運行在內存里面的進程,不需要每次記錄都啟動繁重的解釋器,有 nice 級別的 10 秒鐘的默認解析。Collectd 能夠處理任意數量的主機,從一個到幾千個,而且可以通過利用該資源盡可能高效。Collectd 支持 SNMP,該 SNMP 插件提供了一個通用接口 SNM 協議,可以用它來查詢值,并基于 Collectd 機制處理他們,例如發送他們做其他地方的服務器實例。Collectd 支持各種自定義擴展,C-plugins,Perl-plugins,Java-plugins,Python-plugins,UNIX 域套接字,Java 的 MBean 的支持等。
由于歷史原因,民航網控中心對于用戶每天的訪問量高峰期無法確定,對于網絡和設備資源的高峰期占用無從掌控,盡管服務器的資源使用情況現在并沒有對實際的業務產生影響,但是對于資源占用情況的掌握,可以更加合理的使用資源,合理進行資源分配,預防高峰期帶來的服務器宕機,夯死的情況發生。