0x00 简单的时间序列选择 返回度量指标 http_requests_total 的所有时间序列样本数据: http_requests_total 返回度量指标名称为 http_requests_total,标签分别是 job="apiserver", handler="/api/comments" 的所有时间序列样本数据: http_requests_total{job="apiserver", handler="/api/comm…
概述 Prometheus 提供了其它大量的内置函数,可以对时序数据进行丰富的处理.某些函数有默认的参数,例如:year(v=vector(time()) instant-vector).其中参数 v 是一个瞬时向量,如果不提供该参数,将使用默认值 vector(time()).instant-vector 表示参数类型. abs() abs(v instant-vector) 返回输入向量的所有样本的绝对值. absent() absent(v instant-vector),如果传递给它的向…
0x00 二元运算符 Prometheus 的查询语言支持基本的逻辑运算和算术运算.对于两个瞬时向量, 匹配行为可以被改变. 算术二元运算符 在 Prometheus 系统中支持下面的二元算术运算符: + 加法 - 减法 * 乘法 / 除法 % 模 ^ 幂等 二元运算操作符支持 scalar/scalar(标量/标量).vector/scalar(向量/标量).和 vector/vector(向量/向量) 之间的操作. 在两个标量之间进行数学运算,得到的结果也是标量. 在向量和标量之间,这个运算…
0x00 概述 Prometheus是继Kubernetes后第2个正式加入CNCF基金会的项目,容器和云原生领域事实的监控标准解决方案.在这次分享将从Prometheus的基础说起,学习和了解Prometheus强大的数据处理能力,了解如何使用Prometheus进行白盒和黑盒监控,以及Prometheus在规模化监控下的解决方案等.最后将从0开始构建完整的Kubernetes监控架构. 0x01 监控的目标 在<SRE:Google运维解密>一书中指出,监控系统需要能够有效的支持白盒监控和…
0x00 概述 Prometheus 是一个开源监控系统,它本身已经成为了云原生中指标监控的事实标准,几乎所有 k8s 的核心组件以及其它云原生系统都以 Prometheus 的指标格式输出自己的运行时监控信息.我在工作中也比较深入地使用过 Prometheus,最大的感受就是它非常容易维护,突出一个简单省心成本低.当然,这当中也免不了踩过一些坑,下面就总结一下. # 假如你没有用过 Prometheus,建议先看一遍 官方文档 0x01 接受准确性与可靠性的权衡 Prometheus 作为一个…
0x00 初衷 最近参与的几个项目,无一例外对监控都有极强的要求,需要对项目中各组件进行详细监控,如服务端API的请求次数.响应时间.到达率.接口错误率.分布式存储中的集群IOPS.节点在线情况.偏移量等. 比较常见的方式是写日志,将日志采集到远端进行分析和绘图,或写好本地监控脚本进行数据采集后,通过监控系统客户端push到监控系统中进行打点.基本上我们需要的都能覆盖,但仍然有一些问题在使用上不太舒服,如在大规模请求下日志采集和分析的效率比较难控制,或push打点的粒度和纬度以及查询不够灵活等.…
0x00 概述 Grafana 是一个开源的,可以用于大规模指标数据的可视化项目,甚至还能对指标进行报警.基于友好的 Apache License 2.0 开源协议,目前是prometheus监控展示的首选.优点如下: 1.使用: 配置方便:支持Dashboard.Panel.Row等组合,且支持折线图.柱状图等多种图例 图表漂亮:可以选择暗黑系或纯白系,你也可以自己定义颜色 模板很多:grafana模板很活跃,有很多用户贡献的面板,直接导入就能用 支持多种数据源:grafana作为展示面板,支…
最近学习K8S和基于容器的监控,发现了如下的教程质量不错,记录下来以备参考 1. K8S最佳实战(包括了K8S的Prometheus监控和EFK日志搜集) https://jimmysong.io/kubernetes-handbook/practice/ 2. Prometheus-book https://yunlzheng.gitbook.io/prometheus-book/ 3.  Prometheus实战 https://songjiayang.gitbooks.io/prometh…
0x00 概述 有时候对于一个公司,k8s集群或是所谓的caas只是整个技术体系的一部分,往往这个时候监控系统不仅仅要k8s集群以及k8s中部署的应用,而且要监控传统部署的项目.也就是说整个监控系统不是部署在k8s cluster中.非in-cluster的prometheus怎么监控k8s是今天需要讨论的问题.在上一篇文章解读了prometheus提供的监控k8s的配置文件,我们知道主要是采集node,cadvisor,service,endpoint,ingress和pod 6个方面.集群外…
0x00 Prometheus容器监控解决方案 Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的.它是一个独立的开放源码项目,并且独立于任何公司.不同于传统的运维监控工具,Prometheus是面向容器和微服务的监控系统,采用基于时间序列的存储方式,监控采集更加精确,监控频率更高,和容器和微服务兼容性更好.随着目前容器和微服务的使用日趋广泛,Prometheus的应用范围将会越来越广. 0x01 Prometheus架构 Prometheus是面…
0x00 概述 Prometheus和Grafana部署完成后,网络正常,配置文件正常,抓取agent运行正常,使用curl命令获取监控端口数据正常,甚至Prometheus内的targets列表内都是全绿,Grafana数据源配置也是全绿: 但是Prometheus查询界面(在Windows的浏览器上)无法查询出数据,Grafan展示页面(在Windows的浏览器上)也不显示相关的监控曲线和数据...... prometheus搜索指标显示No datapoints found...或者Gra…
K8S最佳实战(包括了K8S的Prometheus监控和EFK日志搜集) https://jimmysong.io/kubernetes-handbook/practice/ Prometheus-book https://yunlzheng.gitbook.io/prometheus-book/ Prometheus实战 https://songjiayang.gitbooks.io/prometheus/content/ Prometheus中文文档 https://www.yangcs.n…
0x00 概述 Prometheus 提供了一种功能表达式语言 PromQL,允许用户实时选择和汇聚时间序列数据.表达式的结果可以在浏览器中显示为图形,也可以显示为表格数据,或者由外部系统通过 HTTP API 调用. 0x01 表达式语言数据类型 在 Prometheus 的表达式语言中,表达式或子表达式包括以下四种类型之一: 瞬时向量(Instant vector) - 一组时间序列,每个时间序列包含单个样本,它们共享相同的时间戳.也就是说,表达式的返回值中只会包含该时间序列中的最新的一个样…
0x00 概述 Prometheus 当前稳定的 HTTP API 可以通过 /api/v1 访问. 0x01 API 响应格式 Prometheus API 使用了 JSON 格式的响应内容. 当 API 调用成功后将会返回 2xx 的 HTTP 状态码. 反之,当 API 调用失败时可能返回以下几种不同的 HTTP 状态码: 404 Bad Request :当参数错误或者缺失时. 422 Unprocessable Entity : 当表达式无法执行时. 503 Service Unava…
0x00 Prometheus是什么 Prometheus是一个开源的系统监控和报警工具,特点是 多维数据模型(时序列数据由metric名和一组key/value组成) 在多维度上灵活的查询语言(PromQl) 不依赖分布式存储,单主节点工作. 通过基于HTTP的pull方式采集时序数据 可以通过push gateway进行时序列数据推送(pushing) 可以通过服务发现或者静态配置去获取要采集的目标服务器 多种可视化图表及仪表盘支持 pull方式 Prometheus采集数据是用的pull也…
0x00 概述 视频讲解通过链接网易云课堂·IT技术快速入门学院进入,更多关于Prometheus的文章. Prometheus是最近几年开始流行的一个新兴监控告警工具,特别是kubernetes的流行带动了prometheus的应用. Prometheus是一套完整的监控告警系统: Prometheus的主要特点有: 1. a multi-dimensional data model with time series data identified by metric name and key…
0x00 k8s 的监控设计 k8s 默认以及推荐的监控体系是它自己的一套东西:Heapster + cAdvisor + Influxdb + Grafana,具体可以看 这里 . 包括 k8s 自身的 HPA (Horizontal Pod Autoscaler),默认从 Heapster 中获取数据进行自动伸缩.(顺便提一句,当你部署完 k8s 集群之后,如果从 Dashboard 中看不到监控数据,往往就是因为你没有部署 Heapster,或者网络层有问题, Dashboard 无法访问…
0x00 概述 Prometheus之于kubernetes(监控领域),如kubernetes之于容器编排.随着heapster不再开发和维护以及influxdb 集群方案不再开源,heapster+influxdb的监控方案,只适合一些规模比较小的k8s集群.而prometheus整个社区非常活跃,除了官方社区提供了一系列高质量的exporter,例如node_exporter等.Telegraf(集中采集metrics) + prometheus的方案,也是一种减少部署和管理各种expor…
0x00 概述 prometheus在容器云的领域实力毋庸置疑,越来越多的云原生组件直接提供prometheus的metrics接口,无需额外的exporter.所以采用prometheus作为整个集群的监控方案是合适的.但是metrics的存储这块,prometheus提供了本地存储,即tsdb时序数据库.本地存储的优势就是运维简单,启动prometheus只需一个命令,下面两个启动参数指定了数据路径和保存时间. storage.tsdb.path: tsdb数据库路径,默认 data/ st…
详细参考这篇文章 https://cloud.tencent.com/developer/article/1171434 prometheus 2.0于2017-11-08发布,主要是存储引擎进行了优化. 详细发布日志:https://prometheus.io/blog/2017/11/08/announcing-prometheus-2-0/ prometheus 2.0迁移指南:https://prometheus.io/docs/prometheus/2.0/migration/ pro…
0x00 概述 Prometheus 是一个开源和社区驱动的监控&报警&时序数据库的项目.来源于谷歌BorgMon项目.现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控.主要监控: Node:如主机CPU,内存,网络吞吐和带宽占用,磁盘I/O和磁盘使用等指标.node-exporter采集. 容器关键指标:集群中容器的CPU详细状况,内存详细状况,Network,FileSystem和Subcontainer等.通过cadvisor采集. Kubern…
0x00 变化 Prometheus 2.0 已经发布一段时间了,从今天开始我将分几篇文章为大家介绍其中的一些变化. 此篇文章主要介绍 2.0 的告警规则声明的新写法. 从 1.x 到 2.0 规则声明由自定义的 DSL 语法变成了标准的 yaml. 这么做的主要原因是 yaml 能够提供更丰富的配置信息,能够彻底解决告警规则分组问题. 在 2.0 中我们可以很方便的给不同告警组设置不同的检查轮询时间,详情请参考官方的文档. 0x01 升级 你的Prometheus 1.x已经运行一段时间了,其…
0x00 概述 当 Prometheus 有配置文件修改,我们可以采用 Prometheus 提供的热更新方法实现在不停服务的情况下实现配置文件的重新加载. 0x01 热更新 热更新加载方法有两种: #1. kill -HUP pid #2. curl -X POST http://IP/-/reload 当你采用以上任一方式执行 reload 成功的时候,将在 promtheus log 中看到如下信息: 如果因为配置信息填写不正确导致更新失败,将看到类似信息: ERRO[0161] Erro…
日志类: -log.level 可选值 [debug, info, warn, error, fatal]  例:-log.level "info" -log.format  可选输出到syslog或者控制台  例:-log.format "logger:syslog?appname=prom&local=7" 查询类: -query.max-concurrency 20  最大支持的并发查询量   -query.staleness-delta 5m0s …
最近用了prometheus 2.0 版本,感觉改变还是有点大,现将改变相关记录如下: 1.prometheus.yml文件配置修改后,要想重新加载,必须在启动的时候添加参数: --web.enable-lifecycle 比如: # nohup ./prometheus --web.enable-lifecycle --config.file=prometheus.yml & 2.报警规则和记录数据规则已经不在是  rules 文件格式,完全改成了yml格式 prometheus 提供了命令工…
Grafana有账户分权和管理功能,不过和一般的账户分权管理操作不一样.Grafana通过admin账户建立organization,在不通的org内配置数据源和用户,用户隶属于不通的org,只能看到该org内的数据展示. 在org内在进行用户操作权限的配置即可. Grafana中通过设置不同的组织,以及将用户分配到不同组织,来做到多租户,类似门户的概念. Grafana默认是不允许非管理员用户创建新的组织的,这个可以通过修改配置文件以允许非管理员用户创建组织: 下面演示下怎么新建组织,以及将组…
#include<glut.h> // 太阳.地球和月亮 // 假设每个月都是30天 // 一年12个月,共是360天 ;//day的变化:从0到359 void myDisplay(void) { glDepthFunc(GL_LEQUAL);//设置深度<=通过,与物体之间的前后有关 glEnable(GL_DEPTH_TEST);//深度检测 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PR…
</pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p><h3 style="margin:0px; padding:0px; color:rgb(51,51,51); font-family:Arial; line-height:26px; text-indent:28px">第三部分:显示全局异常信息,而不是局部异常信息.<…
Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. 2. 映射方式:@ExceptionHandler (), 括号里value是UserException.class 3. 传参进入UserException方法:(UserException ue, HttpServletRequest req) -----//1.把 UserException…
Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; >> META-INF  WEB-INF  login.jsp 表单:<form>中包含两个参数,action(目标) & method (方法).使用了<input>标签,type(text,password,submit), name,两个参数. <form…