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. hdu-1253(bfs+剪枝)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 思路:简单的bfs,就是要注意剪枝. #include<iostream> #inc ...

  2. Codeforces801C Voltage Keepsake 2017-04-19 00:26 109人阅读 评论(0) 收藏

    C. Voltage Keepsake time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  3. ZUFE2389: Occult的卡片升级计划(DP) 2016-05-17 23:12 113人阅读 评论(0) 收藏

    2389: Occult的卡片升级计划 Description Occult喜欢玩一款手游,手游中有很多好看的卡片.他想要升级这些卡. 现在他有m块经验石,目标是强化一张卡片,卡片最开始的时候是0级, ...

  4. B样条参数曲线学习(1)

    B样条参数曲线学习 Bezier曲线有许多优越性,但有两点不足: (1) 特征多边形的顶点个数决定了Bezier曲线的阶次,并且在阶次较大时,特征多边形对曲线的控制将会减弱: (2) Bezier曲线 ...

  5. Java子父类中的构造函数实例化过程

    其实我们发现子类继承父类操作很简单,如果要是去深入的研究下会发现,实例化过程并非是我们看到的那样,我们就以代码举例来说明: 问大家,以下代码执行会输出什么呢? package com.oop; /** ...

  6. Python学习-21.Python的代码注释

    在Python中有两种注释,一种是普通注释,另一种是文档注释. 普通注释是使用#开头 print('output something') # here is comment 而Python中多行注释也 ...

  7. 五、搭建kube-dns

    1. 简介   kube-dns用来为kubernetes service分配子域名,在集群中可以通过名称访问service.通常kube-dns会为service赋予一个名为"servic ...

  8. ASP.NET MVC ScriptBundle 不能加载.min.js文件

    比如我用 bundles.Add(new ScriptBundle("~/bundles/easyui").Include( "~/Content/easyui/jque ...

  9. Sql Server 2008 压缩数据库日志文件

    第一步:将数据库设置为简单模式 选中数据库点右键->属性: 第二步:收缩数日志文件 1, 2,   第三步:将恢复模式改回为完整模式     如果你觉得用UI界面麻烦,那你就用SQL语句吧   ...

  10. Web app制作细节:web app互动制作技巧

    Google .微软.苹果三大巨头紧锣密鼓地在web app的研发产品领域圈地设岗,并试图建立以自己为中心的”云“服务平台,企图在web app时代到来的时候充当霸主.本文将围绕web app的制作, ...