Opserver 是Stack Overflow的开源监控产品。stackoverflow网站是基于asp.net开发的,具体采用的软硬件配置可以查看《StackOverflow 这么大,究竟用在什么硬件设备》。我们可以了解到stackoverflow的大致运行环境:

数据库:sql server

缓存服务器:redis

web服务器:windows server/IIS

搜索服务器:ElasticSearch

标签服务器:未知

负载均衡:HAProxy

so, opserver 直接提供的可监控服务是sql server ,redis,ElasticSearch,HAProxy,exception等。

1、Opserver 监控搭建

可以到https://github.com/opserver/Opserver,下载Opserver 源码,里面包含 Opserver监控网站和Opserver.Core两个项目。

直接编译启动,会报没有设置SecuritySettings.config错误。查看web.config ,默认指定了文件在Config\SecuritySettings.config

<SecuritySettings configSource="Config\SecuritySettings.config" />

监控配置设置在“Config\”下的json文件。

找到config文件夹,我们可以看到多个以"*.example"结尾的文件,如:

CloudFlareSettings.json.example      //CloudFlare监控配置
DashboardSettings.json.example //仪表盘配置
ElasticSettings.json.example //ElasticSearch监控配置
ExceptionsSettings.json.example //Exceptions异常数据监控配置
HAProxySettings.json.example //HAProxy监控配置
JiraSettings.json.example //Jira问题配置
PagerDutySettings.json.example //
PollingSettings.json.example //
RedisSettings.json.example //Redis监控配置
SecuritySettings.config.example //Security安全设置
SQLSettings.json.example //sql server配置

查看github opserver介绍和SecuritySettings.config.example,”SecuritySettings.config“为opserver网站的安全配置,example中启用的默认配置为AD("ad")认证登入,其他还有“alladmin",view all。因环境中没有AD服务,这里使用"alladmin"配置登录opserver网站(即所有人都已管理员身份登录)。

<SecuritySettings provider="alladmin" />

启动网站,用户名和密码可输也可以不输,点击登录,可以直接进入网站。此时网站显示可以没有配置任何监控项。

Uh no! No Configuration found! 

No configuration data was found. This means no Opserver sections are configured/enabled or you have no roles assigned to you. 

See the Readme.txt in /config and *.example files for examples of a basic JSON configuration...or you can implement your own provider to get settings from anywhere. 

If you are using AD authentication, set the ViewGroups or AdminGroups settings in the web.config or in the section-specific configuration. 

You can also browse to /about to see how you have been authenticated and what monitors have been enabled. 

2、配置redis监控

从redissetting.json.example上看,配置分“allservers",和”servers"节点,allservers是servers节点的子集,即可以认为allservers等同于是servers的某一个子节点。通过阅读代码Opserver.Core项目Setting文件夹下的RedisSettings.cs文件,确定了这一点,allservers是单个Server,servers是List<server>。redis监控数据实例的加载可以查看Opserver.Core项目data/Redis文件夹下的RedisModule.cs

   private static List<RedisConnectionInfo> LoadRedisConnections()
{
var result = new List<RedisConnectionInfo>();
var defaultServerInstances = Current.Settings.Redis.Defaults.Instances;
var allServerInstances = Current.Settings.Redis.AllServers.Instances; foreach (var s in Current.Settings.Redis.Servers)
{
var count = result.Count;
// Add instances that belong to any servers
allServerInstances?.ForEach(gi => result.Add(new RedisConnectionInfo(s.Name, gi))); // Add instances defined on this server
if (s.Instances.Any())
s.Instances.ForEach(i => result.Add(new RedisConnectionInfo(s.Name, i))); // If we have no instances added at this point, defaults it is!
if (defaultServerInstances != null && count == result.Count)
defaultServerInstances.ForEach(gi => result.Add(new RedisConnectionInfo(s.Name, gi)));
}
return result;
}

从中可以看出,allservers和default下的实例配置,会影响servers下的配置,allservers和default的实例被添加到servers的各个节点,可以理解allservers和default的配置为通用配置,另外如果allservers,servers下有实例 ,default下实例不起作用。如果要自定义实例加载,可以修改这段代码。实际配置中我们只要配置servers就可以了。如:

{
"Servers": [ {
"name": "192.168.1.100",
"instances": [ { "name": "is not cluster Redis", "port": "6379" } ]
}, {
"name": "192.168.1.101",
"instances": [
{
"name": "cluster master",
"port": "6379",
"password": "*******"
}]
},
{
"name": "192.168.1.102",
"instances": [
{
"name": "cluster slave",
"port": "6379",
"password": "*******"
}]
}
]
}

3、SQL SERVER监控

从SQLSettings.json.example文件中,可以看出sql 配置比较简单,主要分集群cluster和单实例instance配置,注意所有的name都指网络机器名,可以用IP代替。具体的配置细节可以查看Opserver.Core项目下setting文件夹的,sqlsetting.cs文件。示例:

{
"defaultConnectionString": "Data Source=$ServerName$;User ID=sa;Password=*****;Initial Catalog=master;",
"clusters": [
{
"name": "192.168.1.120",
"refreshIntervalSeconds": 20,
"nodes": [
{ "name": "192.168.1.121" },
{ "name": "192.168.1.122" },
{ "name": "192.168.1.123" },
]
}
],
"instances": [
{
"name": "192.168.1.131",
"connectionString":"Data Source=192.168.1.131;User ID=sa;Password=*********;Initial Catalog=master;"
}
]
}

