使用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

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

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

相关文章

[转载] Java-forEach增强for循环是值传递规则详解

参考链接: Java中的for-each循环 1. 引入 正如Java语法意义,变量的传递只有值传递,虽然变量分为引用变量和基本类型变量,前者更像C中的地址概念。 在学习Lambda表达式的时候,遇到了试图在增强for循环中对原链表元素重…

开始吧

2019独角兽企业重金招聘Python工程师标准>>> 写C三年有余,在技术方面也算小有所成。准备在这里分享一些C进阶、Python、Golang技术文章。 CSDN博客地址: http://blog.csdn.net/godmaycry 以后博客同步更新。 转载于:https://my.oschina.net/u…

[转载] 常用应届生Java开发笔试面试题(更新中)

参考链接: Java中的循环的重要事项 Java开发面试题 Java基础篇Java8大基本数据类型Java的三大特性面向对象如果让你推销一款Java产品,你会怎么推销呢?(java的特点)JVM与字节码JDK与JREStringBuilder和StringBuffer的区…

java/javascript 时间操作工具类

一、java 时间操作工具类 import org.springframework.util.StringUtils;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List;/*** 时间操作工具类** author zwq**/ public …

[转载] java语言程序设计-基础篇

参考链接: Java中的决策制定(if,if-else,switch,break,continue,jump) 第1章,计算机、程序和Java概述 包括【每个java初学者都应该搞懂的问题】 http://blog.csdn.net/haobo920/article/detai…

Exchange server 2013(十四)WSUS部署及组策略设置(2)

我们继续上一节未完的博客,继续我们的WSUS设置。[上一章节标题:Exchange server 2013(十四)WSUS部署及组策略设置(1) 网址:http://1183839.blog.51cto.com/blog/1173839/1182366] 首先单击自动审批,来修改审批规则,也就是说当wsus侦测到新的更…

[转载] Python中的switch语句的替代品

参考链接: Java中的switch语句 Python 中没有 switch语句。 一般用if-else 语句可以替代switch语句,今天学习了使用字典的映射来代替switch语句。Mark一下 day 8; def get_sunday(): return sunday def get_monday(): return monday def get_tues…

“□” 表情无法在 Android 设备显示? 快试试 EmojiCompact 表情兼容库

有了支持库 v26 下的 Compact 库,基于 API 19 及更高版本开发的应用就能获得 emoji 的向下兼容,再也不会看到显示失败的 “豆腐块” 啦。如要使用 EmojiCompact,需要在应用启动时通过下载或者打包字体来初始化库。通过集成小插件,…

[转载] jstl获取Parameter参数及switch使用

参考链接&#xff1a; Java中的字符串使用switch <% taglib uri"/WEB-INF/tld/c.tld" prefix"c" %> param 获取 Parameter参数 <c:choose> <c:when test"${empty param.name}"> Please enter your name. …

syslinux 制作多系统启动U盘

syslinux 制作多系统启动U盘标签&#xff1a;u盘使用 syslinux 制作多系统启动U盘 syslinux 能加载虚拟内存盘&#xff0c;能引导各种镜像文件&#xff0c;适合用于制作多系统启动U盘&#xff0c; 但是我按照网上说的步骤&#xff0c;总是不能制作成功&#xff1a; 1. 格式化…

[转载] JAVA基础----java中E,T,?的区别?

batch_size 1 layout "NHWC" target tvm.target.Target("cuda") dtype "float32" log_file "%s-%s-B%d.json" % (network, layout, batch_size)

用MATLAB结合四种方法搜寻罗马尼亚度假问题

选修了cs的AI课&#xff0c;开始有点不适应&#xff0c;只能用matlab硬着头皮上了&#xff0c;不过matlab代码全网仅此一份&#xff0c;倒有点小自豪。 一、练习题目 分别用宽度优先、深度优先、贪婪算法和 A*算法求解“罗马利亚度假问题”。具体地图我这里不给出了&#xff0c…

[转载] Java中文与ASCII码的转换

参考链接&#xff1a; 扩展Java中的原始转换 今天在研究Java中编码的时候&#xff0c;看到了Java中ascii码的强大。写了一个CoderUtils.java&#xff0c;以后会扩展它。 package com.xingxd.study.test; import java.io.File; import java.io.FileWriter; import java.io.I…

[转]Paul Adams:为社交设计

为社交设计 Strong, Weak, and Temporary Ties by Paul Adams on 2010/04/09 PS&#xff1a;作者Paul Adams Facebook全球品牌体验总监 电话和手机聚集十亿用户用了15年的时间&#xff0c;而Facebook只用了9个月。我们看到越来越多的人开始用在线社交网络&#xff0c;这种网络好…

[转载] Java中日期格式转换

参考链接&#xff1a; Java中的类型转换和示例 Code: /** * 字符串转换为java.util.Date<br> * 支持格式为 yyyy.MM.dd G at hh:mm:ss z 如 2002-1-1 AD at 22:10:59 PSD<br> * yy/MM/dd HH:mm:ss 如 2002/1/1 17:55:00<br> * yy/MM/dd HH:…

Android Framework中的Application Framework层介绍

Android的四层架构相比大家都很清楚&#xff0c;老生常谈的说一下分别为&#xff1a; Linux2.6内核层&#xff0c;核心库层&#xff0c;应用框架层&#xff0c;应用层。我今天重点介绍一下应用框架层Framework。 Framework层为我们开发应用程序提供了非常多的API&#xff0c;我…

[转载] java注释

参考链接&#xff1a; Java注释 Java注释 java中注释有三种&#xff1a;这些都称之为java doc标记&#xff0c;含义如下&#xff1a; java中注释有三种&#xff1a; 单行注释 //注释的内容&#xff0c;多行注释 /…注释的内容…/&#xff0c;文档注释 /**…注释的内容….*/。…

环路是怎样形成的实例

环路是怎样形成的一个由十多台交换机组成的小型局域网&#xff0c;交换机大多是Cisco的中低端系列产品。某日突然出现问题&#xff1a;局域网内的主机之间相互ping时&#xff0c;都出现延时长、丢包现象&#xff0c;网络应用奇慢无比。 观察交换机设备&#xff0c;指示灯看不出…

[转载] 《Python语言程序设计》课程笔记

参考链接&#xff1a; Python程式设计语言 文章目录 第一部分 Python快速入门第1周 Python基本语法元素第2周 Python基本图形绘制 第二部分 Python基础语法第3周 基本数据类型3.1 数字类型及操作3.3 字符串类型及操作3.4 模块2: time库的使用 第4周 程序的控制结构4.1 程序的分…

ORACLE中创建如何创建表,并设置结构和默认值

使用select语句查看EMP表&#xff0c;根据COMM排序 默认情况下&#xff0c;空值会自动排列在尾部。 利用nulls last排序时将空值置底 利用nulls first排序时将空值置顶 例 创建一张出版社表 使用语句 create table 表名&#xff08;列名1 类型&#xff0c;列名2 类型&#xff0…