Spring cloud微服务安全实战-7-3prometheus环境搭建

Prmetheus 主要用来做来Metrics的监控和报警,这张图是官方的架构图。

这是他的核心 它的作用是根据我们的配置去完成数据的采集、服务的发现,以及数据的存储。

这是服务的发现,通过Service discovery,prmethesu就会知道去哪里采集数据。Service discovery有两种形式,一种是是静态的,就是通过文件去配。告诉它你要去哪拿这个Metrics的数据,另一种就是动态的,通过zookeeper或者其他的一些配置中心,配置中心里面的数据变化的时候,Prometheus也跟着变,去不同的地方去抓数据,

这都是我的应用来提供的,普罗米修斯是抓数据,是一个拉的模式,Prometheus调用我们的接口,然后把我们的数据抓走,是Prometheus来我们这拉数据,这样的好处是,对于我们的应用来说,我们不需要知道Prometheus的服务在哪的,不需要做这些配置,我们只要暴露我们的数据就看可以了。 统一在Prometheus里面来配置.这样Prometheus就可以去各种 地方抓各种各样的数据。

Pushgateway是用来支持推模式的,因为有些时候,有些数据它并不是一直存在的,比如说我们的定时任务,Prometheus来抓的时候,我的定时任务刚好没启动,那么你就抓不到数据,所以向定时任务的数据 它会发给Pushgateway一个推送网关,这个时候,定时任务调用Pushgateway调用的接口,把数据直接给到Pushgateway。然后Prometheus去Pushgateway去拿东西,相当于Pushgateway是一个中间的临时存储,把这种短活的数据把它存储起来。然后供Prometheus来拉。

采集的都是一些格式化的数据,流量啊,响应时间,这些数字格式化的数据,这个页面可以帮你把这些数据 图形化的展示出来。但这个页面很简陋。所以为了解决这个问题有个专门的项目叫做Grafana,它是一个更高级的图形界面Grafana,它可以从Prometheus里面拿数据。把数据用图标的形式展示出来。然后让你一眼就看到你现在的系统是什么状况。
当然你可以自己去写代码API clients去调Prometheus的服务,然后你自己拿出来去做处理。。

他们和Prometheus通讯的时候,主要 用到的语言是PromQL,Prometheus自己的一个查询语言,和SQL类型,但是唯一不同的是,这个语言只能写查询,

右上角,AlertManager管理警告警用的,它来做报警,报警的方式有很多种。
Prometheus和AlertManager之间会有一些推送,你可以定义一些规则,Prometheus是做Metrics监控的,所谓的Metrics就是所有可以用数字来表示的数据,都可以用Metrics来采集。比如说你的系统的流量,服务的相应时间 ,那么根据这些Metrics可以去定义一些规则,比如说可以定义,服务的相应时间 如果大于100毫秒,那么我就报警,如果你定下了这样的规则以后,Prometheus隔一段时间,这个时间也是你自己指定的,比如说每隔10秒,或者每隔一分钟就去评估一下采集到的数据,然后根据你定的规则去评估,如果你采集的数据超过了你定义的预值,比如说响应时间超过了100毫秒,那么它就会往这边推送一个警告。但是这个警告推过去以后,并不会立刻报警。因为它会再连续的评估几个周期。比如说你设的评估周期是10秒。他可能再评估5次左右,在这个后面5次都是要报警的情况,它才会真正的报这个警。而不是说每一次评估没过就立马报警。这样很可能就会出现误报的情况。比如说网络抖动啊。导致你的服务某些情况延迟了。 但是可能这些抖动,可能马上就会过去了。 这个时候如果你采集到异常数据,马上报警。很可能有很多的报警是假的,是没有真正发现问题的。

这个就是整个Prometheus大的架构
在项目里面建了个文件夹。叫做monitoring,监控的一个文件夹,

这里面放了很多的配置文件。代码不再敲了  带着大家一行行的去读代码。

这是一个docker的复合文件,作用是一次替我装几个docker镜像。

一旦你装了Prometheus,橙色的框的就都安装上了 , 只有黄色的框需要单独安装。

这里安装了两个 一个是prometheus和hgrafana,
image配置的,启动后就会docker的中央仓库把它拉下来。一run起来,我就有了一个Prometheus的服务器了。

每个镜像run的时候就生成一个容器,给这个容器起个名字prometheus.

我们下了prometheus,我们要给它一些配置,告诉你这个prometheus去哪里抓数据,

