初識Opserver,StackExchange的監控解決方案

Opserver是聞名遐邇的網站Stack Overflow的開源監控解決方案,由Stack Exchange發佈。它基於.NET框架構建,這在監控工具領域有些不同凡響。html

旨在爲每一個受監控系統的健康情況提供一個快速的整體視圖,還容許用戶使用下鑽方法進行深刻挖掘。Nick Craver是Opserver的建立者之一,他告訴InfoQ:node

咱們認爲,監控系統應該在一個較高的層次上展現系統,出現了什麼錯誤,並容許用戶經過下鑽來了解更多細節。git

Opserver以Web儀表板的形式進行組織,每一個儀表板專門針對一個特定的系統。Opserver目前支持SQL ServerElasticSearchHAProxyStackExchange.ExceptionalRedisOrion是一款來自SolarWinds的商業工具。Opserver還使用它提供基礎設施和網絡監控。一次Opserver安裝並不須要使用全部這些系統,由於它們能夠基於選擇進行配置。github

以SQL Server爲例,Opserver提供了關於CPU和內存消耗的高層次信息或者數據庫的整體健康情況:redis

(點擊圖片能夠查看大圖)sql

在概覽視圖下面,Opserver提供了額外的數據。例如,它提供了一個最經常使用查詢的列表,能夠按照多個條件進行排序(總執行時長、平均CPU消耗)。對於每一個查詢,它提供了更多的細節信息,包括查詢執行計劃(查詢執行步驟的詳細分解)。數據庫

(點擊圖片能夠查看大圖)服務器

SecuritySettings.config文件定義諸如身份驗證方法這樣的設置項:網絡

<?xml version="1.0" encoding="utf-8"?>
<SecuritySettings provider="AD">
    <!—可選,這些網絡無須身份驗證就能夠看到概覽儀表板-->
    <InternalNetworks>
        <Network name="SE Internal" cidr="10.0.0.0/8" />
    </InternalNetworks>
</SecuritySettings>

<!-- 
面向全部人的全局訪問示例
<SecuritySettings provider="alladmin" />
-->

每一個系統有一個配置文件。目前支持JSON格式。下面是SQL Server配置的一個例子:架構

{
    "defaultConnectionString": "Data Source=$ServerName$;
Initial Catalog=master;Integrated Security=SSPI;",
    "clusters": [ // 集羣只能用於SQL Server 2012
        {
        	"name": "NY-SQLCL04",
        	"refreshIntervalSeconds": 20,
        	"nodes": [
        		{ "name": "NY-SQL03" }
        	]
        }
    ],
    "instances": [
        { //該實例不能使用defaultConnectionString,所以它得本身指定。
            "name": "NY-DB05",
            "connectionString": "Data Source=NY-DB05;
Initial Catalog=bob;Integrated Security=SSPI;", 
        },
        // defaultConnectionString中的服務器名會被「name」 替換
        { "name": "NY-DESQL01" }     ]
}

若是Opserver沒有包含某個特定場景,那麼它還提供了若干擴展點,用戶能夠經過它們使用額外的儀表板和配置選項來加強該工具。按照計劃,這個過程未來會更簡單易用並且功能更強大:

若時間容許,即將到來的最大變化是加入插件模型。人們將可以增長其餘人也可使用的選項卡、視圖、輪詢器等。例如,用戶能夠增長一個MongoDB監控選項卡,並在上面能夠添加想要添加的任何層次的細節。

在該工具的路線圖上,Opserver團隊還有其它目標:

它還會在很大程度上與咱們的監控解決方案集成,保存歷史數據而不只僅是實時數據。

若是用戶使用了其它的第三方工具,那麼我計劃在基本安裝中包含針對這些工具的功能,從而加強Opserver。例如,sp_WholsActive已經集成進來了,諸如sp_Blitzsp_AskBrent這樣的東西和像SQL Sentry那樣更大的產品也將會綁定到裏面。他們確定不是必須的,只是若是有了它們會增長視圖和細節……由於隨後即可以得到它們提供的信息。

Opserver還經過JSON以REST-feeling方式暴露它所擁有的幾乎所有數據。我計劃使全部數據均可以經過這種方式得到,那樣,用戶界面就是徹底可選的。這容許任何人針對返回JSON的路徑編寫腳本,並以其它方式使用返回結果,那真的會開闢許多新的應用場景。

InfoQ問Stack Exchange,爲何決定構建本身的監控工具。Nick告訴咱們,它是天然長成的:

開始的時候,它是StackExchange.Exceptional數據庫的中央異常日誌查看器,是咱們全部應用程序日誌的集中存放位置。從那開始,做爲一個業餘項目,我開始添加尚未監控的方面,或者已經存在但還不許確的方面(例如,一個關於SQL Server 2012永遠在線的監控問題)。

從那開始,我爲咱們想要留意的東西添加SQL功能,由於我想在一個位置查看全部系統。以後,我開始添加咱們在Stack Exchange用到的全部系統……目標從彌補現有監控的缺陷變成了要有一個基礎設施的單一界面管理視圖。

查看英文原文:A first look at Opserver, Stack Exchange's monitoring solution

查看中文原文:初識Opserver,StackExchange的監控解決方案

 

監控系統Opserver的配置調試

What Does Opserver Monitor?

Using Stack Exchange’s Opserver Step 1: Will it Build?

Using Stack Exchange’s Opserver Step 2: SQL Configuration

相關文章
相關標籤/搜索