Prometheus 架构及其特性
博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌
博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦
🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用微信支付,扫码加群。由于维护成本问题得不到解决,可能将停止线上维护。
🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟
Java项目案例《100套》
https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》https://blog.csdn.net/qq_57756904/category_12173599.html
有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。
最后再送一句:最好是学会了,而不是学废了!!
2
Prometheus 是一个 云原生计算基金会 项目,它是一个系统和服务的监控系统。它会从配置的目标中以指定的时间间隔收集指标,评估规则表达式,显示结果,并在观察到的条件满足时触发警报。
以下特性使得 Prometheus 与其他指标和监控系统区别开来:
- 多维度 数据模型(由指标名称和键/值维度集定义的时间序列)
- PromQL,一种 强大且灵活的查询语言,以利用这种维度
- 不依赖于分布式存储;单个服务器节点是自主的
- 使用 HTTP 拉取模式 收集时间序列
- 支持通过中间网关 推送时间序列,适用于批处理作业
- 目标可通过 服务发现 或 静态配置 进行发现
- 支持多种 图表和仪表盘模式
- 支持层级和水平 联合
架构概览
安装
安装 Prometheus 有多种方法。
预编译二进制文件
可在 下载 部分 的 prometheus.io 上获取发布版本的预编译二进制文件。使用最新生产版本的二进制文件是安装 Prometheus 的推荐方法。有关所有详细信息,请参见文档中的 安装 章节。
Docker 镜像
Docker 镜像可在 Quay.io或 Docker Hub 上获取。
您可以启动一个 Prometheus 容器来试用...
docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
Prometheus 现在可以通过 http://localhost:9090/ 访问。
从源代码构建
要从源代码构建 Prometheus,您需要:
Go 版本 1.22 或更高。
NodeJS 版本 22 或更高。
npm 版本 8 或更高。
首先,克隆仓库:
git clone https://github.com/prometheus/prometheus.git
cd prometheus
您可以使用 go
工具来构建并安装 prometheus
和 promtool
二进制文件至您的 GOPATH
目录中:
GO111MODULE=on go install github.com/prometheus/prometheus/cmd/...
prometheus --config.file=your_config.yml
然而,在利用 go install
构建 Prometheus 时,Prometheus 需要从本地文件系统下的 web/ui/static
和 web/ui/templates
目录中读取其 Web 资产。为了找到这些资产,您需要从克隆仓库的根目录运行 Prometheus。请注意,除非已经使用 make assets
或 make build
显式构建,否则这些目录不包括 React 用户界面。
上述配置文件的示例可以在此处找到:配置文件示例。
您还可以使用 make build
进行构建,这将编译 Web 资产,从而使得 Prometheus 可以从任何位置运行:
make build
./prometheus --config.file=your_config.yml
Makefile 提供了以下多个构建目标:
- build:构建
prometheus
和promtool
二进制文件(包括构建和编译 Web 资产) - test:运行测试
- test-short:运行简短测试
- format:格式化源代码
- vet:检查源代码中的常见错误
- assets:构建 React 用户界面
服务发现插件
Prometheus 集成了许多服务发现插件。在从源代码构建 Prometheus 时,您可以编辑 plugins.yml 文件以禁用某些服务发现功能。该文件是一个 YAML 格式的列表,包含了将会被编译进 Prometheus 二进制文件的 Go 导入路径。
修改文件后,您需要重新运行 make build
。
如果您使用其他方法编译 Prometheus,make plugins
将相应地生成插件文件。
如果您添加了树外插件,我们目前不推荐这么做,可能需要额外的步骤来调整 go.mod
和 go.sum
文件。加载第三方代码时,请始终保持警惕。
构建 Docker 镜像
make docker
目标旨在用于我们的 CI 系统。您可以使用以下命令在本地构建 Docker 镜像:
make promu
promu crossbuild -p linux/amd64
make npm_licenses
make common-docker-amd64
将 Prometheus 作为 Go 语言库使用
远程写入
我们独立发布了我们的远程写入 protobuf 定义,在 buf.build 上可以找到。
您可以将它作为库来使用:
go get buf.build/gen/go/prometheus/prometheus/protocolbuffers/go@latest
这是实验性的。
Prometheus 代码库
为了遵守 go mod 规则, Prometheus 的版本号与 Go 模块的发布版本号不完全匹配。
对于 Prometheus v3.y.z 版本的发布,我们将发布等价的 v0.3y.z 标签。在 v0.3y.z 中,y 始终填充为两位数字,如有必要,前面加零。
因此,希望将 Prometheus v3.0.0 作为库使用的用户可以这样做:
go get github.com/prometheus/prometheus@v0.300.0
对于 Prometheus v2.y.z 版本的发布,我们提供了相应的 v0.y.z 标签。
因此,一个希望将 Prometheus v2.35.0 作为库使用的用户可以这样做:
go get github.com/prometheus/prometheus@v0.35.0
此解决方案明确了我们可能会在面向用户的次要版本之间破坏内部 Go API,因为在主版本零中允许破坏性变更。
React UI 开发
关于基于 React 的 UI 构建、运行和开发的更多信息,请参阅 React 应用的README.md。