如何配置伺服器自動監控並報警?

想監控伺服器的服務異常.

當伺服器上的服務異常退出時,發送簡訊到開發人員人手上. 然後處理異常.

有沒有什麼比較好又比較廉價的方案來做這件事呢?

各位大牛推薦推薦吧.


監控報警永遠是運維工作的一大部分工作,也是一個很大的話題。

對於公司而言,有兩個選項,使用再有產品加改造/完全自己寫。

也有各自的說辭,不重複造輪子/更加適合自己的公司。

再有產品又分商業和開源兩種,

商業主要有HP的Openview,IBM的Tivoli,CA的Unicenter和BMC的ProactiveNet Performance Management Suite。

開源的主要有Nagios/Cacti/Zabbix/Zenoss/openNMS等等。

一般來說,傳統企業和像金融類的行業更偏向於商業軟體,一個是因為他們更有錢,計算機專業人才缺少,另外一個是責任轉移,因為商業軟體公司有技術支持,出現問題時更容易找到人解決。

而開源軟體是互聯網公司的喜好,Free。Free分兩方面來講,一個是錢上的Free,不用花錢就能用,另一個是代碼上的Free,我們能很輕易拿到軟體的源代碼,甚至現在N多的開源軟體都把項目管理系統,需求,Bug之類的開放在互聯網上,加之Github,我們可以看到每一個Patch的情況。 我們可以了解作者的思路,如何解決的問題,我們自己也可以在這之上修改並貢獻到項目中。

但,無論如何,這類東西基本上就分接下來這幾部分:

1. 客戶端數據抓取

最基礎是的硬體信息,如伺服器廠家、CPU型號、主板廠家型號、內存硬碟容量等等,這些內容基本是固定的,一般會存在CMDB資料庫中,用於管理資產。

然後是硬體運行的信息,這裡也分軟硬兩部分:

1)如CPU溫度,機箱溫濕度,風扇轉速,電壓或是磁碟的SMART信息等等

2)CPU使用率,內存/SWAP使用情況,磁碟IO/容量,網卡使用帶寬,壞包率等。

接下來是應用軟體層面的狀態,同樣是二個部分,或者說是兩個層面

1)進程是否運行,如Nginx進程是否存在,80埠是否監聽

2)應用軟體內部的狀態,例如Nginx的連接數,帶寬使用率,JVM的HeapMemory,GC的情況,Session等等,對於MySQL這樣的資料庫而言監控的項目就更多了。基本上,無論是Nginx,Memcached或是Varnish,各個開源軟體都會有相應的模板,來監控它們內部的運行狀態。

再往上走就是業務系統的狀態監控了,頁面是否正常訪問,那個介面是否正常工作。再往深里走,可以定義一些介面調用查看庫內是否已經快空的,定義一些SQL查詢確定業務系統的運行狀態,這都是可以監控的。

2. 信息集中

上面所講的數據抓取,大部分是在本機完成,然後發送至監控伺服器,也有一部分是在伺服器直接抓取。這在小機器量的情況下是沒問題,但當伺服器數量增加,機房數量增加的時候,一台伺服器就可能搞定。這中間就要有一個Proxy的角色,它來負責直接和客戶端通訊,拿到數據,也自己抓一部分數據,再傳遞給中心伺服器。

3. 數據存儲

4. 信息展示

5. 錯誤報警

6. 分析報告

to be continued...


如果是初創型公司,機器規模和工作流轉沒有那麼複雜的情況下。運維監控和報警,都利用 Zabbix 和一些報警聚合服務。

先來說說,我們公司如何利用 Zabbix 監控和報警的吧。

Zabbix 配置報警

其實線上的教程很多:Zabbix 的圖文安裝教程 。

下面自己 Zabbix 在添加伺服器監控以及監控報警方面總結下心得體會吧。

Zabbix 默認的語言是英語如果覺得使用不習慣可以自己漢化下,同樣網上有相關的解決方法這裡就不多說了。接下就先介紹下添加主機監控的流程。

一、系統配置---&>主機---&>Create host

二、設置主機名字---&>監控主機所屬組---&>監控主機IP地址---&>所屬模板

