Opserver 初探一《Opserver的搭建》
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的搭建》的更多相关文章
- Opserver 初探二《exceptions配置》
上一节主要介绍Opserver的搭建以及redis.sqlserver监控的配置,本节主要介绍异常日志的记录和监控.要实现异常日志的监控我们需要在项目中引入StackExchange.Exceptio ...
- Opserver 初探三《服务器数据监控》
用Opserver 怎么像zabbix一样监控服务器呢,查看github官方说明,Opserver可用于连接任何支持Bosun, Orion, or direct WMI监控数据. Opserver ...
- 初探appium之环境搭建
前段时间一直在折腾python的爬虫,想搞接口自动化.但是写了一个月,发现在我现在的这份的工作中根本接触不到接口.所以就想先放下来,先做点目前能够接触到的,也需要做的东西. 东西越来越多,人手不足.自 ...
- Vue.js 入门指南之“前传”(含sublime text 3 配置)
题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的“入门”,就算是“入门指南”的“前传”吧.此文献给跟我一样“白痴 ...
- 采用Opserver来监控你的ASP.NET项目系列(一、Opserver监控的简介与平台搭建)
前言 之前有过2篇关于如何监控ASP.NET core项目的文章,有兴趣的也可以看看. 今天我们主要来讲讲如何监控我们的ASP.NET项目. 首先我们来介绍一下,什么是Opserver,它是Stack ...
- Opserver开源的服务器监控系统(ASP.NET)
Opserver是Stack Exchange下的一个开源监控系统,系统本身由C#语言开发的ASP.NET(MVC)应用程序,无需任何复杂的应用配置,入门很快.下载地址:https://github. ...
- JavaScript学习(一) —— 环境搭建与JavaScript初探
1.开发环境搭建 本系列教程的开发工具,我们采用HBuilder. 可以去网上下载最新的版本,然后解压一下就能直接用了.学习JavaScript,环境搭建是非常简单的,或者说,只要你有一个浏览器,一个 ...
- 监控系统Opserver的配置调试
Stack Exchange开源其监控系统Opserver有一段时间了.之前在项目中用过他们的MiniProfile来分析页面执行效率和帮助新人了解项目,当他们开源了其监控系统的时候正好部门也在关注监 ...
- Opserver简单部署
版权声明:本文为博主原创文章,未经博主允许不得转载. 一.下载opserver项目 地址:https://github.com/opserver/Opserver/ 二.用vs2012及以上版本打卡o ...
随机推荐
- Fortran 语法之流程控制
-----------------------
- Leed code 11. Container With Most Water
public int maxArea(int[] height) { int left = 0, right = height.length - 1; int maxArea = 0; while ( ...
- 怎样使用word2013发布csdn博客
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- nodejs中如何使用mysql数据库[node-mysql翻译]
nodejs中如何使用mysql数据库 db-mysql因为node-waf: not found已经不能使用,可以使用mysql代替. 本文主要是[node-mysql]: https://www. ...
- POP介绍与使用实践(快速上手动画)[转]
前言 动画在APP开发过程中 大家多多少少都会接触到 而且随着ios7的扁平化风格启用之后 越来越多的APP开始尝试加入各种绚丽的动画交互效果以增加APP的用户体验(当然 还是以国外的APP居多) 有 ...
- 【spfa训练】HDU4725 (层级建图)
HDU4725 题目大意:一些节点分布在不同的层上,已知相邻的层可以往来距离为c,在给你一些已知的边,问你点1-n的最短路 分析:越往后做,越觉得最短路的考点已经不是spfa算法还是dijkscar算 ...
- cocos studio
用了几天,和之前用的cocos creator以及unity的编辑器一对比,很多地方都挺反人类的哈... 拖拽和放大场景元素竟然还要切换一下编辑模式... 移动场景元素竟然没有单独控制x或者y方向的移 ...
- JavaScript中Ajax的使用
AJAX全称为“Asynchronous javascript and XML”(异步javascript和XML),是指一种创建交互式网页应用的网页开发技术.通过在后台与服务器进行少量数据交换,AJ ...
- 一起学习MVC(1)初步了解MVC
MVC 即模型视图控制器(Model View Controller) 利于团队开发.便于管理与维护.代码易读性强.未来的主流开发框架结构. 当然,缺点也显而易见,与传统开发框架相比有很大的不 ...
- Android开发消除横向排列的多个Button之间的空隙
一.问题重述 摘要里描述的可能不太清楚,问题如下图: 如何消除Button1和Button2之间的空隙,以及Button与左右边界之间的空隙? 二.问题根源 这里出现的空隙其实是Button的背景图片 ...