访问 prometheus.io 获取完整文档、示例和指南。
Prometheus 是一个 云原生计算基金会 项目,是一个系统和服务的监控系统。它按照设定的时间间隔从配置的目标收集指标,评估规则表达式,展示结果,并在观察到指定条件时触发警报。
Prometheus 区别于其他指标和监控系统的特点包括:
有多种方式可以安装 Prometheus。
已发布版本的预编译二进制文件可在 prometheus.io 网站的 下载 部分 获取。建议使用最新的生产版本二进制文件来安装 Prometheus。
有关所有详细信息,请参阅文档中的 安装 章节。
Docker 镜像可在 Quay.io 或 Docker Hub 获取。
你可以运行以下命令启动一个 Prometheus 容器进行试用:
docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
现在可以通过 http://localhost:9090/ 访问 Prometheus。
要从源代码构建 Prometheus,你需要:
首先克隆仓库:
git clone https://github.com/prometheus/prometheus.git
cd prometheus
你可以使用 go 工具将 prometheus 和 promtool 二进制文件构建并安装到你的 GOPATH 中:
go install github.com/prometheus/prometheus/cmd/...
prometheus --config.file=your_config.yml
但是,当使用 go install 构建 Prometheus 时,Prometheus 期望能够从 web/ui/static 下的本地文件系统目录读取其 Web 资源。为了让这些资源被找到,你必须从克隆的仓库根目录运行 Prometheus。同时请注意,除非使用 make assets 或 make build 显式构建,否则此目录不包含 React UI。
上述配置文件的示例可以在这里找到。
你也可以使用 make build 进行构建,这将编译 Web 资源,使得 Prometheus 可以从任何位置运行:
make build
./prometheus --config.file=your_config.yml
Makefile 提供了几个目标:
prometheus 和 promtool 二进制文件(包括构建和编译 Web 资源)Prometheus 捆绑了许多服务发现插件。你可以使用 Go 构建标签自定义构建中包含哪些服务发现。
要在使用 make build 构建时排除服务发现,请将所需的标签添加到 .promu.yml 文件中的 build.tags.all 下:
build:
tags:
all:
- netgo
- builtinassets
- remove_all_sd # 排除所有可选的服务发现
- enable_kubernetes_sd # 仅重新启用 kubernetes
然后像往常一样运行 make build。或者,直接使用 go build 时:
go build -tags "remove_all_sd,enable_kubernetes_sd" ./cmd/prometheus
可用的构建标签:
* remove_all_sd - 排除所有可选的服务发现(保留 file_sd、static_sd 和 http_sd)
* enable_<name>_sd - 当使用 remove_all_sd 时,重新启用特定的服务发现
如果你添加我们目前不认可的树外插件,可能需要额外的步骤来调整 go.mod 和 go.sum 文件。请务必在加载第三方代码时格外小心。
你可以使用以下命令在本地构建 Docker 镜像:
make promu
promu crossbuild -p linux/amd64
make npm_licenses
make common-docker-amd64
make docker 目标仅用于我们的 CI 系统,在本地运行时不会生成完全可用的镜像。
在 Prometheus 项目中,像 prometheus/common 和 prometheus/client-golang 这样的仓库被设计为可重用的库。
prometheus/prometheus 仓库构建的是一个独立的程序,并非设计为库使用。我们知道有人将其部分用作库,我们不会故意设置障碍,但希望你意识到,我们并未刻意使其作为库能良好工作。例如,你可能会遇到仅在作为库使用时才会出现的错误。
我们在 buf.build 上独立发布了我们的远程写入 Protobuf。
你可以将其用作库:
go get buf.build/gen/go/prometheus/prometheus/protocolbuffers/go@latest
这是实验性的。
为了遵守 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 应用的 README.md。
Apache 许可证 2.0,参见 LICENSE。