注意:defaultConnectionString 默认情况下节点不能删除,值可以为空。集群和实例必须存在其一,不然SQL监控页面不呈现。

Opserver 初探一《Opserver的搭建》的更多相关文章

  1. Opserver 初探二《exceptions配置》

    上一节主要介绍Opserver的搭建以及redis.sqlserver监控的配置,本节主要介绍异常日志的记录和监控.要实现异常日志的监控我们需要在项目中引入StackExchange.Exceptio ...

  2. Opserver 初探三《服务器数据监控》

    用Opserver 怎么像zabbix一样监控服务器呢,查看github官方说明,Opserver可用于连接任何支持Bosun, Orion, or direct WMI监控数据. Opserver ...

  3. 初探appium之环境搭建

    前段时间一直在折腾python的爬虫,想搞接口自动化.但是写了一个月,发现在我现在的这份的工作中根本接触不到接口.所以就想先放下来,先做点目前能够接触到的,也需要做的东西. 东西越来越多,人手不足.自 ...

  4. Vue.js 入门指南之“前传”(含sublime text 3 配置)

    题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的“入门”,就算是“入门指南”的“前传”吧.此文献给跟我一样“白痴 ...

  5. 采用Opserver来监控你的ASP.NET项目系列(一、Opserver监控的简介与平台搭建)

    前言 之前有过2篇关于如何监控ASP.NET core项目的文章,有兴趣的也可以看看. 今天我们主要来讲讲如何监控我们的ASP.NET项目. 首先我们来介绍一下,什么是Opserver,它是Stack ...

  6. Opserver开源的服务器监控系统(ASP.NET)

    Opserver是Stack Exchange下的一个开源监控系统,系统本身由C#语言开发的ASP.NET(MVC)应用程序,无需任何复杂的应用配置,入门很快.下载地址:https://github. ...

  7. JavaScript学习(一) —— 环境搭建与JavaScript初探

    1.开发环境搭建 本系列教程的开发工具,我们采用HBuilder. 可以去网上下载最新的版本,然后解压一下就能直接用了.学习JavaScript,环境搭建是非常简单的,或者说,只要你有一个浏览器,一个 ...

  8. 监控系统Opserver的配置调试

    Stack Exchange开源其监控系统Opserver有一段时间了.之前在项目中用过他们的MiniProfile来分析页面执行效率和帮助新人了解项目,当他们开源了其监控系统的时候正好部门也在关注监 ...

  9. Opserver简单部署

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一.下载opserver项目 地址:https://github.com/opserver/Opserver/ 二.用vs2012及以上版本打卡o ...

随机推荐

  1. C语言之接收方向键指令让屏幕上的输出能移动

    首先,需要了解一下控制台坐标 #include <stdio.h> #include <stdlib.h> #include <conio.h> main() { ...

  2. chandy-lamport 分布式一致性快照 算法详细介绍

    在一个分布式计算系统中,为了保证数据的一致性需要对数据进行一致性快照.Flink和spark在做流失计算的时候都借鉴了chandy-lamport算法的原理,这篇文章就是对chandy-lamport ...

  3. HDU 1106 排序 (排序+处理字符串)

    题意:略. 析:按照题目说的,把字符串分割,然后把字符串转成十进制,存起来,可以用数组,我用的向量, 排序一下就OK了.注意的是,要考虑多个5相邻的时候,刚开始没考虑WA了一次. 代码如下: #inc ...

  4. C++中的浮点数运算的误差测试分析

    C++中的浮点数运算的误差 项目中需要计算判定,采用的是float型,如: float a < yLing, 其中:a = 2.0, y则从1.0 + 0.2*n  当n = 4时,条件成立了? ...

  5. MFC OnOk(),OnCancel(),OnClose(),OnDestroy()的区别总结

    MFC OnOk(),OnCancel(),OnClose(),OnDestroy()的区别总结(转) 第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和O ...

  6. Delphi for iOS开发指南(3):创建一个FireMonkey iOS应用程序

    http://cache.baiducontent.com/c?m=9d78d513d9d431a94f9d92697d60c015134381132ba1d0020fa48449e3732b4b50 ...

  7. Java何时该使用覆盖?

    在Java编程中,什么时候该使用覆盖函数操作呢,很多人都知道有覆盖操作,但是到底什么时候该使用覆盖操作,还是有一些模糊的感觉,以下就举例来用代码分析就明白了, 举例生活中的案例,模拟制造手机的公司: ...

  8. Create Index语句的Include作用

    在 SQL Server 2005 中,可以通过将非键列添加到非聚集索引的叶级别来扩展非聚集索引的功能.通过包含非键列,可以创建覆盖更多查询的非聚集索引.这是因为非键列具有下列优点: 它们可以是不允许 ...

  9. 解决EF没有生成字段和表说明

    找了很多资料,终于找到一篇真正能解决ef生成字段说明,注释的文章,收藏不了,于是转载 本文章为转载,原文地址 项目中使用了EF框架,使用的是Database-First方式,因为数据库已经存在,所以采 ...

  10. [ASP.NET]ASP.NET中常用的26个优化性能方法

    1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...