初识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