需要有一个服务发现的配置。告诉它你要去我的那些服务orderService抓我的监控数据,,那么这些配置怎么放进去。就是通过volumes ,挂载卷的方式,

也就是我们之前讲的物力资源映射到容器的方式

那么映射的值是什么?就是配置的这个

冒号前面是我本地机器的目录,相对我当前所在的这个目录,里面的prometheus文件夹。

实际上指的就是我左边项目里的这个文件夹,里面放了一个prometheus的配置文件。
然后我把这个文件放在prometheus镜像里的/etc/prometheus这个文件夹下面。

也就是说这各prometheus.yml最终会出现在镜像的/etc/prometheus/这个目录里。默认情况prometheus就是从这个路径下/etc/prometheus读配置文件的。这样我就可以把我的配置文件放到了prometheus的镜像里,那么跑的时候就按照我定义的配置来跑。

机器访问用9092端口,9090是容器的端口。为什么没有用9090的端口,因为我的9090端口被认证服务器的api占用了。所以这里把它映射到9092


进入到monitoring文件夹

-f指定一个文件为docker-compose.yml 。up是启动。

第一跑的话,可能会有下镜像的日志,因为这里已经运行过了。所以这里直接量done

访问9092。这个是就peometheus自身带的ui

targets就是你要从哪里采集你的数据

现在这里有两个目标。一个是prometheus本身。它从自己9090/metrics这个路径来采集信息,状态 up表示正常启动。因为prometheus本身是启动着的,

最新的一次从这个端点获取数据,

srpingBoot这个app还没启动起来。

那么这两个目标是从哪里来的呢?

它怎么知道去要去这个位置抓springboot-app的 信息的呢?

prometheus.yml的配置文件

全局的配置,抓取的频率。prometheus是一个拉的模式,每隔一段时间去目标拉取数据,合理配置的就是拉取的频率默认是每隔十五秒一次。

拉取的目标,定义了两个job

抓取prometheus本身的时候又配置了 scrape_interval频率是5秒。这就意味着抓取自己的时候是 5秒每次。

静态的配置下有个targets,就是你要去哪抓数据。配置的是去本机的9090端口去抓。

prometheus是跑在容器里面的,容器你本身可以认为它就是一个机器。我们自己的电脑是另一个机器。你要理解为这两个是两个完全不同的机器。这个配置文件你要明白它是放在prometheus的机器上的。

抓数据,请求路径。一会我们会在Order-APi上做一些操作,让他可以提供出这个路径的接口来。供普罗米修斯来抓数据。

你要去运行docker环境的宿主机的9082端口上去抓,springboot-app的数据。 一会我们会吧orderAPi跑在9082的端口上。

labels就是把抓出来的数据打一个标签。标签名字叫做springboot-app

结束

原文地址:https://www.cnblogs.com/wangjunwei/p/12001221.html

时间: 2024-10-07 01:53:13

Spring cloud微服务安全实战-7-3prometheus环境搭建的相关文章

Spring cloud微服务安全实战-7-11PinPoint+SpringBoot环境搭建

微服务的最后一个组件, 调用链监控,一个请求进来以后,经过N多个微服务,例如a调用了b.b又调用了c,那么在这个过程中看到,整个的调用的链路,然后每一段调用所耗费的时间,帮你去分析你的系统如果出现瓶颈以后,瓶颈到底在什么地方. pinpoint 点击看一下在线的demo 提供的一些应用的列表 选择order.这张图就是order这个服务的调用图. 出去调用的一层,分别调用了product和payment还有mysql数据库 outbound选择两层的话 图就会刷新.每一个箭头上都有数字,数字就是

Spring Cloud微服务框架 实战企业级优惠券系统

第1章 课程介绍[终于等到你,快来认识我]本章中将对课程中涉及到的技术.工具.业务等进行简单介绍. 第2章 准备工作[工欲善其事,必先利其器]本章中将对课程中使用到的技术工具做介绍,包括Maven.MySQL.Redis.Kafka:会对它们的功能.安装.基本的使用方法进行介绍. 第3章 SpringBoot 开发框架[基础打不牢,学问攀不高]课程主体业务使用SpringCloud框架开发实现,但是SpringCloud基于SpringBoot实现.为便于更顺畅学习,本章中会对SpringBoo

Spring cloud微服务安全实战

