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.cn/article/JTxqRbCzHh-c4UQlTEwz
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的Stack Overflow 监控系统内部架构初探的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Surging1.0发布在即,.NET开
- 下一篇: 使用PerfView监测.NET程序性能