Stack Overflow 监控系统内部架构初探

Stack Exchange 架构主管 Nick Craver 在最近的一篇文章中介绍了他们的监控系统。他在文章中讨论了监控策略背后的理念和动机,并介绍了他们的工具集——主要是 Bosun、Grafana 和 Opserver。

Stack Overflow 及其姐妹站点 Stack Exchange 运行在.NET 和 MS SQL Server、IIS Web 服务器、HAProxy(作为负载均衡器)以及 Redis 和 Elasticsearch 提供的服务上。他们的主要数据中心位于纽约,在俄勒冈州有一个故障转移中心。Craver 指出,Stack Exchange 的监控通常包括“日志、指标、运行状况检查和分析”,他们使用 Bosun、Opserver、Grafana 和 MiniProfiler 作为主要工具。

Stack Exchange 监控系统的数据源是日志、运行状况检查和时间序列指标。在日志方面,他们使用了标准机制和自定义库将日志推送到数据库中。日志包含了来自 HAProxy 负载均衡器的 HTTP 请求汇总日志以及来自 Logstash 的日志事件。他们的运行状况检查可以测试最终用户看到的内容,例如主页。度量指标被收集并保存在自己构建的开源监控工具 Bosun 中,Bosun 将 OpenTSDB 作为后端存储。Bosun 还会发送警报,Pagerduty 负责处理事故升级。他们还有一个叫作 Opserver 的工具——显示整个监控系统的仪表盘视图。

640?wx_fmt=png

所有 Stack Exchange 的应用程序都使用一个叫作 StackExchange.Exceptional 的日志记录库,这个库将日志发送到 MSSQL Server。它其实是.NET 日志库 ELMAH 的一个分支。Redis、Elasticsearch 和 SQL Server 将日志记录到标准的位置,但不清楚这些日志是否会被发送到中央服务器进行聚合和搜索。来自网络设备的日志将被发送到 Logstash,并可以通过 Kibana 仪表盘查看。可以使用 MiniProfiler 详细分析页面加载时间,MiniProfiler 将显示跨越各层的方法调用时间。

Bosun 先是由 Stack Exchange 开发,然后被开源出来。Bosun 的主要功能是根据历史数据测试警报,提供了用于计算时间序列数据的查询语言、模板化警报以及时间序列趋势的警报和预测。与 Nagios、Zabbix 等传统监控工具不同,但与 Prometheus 等现代监控工具类似,Bosun 不需要为每台服务器设置单独的警报。对于跨所有服务器的时间序列测量(例如 CPU 使用率),设置单个阈值检查就足够了。警报当中包含了违反阈值的时间序列清单,可以用来识别有问题的服务器。

Bosun 支持多个后端存储,Stack Exchange 还使用了 OpenTSDB(和 HBase 一起)。Bosun 的原始作者之一 Kyle Brandt 在文章写道,这是他们的痛点之一,由于他们“在其他地方没有使用 HBase,所以管理 HBase 会占用他们大量的时间”。Bosun 的附加代理是 scollector,它负责从受监控的机器收集指标。它使用 Go 语言开发,用于替换 OpenTSDB 的 tcollector 代理。他们使用 BosunReporter 推送应用程序的指标。

健康检查侧重于检查最终用户体验以及内部服务的健康状况。Pingdom 检查外部可访问的 URL。Craver 写道,面向最终用户 URL(如主页)的检查非常关键,因为“主页检查可能会检查到我们无法检查到的问题,进行整体检查也很重要”。Fastly 充当 Stack Exchange 站点的 CDN 和代理,它的运行状况检查可以确保在主数据中心发生故障时可以故障转移到辅助数据中心。除服务器端监控外,他们还使用浏览器 API 跟踪客户端的时间。

将所有这些结合在一起的是 Grafana 和 Opserver。Grafana 接入 Bosun 数据,用以显示时间序列指标。Opserver 专注于整个基础设施的整体监控状态。为什么团队要自己构建 Opserver,而不是使用 Nagios 或类似的工具?Craver 解释说,当时没有一种工具可以满足他们的所有需求。与大多数工具一样,它是根据特定要求而开发出来的。Opserver 仪表盘可用于深入查看各个服务和服务器。它需要以 JSON 格式进行静态配置,如果用于监控云环境(可能包含了一些临时主机)可能会有些问题。