第1章 课程导学我们会对整个课程的内容做一个简要的介绍,包括章节的安排,使用的主要技术栈,实战案例的介绍以及前置知识的介绍等内容. 第2章 环境搭建开发工具的介绍及安装,介绍项目代码结构并搭建,基本的依赖和参数设置. 第3章 API安全我们从简单的API场景入手,讲述API安全相关的知识.首先我们会介绍要保证一个API安全都需要考虑哪些问题,然后我们针对这些问题介绍常见的安全机制,我们会针对每种问题和安全机制编写相应的代码,让大家对这些问题和安全机制有一个初步的认识.... 第4章 微服务网关安

Spring cloud微服务安全实战完整教程

本文配套视频教程及资料获取:点击这里 Spring Cloud微服务安全实战 采用流行的微服务架构开发,应用程序访问安全将会面临更多更复杂的挑战,尤其是开发者最关心的三大问题:认证授权.可用性.可视化.本课程从简单的API安全入手,过渡到复杂的微服务场景,解决上述三大问题痛点,并结合实际给出相应解决方案.帮助大家形成对安全问题的系统性思考,实战开发一套可在中小公司落地的完整的安全方案. 学习目标: 技术要点: 环境参数: 本文配套视频教程及资料获取:点击这里 原文地址:https://www.c

Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器

上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌. 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后,才会在前边加一个过滤器去验令牌(配置@EnableResourceServer 配置类) 2,要让他知道自己是什么资源服务器(配置资源服务器ID) 3,配置去哪里验令牌,怎么验令牌,要带什么信息去验 (配置@EnableWebSecurity 配置TokenServices,配置Authentica

Spring cloud微服务安全实战-4-7重构代码以适应真实环境

现在有了认证服务器,也配置了资源服务器.也根据OAuth协议,基于令牌认证的授权也跑通了.基本的概念也有了简单的理解. 往下深入之前,有几个点,还需要说一下 使用scopes来控制权限,scopes可以理解为之前的ACL 第三章的时候自己写的ACL来控制的读写权限.在OAuth协议里面用scopes来实现ACL的权限控制,两方面,首先在服务器这一端,可以针对不同的应用发出去不同权限的令牌, . 比如针对oderApp可以有读权限,也可以有写的权限. 针对orderService发出去的就只有re

Spring cloud微服务安全实战-5-7实现基于session的SSO(客户端应用的Session有效期)

授权模式改造成了Authorization code完成了改造的同时也实现了SSO.微服务环境下的前后端分离的单点登陆. 把admin的服务重启.刷新页面 并没有让我去登陆,直接就进入了首页. order的API控制台 只要你在认证服务器上的session没过期.认证服务器就知道你是谁,他就不会让你输入用户名密码了.直接跳回到客户端应用. 一共有三个有效期. 退出操作 退出的时候.现在前端服务器清空session,认证服务器也需要清空session 在前端服务器退出后,再跳转到认证服务器执行退出

Spring cloud微服务安全实战-6-2JWT认证之认证服务改造

首先来解决认证的问题. 1.效率低,每次认证都要去认证服务器调一次服务. 2.传递用户身份,在请求头里面, 3.服务之间传递请求头比较麻烦. jwt令牌. spring提供了工具,帮你在微服务之间传递令牌.让你不用去写额外的代码 服务器端的改造 看一下认证服务器配置的这个类.这里有个tokenStore,就是令牌的存储器.现在用的是jdbc的TokenStore,令牌是存在数据库里的 我们new  一个jwtTokenStore它 需要一个参数jwtTokenEnhancer 需要set一个ke

Spring Cloud微服务安全实战_4-10_用spring-cloud-zuul-ratelimit做限流

本篇讲网关上的限流 用开源项目spring-cloud-zuul-ratelimit 做网关上的限流 (项目github:https://github.com/marcosbarbero/) 1,在网关项目里,引入限流组件的maven依赖: 2,在网关项目yml配置里,配限流相关配置 github也有相关配置说明:https://github.com/marcosbarbero/spring-cloud-zuul-ratelimit 限流框架限流需要存一些信息,可以存在数据库里,也可以存在red

Spring Cloud微服务安全实战_5-2_基于session的SSO

上一篇将OAuth2授权模式的password模式改造成了授权码模式,并初步实现了一个前后端分离架构下基于session的微服务的SSO.用户在客户端点击登录,会跳转到认证服务器的登录页面进行登录,登录成功后,认证服务器回调到客户端应用的callback方法,并携带了授权码,客户端拿着授权码去认证服务器换取access_token ,客户端拿到access_token后存到自己的session,就认为该用户已登录成功. 上边这个流程是一个基于session的SSO,其中有三个效期: 1,客户端应