03 PromQL
1 简单查询直接查询查询指标的所有时间序列。 123http_requests_total等价于http_requests_total{} 标签匹配PromQL支持使用=和!=两种标签完全匹配模式: 通过使用label=value可以选择那些标签满足表达式定义的时间序列; 反之使用label!=value则可以根据标签匹配排除时间序列; 1http_requests_total{instance="localhost:9090"} PromQL还可以支持使用正则表达式作为匹配条件,多个表达式之间使用|进行分离: 使用label=~regx表示选择那些标签符合正则表达式定义的时间序列; 反之使用label!~regx进行排除; 1http_requests_total{environment=~"staging|testing|development",method!="GET"} 范围查询 返回值中...
05 client-java
简介概述client_java是Prometheus针对JVM类开发语言的client library库,我们可以直接基于client_java用户可以快速实现独立运行的Exporter程序,也可以在我们的项目源码中集成client_java以支持Prometheus。 https://prometheus.github.io/client_java/getting-started/quickstart/
06 micrometer
1 Registry引入依赖通过添加如下依赖可以将 Micrometer 收集的服务指标数据发布到 Prometheus 中。 12345<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>${micrometer.version}</version></dependency> 当然如果你还没有确定好接入哪种监测系统,也可以先直接依赖micrometer-core,然后创建一个SimpleMeterRegistry。 可接入监控系统RegistryMicrometer 有一组包含各种监控系统实现的模块,其中的每一种实现被称为registry。 在深入了解 Micrometer 之前,我们首先来看一下监控系统的三个重要特征: 维度(Dimensionality):描述系统是否支持多维度数据模型...
08 grafana
1 基本概念数据源(Data Source)对于Grafana而言,Prometheus这类为其提供数据的对象均称为数据源(Data Source)。目前,Grafana官方提供了对:Graphite, InfluxDB, OpenTSDB, Prometheus, Elasticsearch, CloudWatch的支持。 仪表盘(Dashboard)通过数据源定义好可视化的数据来源之后,对于用户而言最重要的事情就是实现数据的可视化。在Grafana中,我们通过Dashboard来组织和管理我们的数据可视化图表: 在一个Dashboard中一个最基本的可视化单元为一个Panel(面板),Panel通过如趋势图,热力图的形式展示可视化数据。 并且在Dashboard中每一个Panel是一个完全独立的部分,通过Panel的Query Editor(查询编辑器)我们可以为每一个Panel自己查询的数据源以及数据查询方式,例如,如果以Prometheus作为数据源,那在Query Editor中,我们实际上使用的是PromQL,而Panel则会负责从特定的Prometheus中查...
10 最佳实践_springboot
SpringBoot如何接入Prometheus micrometer 是springboot项目的一个exporter 0 概述背景介绍 收集监测数据。 行业常见的收集监测数据方式主要分为推送(Push)和抓取(Pull)两个模式。以越来越广泛应用的Prometheus监测体系举例,可观测监控 Prometheus 版就是以抓取(Pull)模式运行的典型系统。应用及基础设施的监测数据以OpenMetrics标准接口的形式暴露给可观测监控 Prometheus 版,然后由可观测监控 Prometheus 版进行定期抓取并长期存储。 OpenMetrics,是云原生、高度可扩展的指标协议。 OpenMetrics定义了大规模上报云原生指标的事实标准,并支持文本表示协议和Protocol Buffers协议,文本表示协议在其中更为常见,也是在可观测监控 Prometheus 版进行数据抓取时默认采用的协议。 指标的数据模型由指标(Metric)名,以及一组Key/Value标签(Label)定义的,具有相同的度量名称以及标签属于相同时序集合。例如acme_http_rou...
04-1.POD
1 概念 是什么 Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。 一个Pod封装一个或多个多个容器,存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。 Pod代表部署的一个单位:Kubernetes中单个应用的实例,它可能由单个容器或多个容器共享组成的资源。 两种工作模式kubernetes中pod使用的两种方式 单容器模式:Pod中运行一个容器。“one-container-per-Pod”模式是Kubernetes最常见的用法; 在这种情况下,你可以将Pod视为单个封装的容器,但是Kubernetes是直接管理Pod而不是容器。 多容器模式:Pods中运行多个需要一起工作的容器。Pod可以封装紧密耦合的应用,它们需要由多个容器组成,它们之间能够共享资源,这些容器可以形成一个单一的内部service单位 -(类似docker swam?) 一个容器共享文件,另一个“sidecar”容器来更新这些文件。Pod将这些容器的存储资源作为一个实体来管理。 多容器模式Pods的设计可用于支持多进程的协...
04-10 Probe
1 概述概念探针:是由 kubelet 对容器执行的定期诊断。kubelet 调用由容器实现 Handler执行诊断。探针有三种类型的处理程序: ExecAction:在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。 CPSocketAction:对指定端口上的容器的 IP 地址进行 TCP 检查。如果端口打开,则诊断被认为是成功的。 HTTPGetAction:对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。如果响应的状态码大于等于200 且小于 400,则诊断被认为是成功的。和微服务的心跳检测类似,每隔一段时间,检测这个容器是否还正常工作,检测状态分为三种,每次检测,都会得到其中一种,k8s会根据检测到的不同状态,对容器进行不同的处理: 成功:容器通过了诊断。 失败:容器未通过诊断。 未知:诊断失败,因此不会采取任何行动。 分类探针主要有以下三种类型: livenessProbereadinessProbestartupProbe 容器重启策略容器重启策略PodSpec 中有一个 restartPolicy 字段,其值可以设置为...
04-2.Service
1 基本介绍概念在Kubernetes中,Pod中的网络是隔离的,而且IP随着pod的的变化而变化。 Kubernetes中抽象出来一个Service服务发现机制(只支持四层负载均衡,即通过IP端口转发)。Service为Pods提供了一个稳定的IP地址和DNS名称,以便其他应用程序可以通过这些标识符来访问该服务。 它还提供了负载均衡和服务发现的能力,可以将流量路由到一组具有相同标签的Pods中。 工作原理Service 被赋予一个唯一的 dns name。Service 通过 label selector 选定一组 Pod。Service 实现负载均衡,可将请求均衡分发到选定这一组 Pod 中 底层实现 域名的解析以来DNS组件。 kubernetes 的 dns 服务 (不同 kubernetes 版本的 dns 默认使用的也是不一样的,1.11 之前的版本使用的是 kubeDNS,较新的版 本使用的是 coredns) 每 个 K8s 节点上都有一个组件叫做 kube-proxy,kube-proxy 这个组件通过 watch(监视) 方法将始终监视着 apiserver...