原文地址: https://www.infoq.cn/article/JTxqRbCzHh-c4UQlTEwz

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P5829 【模板】失配树

P5829 【模板】失配树 题目: 题解: 参考题解 我们先想一个问题:如何求出一个字符串的所有border? 如果一个字符串既是 S的前缀又是 S 的后缀,那么我们把 SS 自己平移一下就可以前后重合,然后我们就可以继…

[JLOI2015]战争调度

文章目录题目题解代码实现题目 脸哥最近来到了一个神奇的王国,王国里的公民每个公民有两个下属或者没有下属,这种关系刚好组成一个 n 层的完全二叉树。 公民 i 的下属是 2 * i 和 2 * i 1。最下层的公民即叶子节点的公民是平民, 平民没有下…

使用PerfView监测.NET程序性能(一):Event Trace for Windows

前言:在日常项目开发中,我们时不时会遇到程序占用了很高CPU的情况,可能是程序里某些未经优化的代码或者Bug,或者是程序运行压力太大。无论是什么原因,我们总希望能看到到底是哪个方法占用了如此高的CPU。微软为我们提供…

【用学校抄作业带你走进可持久化线段树(主席树)】可持久化线段树概念+全套模板+例题入门:[福利]可持久化线段树)

我似乎很少写这种算法博客可持久化线段树概念概念介绍(类比帮助理解)简单分析一下时间和空间复杂度(内容池)模板结构体变量建树模板单点修改模板单点查询模板区间修改模板(pushup)区间修改模板(…

P3258 [JLOI2014]松鼠的新家

文章目录题意:题解:树上差分代码:树链剖分代码:P3258 [JLOI2014]松鼠的新家题意: n个点,n-1条边,给出每个点的拜访顺序,问每个点经过几次(最后一次移动不算拜访&#xf…

[SOCI2005]最大子矩阵(DP) + [JXOI2018]守卫(DP) + [CQOI2016]手机号码(数位DP)[各种DP专练]

DP专练博客 DP专练T1:最大子矩阵题目题解代码实现T2:守卫题目题解代码实现T3:手机号码题目题解代码实现T1:最大子矩阵 题目 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。…

IdentityServer4-EF动态配置Client和对Claims授权(二)

本节介绍Client的ClientCredentials客户端模式,先看下画的草图:一、在Server上添加动态新增Client的API 接口。为了方便测试,在Server服务端中先添加swagger,添加流程可参考:https://www.cnblogs.com/suxinlcq/p/67575…

P3178 [HAOI2015]树上操作

P3178 [HAOI2015]树上操作 题意&#xff1a; 题解&#xff1a; 这已经是很裸的树链剖分了。。。 直接套模板 代码&#xff1a; #include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespac…

dotnet core开源博客系统XBlog介绍

XBlog是dotnet core平台下的个人博客开源系统&#xff0c;它只需要通过Copy的方式即可以部署到Linux和windows系统中&#xff1b;如果你有安全证书那只需要简单配置一下即可提供安全的Https服务。接下来主要介绍XBlog功能、部署和基础设置。技术要点基于dotnet core平台&#x…

【莫队/树上莫队/回滚莫队】原理详解及例题:小B的询问(普通莫队),Count on a tree II(树上莫队),kangaroos(回滚莫队)

文章目录问题引入介绍莫队算法及其实现过程时间复杂度莫队算法适用范围莫队奇偶优化普通莫队&#xff1a;小B的询问树上莫队&#xff1a;SP10707 COT2 - Count on a tree II回滚莫队&#xff1a;[PA2011]Kangaroosupd&#xff1a;2021-08-11&#xff1a;重新对博客进行了外观美…

微软 2018 开源大事记

从微软公开宣布 "Microsoft love linux" 那一刻起&#xff0c;过去的几年里&#xff0c;微软积极拥抱开源的举动我们有目共睹&#xff0c;即便有过"Linux is a cancer"这种真香警告的 flag&#xff0c;但不得不承认的是&#xff0c;微软一系列“拥抱开源”…

模板:二叉搜索树平衡树

文章目录前言二叉搜索树代码treap代码splay开点旋转splay插入查找第k大元素查找给定元素的排名前驱&后继删除完整代码练习总结前言 终于开始学这个东西了 看了好几篇博客才找到一篇可读的qwq 我曾经还以为线段树码量大…我真傻&#xff0c;真的 所谓平衡树&#xff0c;就是…

P2486 [SDOI2011]染色

P2486 [SDOI2011]染色 题意&#xff1a; 题解&#xff1a; 与一般的树链剖分相比&#xff0c;不同点在于查询的不是路径上颜色的数量而是颜色段的数量 对于两个颜色段&#xff0c;112和221&#xff0c;两个颜色段数量都是2 如果合在一起颜色段的数量就是3&#xff0c;因为左边…

牛客网CSP-S提高组赛前集训营1题解(仓鼠的石子游戏 [博弈论] + 乃爱与城市的拥挤程度 [树上DP] + 小w的魔术扑克[dfs + 离线])

文章目录T1&#xff1a;仓鼠的石子游戏题目题解代码实现T2&#xff1a;乃爱与城市拥挤程度题目题解代码实现T3&#xff1a;小w的魔术扑克题目题解代码实现T1&#xff1a;仓鼠的石子游戏 题目 仓鼠和兔子被禁止玩电脑&#xff0c;无聊的他们跑到一块空地上&#xff0c;空地上有…

使用PerfView监测.NET程序性能(二):Perfview的使用

在上一篇博客使用PerfView监测.NET程序性能&#xff08;一&#xff09;&#xff1a;Event Trace for Windows 中&#xff0c;我们了解了对Windows及应用程序进行性能分析的基础&#xff1a;Event Trace for Windows (ETW)。现在来看看基于ETW的性能分析工具——Perfview.exePer…

学习有向图和无向图的强连通分量(基本概念+割点+点双联通分量+桥+边双连通分量+全套模板【Tarjan】)

最近总是考到Tarjan&#xff0c;让我措手不及基本概念割点以及点双连通分量Tarjan法求割点推导过程代码实现Tarjan法求点双连通分量推导过程代码实现有向图的Tarjan缩点桥与边双连通分量Tarjan法求桥理论推导代码实现Tarjan法求边双连通分量理论推导代码实现前言&#xff1a;有…

.NET Core下的Spring Cloud——前言和概述

前言前几年一直在写类似dubbo&#xff0c;Spring Cloud的微服务框架辗辗转转重复了多次&#xff0c;也重构推翻了很多次&#xff0c;其中诞生了“Rabbit.Rpc”,”Go”,”RabbitCloud”等开源项目。其中不乏他人对这些项目的完善。很高兴自己的开源项目能够给他人提供思路和复用…

CF785E Anton and Permutation

CF785E Anton and Permutation 题意&#xff1a; 对于一个长度为 n 的序列进行 k 次操作&#xff0c;每次操作都是交换序列中的某两个数。对于每一个操作&#xff0c;回答当前序列中有多少个逆序对。 1<n<200000 1<q<50000 题解&#xff1a; 动态逆序对&#x…

[ NOIP提高组 2016]愤怒的小鸟(暴搜 + 状压DP)// [SNOI2017]一个简单的询问(莫队)

一次性写两道题T1&#xff1a;一个简单的询问题目题解代码实现T2&#xff1a;愤怒的小鸟题目暴搜题解暴搜代码实现状压DP题解状压DP代码实现T1&#xff1a;一个简单的询问 题目 给你一个长度为 N 的序列 ai ,1≤i≤N&#xff0c;和 q 组询问&#xff0c;每组询问读入 l1,r1,l…

微软发布新的 Azure Pipelines 功能和集成

在最近举行的Connect()大会上&#xff0c;微软发布了几项新功能以及与 Azure Pipelines 的集成&#xff0c;包括 Visual Studio Code 的 Azure Pipelines 扩展、GitHub 版本管理、对 IoT 项目的支持以及 ServiceNow 集成。自从 9 月份推出 Azure Pipelines 以来&#xff0c;这种…