NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 2018-12-24
  • 本文字数:1566 字

    阅读完需:约 5 分钟

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 的工具——显示整个监控系统的仪表盘视图。



所有 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.com/news/2018/12/stackoverflow-monitoring


2018-12-24 15:333192
用户头像

发布了 731 篇内容, 共 434.1 次阅读, 收获喜欢 1997 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

融云IM SDK web 端集成 — 表情采坑篇

融云 RongCloud

结合融云 WebSDK 了解 WebSocket 基本原理

融云 RongCloud

融云 AMR(Aduio) 播放 AMR 格式 Base64 码音频

融云 RongCloud

融云 Web 播放声音(AMR 、WAVE)

融云 RongCloud

融云 Web SDK 如何实现表情的收发 ?

融云 RongCloud

融云 IM SDK 发送语音消息

融云 RongCloud

使用融云 IM SDK 实现 H5 直播聊天

融云 RongCloud

使用融云 Web SDK 撤回消息

融云 RongCloud

区块链如何走向云端?

CECBC

云技术

集成融云 Web 音视频通话踩坑之旅

融云 RongCloud

融云 CallLib 集成遇到的问题

融云 RongCloud

如何开好每日晨会?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

集成融云 SDK 怎么实现多端同步未读数

融云 RongCloud

平安智慧社区解决方案,平安社区综合管理平台

13530558032

融云 Web SDK 删除历史消息

融云 RongCloud

提醒小程序的产品文档——大作业心得总结

小匚

产品经理 随笔杂谈 产品经理训练营 极客大学产品经理训练营

通过融云 WebSDK 简单了解 WebSocket

融云 RongCloud

加快数字化发展 建设数字中国

CECBC

大数据

融云 Web SDK 如何实现只有一个设备登入

融云 RongCloud

融云发送语音消息

融云 RongCloud

微信小程序集成融云 SDK (即时通讯) 集成必备条件

融云 RongCloud

融云 Web SDK 如何实现语音的收发 ?

融云 RongCloud

区块链版权保护平台--催生版权保护新格局

13530558032

融云 Web 播放声音 — Flash 篇 (播放 AMR、WAV)

融云 RongCloud

融云 RTC SDK 集成实现直播,趟坑之旅~~~

融云 RongCloud

作为小白接融云 IM SDK 新路体验~

融云 RongCloud

Web 端使用融云 SDK 集成实现滑动加载历史消息

融云 RongCloud

Web 端集成融云 SDK 如何发送正确图片消息给移动端展示?

融云 RongCloud

区块链农产品溯源方案,区块链溯源平台

13530558032

集成融云小程序 SDK 遇到的问题

融云 RongCloud

SDK 兼容 JSON

融云 RongCloud

Stack Overflow监控系统内部架构初探_架构_Hrishikesh Barua_InfoQ精选文章