自此在 Zabbix 中就成功添加了一台新的伺服器。下面介紹下 Zabbix 如何配置監控報警。

在告警這塊 Zabbix 默認只支持郵件,如果需要簡訊告警還需要進行簡訊網關對接,複雜度較高。同時我認為簡訊的告警並非是一個好的方式,雖然發送了告警信息,同樣會存在疏漏的情況,而且這種情況發生的概率並不是很低。所以這裡就以郵件配置為例來介紹下。

一:添加報警的處理方法

1、打開zabbix的管理---&>處理方法---&>create media type

這裡為了方便就以腳本發郵件的方式來報警,腳本名字為mail.py。這裡需要重點關注一下的是腳本存放位置,我的腳本是放在/usr/local/zabbix/bin/目錄下面,這裡偷下懶 就不寫絕對路徑了,腳本的路徑設置是在zabbix伺服器端的配置文件中設置的,在zabbix_server.conf配置文件中設置:AlertScriptsPath=/usr/local/zabbix/bin/

二:添加zabbix用戶和組,設置其郵箱地址等信息

1、打開zabbix的管理---&>用戶---&>選擇用戶組下拉---&>create user group:

這裡主要就是寫下組名,設置自己需要的許可權然後保存就可以了。

2、打開zabbix的管理---&>用戶---&>選擇用戶下拉---&>create user:

設置好組與用戶後就要添加報警介質,其實就是報警方式,由於設置的是報警,所以 「信息" 那項就不用勾選,信息一般就是伺服器信息發生變化時報警,這個一般沒有什麼意義,所以不勾選。

三、報警觸發器觸發的動作設置

此步操作的意義是,當監控項中的觸發器達到你設置的報警值之後,需要執行操作來發送郵件等動作。具體操作如下。

1、打開zabbix的系統配置---&>操作---&>選擇事件源為觸發器---&>create action:

2、配置出發條件

3、詳細操作設置

即滿足觸發條件之後執行的動作,這裡一般設置為發郵件之類的,設置收郵件的用戶時,建議每個組對應一個用戶,這樣發郵件的時候容易設置發送對象。

到這裡告警的設置工作就完成了。

說了這麼多 Zabbix 監控和告警的配置,我想聊一下在使用 Zabbix 過程中的一些感受吧。

Zabbix 功能特點:

  • 自動發現伺服器和網路設備
  • 分散式監控網路,集中式管理(agent 、server 分開)
  • 監控指標模版豐富
  • 可靈活地分配用戶許可權

Zabbix 不足

  • 安裝配置相對比較複雜,後期維護成本高
  • 數據是只讀的、不能對監控數據進行聚合
  • 告警機制不夠靈活 :不同的指標需要不同的腳本;告警渠道單一
  • 不同的監控需求,需要不同的腳本來完成

使用報警聚合工具,聚合報警

如果機器數量成長到一定規模的時候,會發現根本來不及處理報警。人力部門又不給力,遲遲找不上來人。

好在國外有一些報警聚合服務,pagerduty、bigpanda 等等。

這類工具主要功能是實現了在一個平台中接收所有監控系統的告警,從而實現報警聚合的服務,讓運維人員集中處理IT事件,避免多平台切換,提升運維效率。同時只需要少於 15分鐘的時間就可以將Nagios、Zabbix等主流監控平台的告警自動整合進來,而無需其它配置。以Bigpanda為例我們可以看下他集成的監控平台

與此同時 bigpanda 會將大量重複的告警事件壓縮為一條有真正意義的告警。而後通過機器學習等演算法把相關的告警合併起來,為運維人員提供分析、甄選之後的最重要的告警。

從這些角度來看,國外在監控領域的發展已經從 Zabbix 這種 1.0 時代 ,進入一體化監控解決方案 的 2.0 時代。他們開始選擇基於 StatsD 技術的監控工具或解決方案。例如 Datadog 、Boundary 等第三方監控服務提供商。

這些公司的理念就是為了提供一個一體化的解決方案:如何集成不同的操作系統、資料庫、中間件監控的問題,你不需要擔心;用就行了。

