当前位置: 首页 > news >正文

使用Prometheus监控Cloudflare的全球网络

Matt Bostock在SRECON 2017欧洲大会的演讲中,介绍了如何使用Prometheus实现对CloudFlare分布于全球的架构和网络的监控。Prometheus是一种基于度量进行监控的工具,CloudFlare是一家CDN、DNS和DDoS防御(Mitigation)服务提供商。

\\

基于度量的开源监控项目Prometheus最早推出于2012年,它是CNCF(原生云计算基金会,Cloud Native Computing Foundation)的成员。Prometheus的动态配置和查询语言PromQL支持用户编写对告警的复杂查询。CloudFlare提供CDN(内容分发网络,Content Delivery Network)、分布式DNS和DDoS防御服务,这意味着其架构已扩展到全球范围。监控这样的架构及网络无疑是一件复杂的工作。在演讲中,Bostock介绍了Prometheus在其中发挥的作用。在CloudFlare,前期部署的Nagios的职能已有87%被Prometheus所替代。

\\

CloudFlare提供类似于Anycast所提供的CDN服务。Anycast DNS使得DNS查询可以被最接近用户的服务器所处理,Anycast HTTP使得内容可以从距离用户最近的服务提供。作为原始Web站点和用户之间的中介,CloudFlare还检查访问者的流量中是否存在有威胁的模式。它提供了跨150个国家的116个数据中心,每秒处理500万次HTTP请求,120万次DNS请求,占全球因特网请求的10%。每个入网点(PoP,Point-Of-Presence)提供HTTP、DNS、DDoS防御和键值存储服务。截至演讲时,有188台运行在生产环境中的Prometheus服务器需要监控。

\\

d0e42317a03193328f141a0be178c7b0.png

\\

图片来源:https://promcon.io/2017-munich/talks/monitoring-cloudflares-planet-scale-edge-network-with-prometheus/

\\

Prometheus是基于度量的,也就是说它采集时序度量,并基于度量构建其余的特性。它工作于Pull模式下,每台监控服务器运行一个称作“exporter”的进程,通过HTTP发布所采集的度量。CloudFlare为每个服务域部署了一个exporter,使用它们采集系统(例如CPU、内存、TCP、磁盘等)、网络(例如HTTP、Ping等)、本地匹配(错误信息)和容器/命名空间的度量。其中,exporter使用了Google的开源项目cadvisor采集容器/命名空间的度量。Prometheus并不会永久地保存所有数据,因为它更侧重于“此时此地”(here-and-now)的监控情况。数据不做下采样,并在CloudFlare配置中保存15天。

\\

在CloudFlare的核心数据中心,服务包括日志访问、分析业务,以及使用Marathon、Mesos、Chronos、Docker、Sentry、Ceph(用于存储)、Kafka、Spark、Elasticsearch和Kibana等技术栈构建的API。Prometheus在每个PoP通过exporter查询服务器和服务获取度量。每个PoP的高可用性是由使用多个Prometheus服务提供的。

\\

Prometheus的报警管理称为“Alertmanager”。CloudFlare的部署中包括一个Alermanager,由每个Prometheus服务器推送事件,并考虑了配置的高可用性。报警基于历史数据做测试,确保服务的正确执行的。Bosun等新兴监控工具也包括类似的特性。为提供更好的报警服务,其它的一些特性还包括了描述性的名称、简单易用性和一些可使接收者立刻采取行动的信息。

\\

CloudFlare团队使用jiralerts实现JIRA工单系统与Alertmanager的集成。JIRA可以用户定制工作流,使得报警监控中可以包括一些监控工作流特定的用户定制状态。另一个称为alertmanagere2s的工具接收报警,并将报警信息集成到Elasticsearch索引中,用于进一步的检索和分析。CloudFlare已为Alertmanger构建了自己的仪表盘,称为“unsee”。

\\

那么Prometheus是如何监控自身情况的?这有两种实现方法。一种是混合方法,即在同一数据中心中,由一个Prometheus去监控另一个Prometheus。另一种方法是自顶向下的方法,由顶层Prometheus服务器监控位于数据中心层面的Prometheus服务器。

\\

CloudFlare SRE团队的经验是,尽早对环境和集群等的标签和组身份做标准化;其它一些经验是关于如何创建可视化,以及从同行和利益相关者生成买入。经验指出,团队的尽早参与将有助于服务与监控系统的更快整合。而报警本身则需要多次迭代进行调整和改进,这是一个开展中的过程。

\\

查看英文原文: Monitoring Cloudflare's Global Network Using Prometheus

相关文章:

  • 歌词显示控件的实现下——自定义View
  • [内核驱动] miniFilter 内核层与应用程序通信
  • 关于form表单input text 未绑定回车事件跳转问题
  • Android照片墙完整版,完美结合 内存方案 LruCache 和 硬盘方案 DiskLruCache
  • CentOS 7下搭建LAMP并把MySQL单独分离
  • Elasticsearch集群如何扩容机器?
  • React组件间通讯
  • 部分域名返回servfailed(案例)
  • CCNP精粹系列之二十三--BGP单自治系统通信,推荐
  • Ext-js 分页实现 (后台用Spring MVC)
  • 网络知识===wireshark抓包数据分析(一)
  • 用VNC进行远程维护
  • org.springframework.jdbc.BadSqlGrammarException: Cause: java.sql.SQLException: Column count 异常
  • 如何在esxi环境中重启LUN。
  • Android应用程序发送广播(sendBroadcast)的过程分析(2)
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【css3】浏览器内核及其兼容性
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Kibana配置logstash,报表一体化
  • Linux gpio口使用方法
  • PHP CLI应用的调试原理
  • react-native 安卓真机环境搭建
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • vue的全局变量和全局拦截请求器
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 闭包--闭包作用之保存(一)
  • 机器学习中为什么要做归一化normalization
  • 那些被忽略的 JavaScript 数组方法细节
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 物联网链路协议
  • 写代码的正确姿势
  • #### go map 底层结构 ####
  • (4)STL算法之比较
  • (6)STL算法之转换
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (规划)24届春招和25届暑假实习路线准备规划
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (原創) 物件導向與老子思想 (OO)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)程序员技术练级攻略
  • (转载)深入super,看Python如何解决钻石继承难题
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET Core中Emit的使用
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET MVC第三章、三种传值方式
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .net经典笔试题
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET企业级应用架构设计系列之应用服务器
  • @GetMapping和@RequestMapping的区别