監控聚合 + 報警聚合

由於 Zabbix 的監控是針對每一台主機的某一項指標來設置報警,並通過模板來快速創建報警。如果想要將一組機器的 CPU 利用率,或者管理集群來報警,就得自己寫腳本了。

有沒有聚合數據來監控,從而報警自然而然也是聚合的方案呢?

就國內來說我試用過的 Cloudinsight 產品還是不錯的,它是利用 Statsd 和 OpenTSDB 實現的一個一體化的監控解決方案。由於其利用到了時間序列資料庫,所以數據不再是只讀的可以進行聚合分組等功能,這樣一來就從不同的數據源中聚合數據,轉交給報警處理引擎;引擎根據報警策略中設置的報警條件,對某一固定時間窗口內,對數值進行檢查。當引擎檢查時間窗口內的數值滿足條件時,觸發報警事件的生成;併流送至 Cloudinsight 事件流、郵件、OneAlert 等不同的渠道,進行分發,通知用戶。

樓主提出的這個問題,我認為可能是剛剛開始接觸運維監控這個領域,所以不妨試一下 CloudInsight 。由於其安裝簡便,一切就只有兩步,安裝探針,查看儀錶盤。這樣就可以進行快速的試錯,同時Cloudinsight 集成了數十種互聯網流行基礎組件的監控,只需要進行最小化的配置就可以實現複雜的基礎組件監控, 免除了傳統基礎組件監控中的複雜流程。這樣就可以看看新的技術發展是否能夠更好地滿足自己的需求。

由於平時比較喜歡新鮮事物所以就試用了下,它的可視化效果還是不錯的,下面給大家截幾張圖看看。

總結一下吧,我認為隨著現在雲計算的不斷發展,服務的模式一定會是未來發展的趨勢吧,就像雲主機一樣以 IaaS 服務代替了一部分傳統物理主機與 IDC 的市場份額。照這樣的形式來看在監控領域像 Datadog、Boundary、Cloudinsight這種 SaaS 監控服務也會是未來的一種風向標吧。


開源的那幾個完全滿足 如果哪一天性能功能滿足不了了 那麼這個公司市值也得有十億美刀以上了


想監控伺服器的服務異常.

當伺服器上的服務異常退出時,發送簡訊到開發人員人手上. 然後處理異常.

有沒有什麼比較好又比較廉價的方案來做這件事呢?

各位大牛推薦推薦吧

回答:

這個實現的開源或免費產品非常多,若只是幾台伺服器,則可以拿Nagios搭建一個報警監控系統,有很多完善的腳本,再配上一個簡訊貓,則可以實現。

還有一種辦法就是發送郵件,畢竟智能手機收發郵件非常方便。

聯繫方式:

姓 名:金 官 丁

聯繫電話:136 6166 8096

郵箱地址:jinguanding@hotpu.cn

職位名稱:創始人兼技術總監

公司名稱:上海熱璞網路科技有限公司

通信地址:上海市楊浦區淞滬路98號平盛大廈1703室


你可以試試監控易,簡單易用,功能強大,還支持手機端和saas


宕機時第一時間推送 App 消息、微信消息、簡訊、電話語音進行提醒:咕咕監控 | 專註於網站、伺服器監控


Cloud Insight 監控伺服器及資料庫等中間件,所有指標可設置報警,開發 api 可自定義傳人等數據指標,實時監控分分種輕鬆實現


我是在看了這篇文章後,決定用個第三方的工具,簡單高效。

利用監控寶網站監控服務功能快速知曉網站/伺服器穩定性(2)


最簡單的就是nagios,或寫腳本加到crontab,或者這個腳本做好告警收斂


360網站監控 自動發簡訊 郵件


推薦閱讀:

Python、Ruby、Go語言哪個更值得學習?
Ruby 更像 Perl 還是 Python?
用於 Ruby on Rails 的 IDE 開發工具或者編輯器有哪些推薦?
如何快速學習 Ruby on Rails?
追求客戶端和伺服器編程語言的一致有多大的意義?

TAG:操作系統 | Ruby | Linux | Linux運維 |