)
使用 vmalert Alertmanager 为 Grafana 构建 Datasource-Managed 可扩展告警体系VictoriaMetrics 实战指南【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetricsGrafana 自带的 Grafana-managed 告警模式依赖 SQL 数据库存储状态在规则规模增长后容易遭遇性能瓶颈。本指南以 VictoriaMetrics 项目中的官方文档 vmalert-datasource-managed-alerts-grafana 指南 为核心演示如何将规则评估从 Grafana 迁移到 vmalert并让 Grafana 仅作为统一告警 UI 呈现规则、通知与静默最终获得可水平扩展、规则可版本化的告警体系。读完本文你将掌握 Datasource-managed 与 Grafana-managed 两种模式的差异、vmalert 关键命令行参数的语义并能分别在 Docker Compose、Kubernetes 单节点vmsingle与集群vmcluster三种环境下完成部署与配置。Grafana 的两种告警模式Grafana 支持两种告警模式它们可以并行运行Grafana-managed告警规则的创建与评估完全发生在 Grafana 内部告警状态默认存储在 SQL 数据库中Grafana 也支持将状态历史写入 Prometheus 兼容数据库例如 VictoriaMetrics。Datasource-managed告警规则的定义、存储与评估都发生在外部的 vmalert 与 Alertmanager 中Grafana 仅提供 UI告警状态存储于 VictoriaMetrics。两种模式的对比如下表所示维度Grafana-ManagedDatasource-Managed规则存放位置Grafana 的 SQL 数据库vmalert 的 YAML 配置规则评估Grafana 的调度器vmalert水平扩展复杂需要高可用的 SQL 数据库简单增加更多 Pod 即可状态存储SQL 后端或 Prometheus 数据源VictoriaMetricsUI 管理能力在 Grafana 中完整创建/编辑仅查看依赖组件SQL GrafanaVictoriaMetrics版本控制复杂规则必须导出/导入简单规则就在 YAML 文件中将规则评估迁移到 vmalert 之后既可以规避 Grafana-managed 模式在默认关系型数据库上的扩展瓶颈又能保留 Grafana 统一的告警 UI实现“评估在 vmalert、展示在 Grafana”的职责分离。Datasource-managed 告警拓扑推荐的告警体系由以下服务组成VictoriaMetrics提供时序数据库持久化告警状态同时代理 vmalert 的告警 APIvmalert从配置文件读取告警规则针对 VictoriaMetrics 数据执行评估并将触发firing的告警转发给 AlertmanagerAlertmanager对告警进行分组grouping与路由routing投递到配置好的接收者recipientGrafana作为统一 UI通过 VictoriaMetrics 数据源查看规则与指标通过 Alertmanager 数据源查看通知与静默silence。值得注意的是Grafana 与 vmalert 之间并不直接通信Grafana 只把 VictoriaMetrics 当作 Prometheus 数据源而 VictoriaMetrics 通过-vmalert.proxyURL将/api/v1/rules、/api/v1/alerts等告警相关 API 请求反向代理给 vmalert。这一设计让 Grafana 无需感知 vmalert 的存在所有告警 UI 能力都通过 VictoriaMetrics 数据源透传获得。从源码层面看该代理逻辑位于 app/vmselect/main.go单节点版的 vmselect 与 vmsingle 共用同一套处理代码。例如在 app/vmselect/main.go 中/api/v1/rules与/api/v1/alerts两个路径在配置了-vmalert.proxyURL时会调用vmalertproxy.HandleRequest转发到 vmalert若未配置则返回空数组占位响应保证 Prometheus API 兼容性。此外/vmalert/前缀路径如/vmalert/rule/…也会在 app/vmselect/main.go 中被代理到 vmalert 的 Web 界面。真正的代理实现位于 lib/vmalertproxy/vmalertproxy.goInit解析 URL 并创建httputil.ReverseProxyHandleRequest在转发时重写请求路径与 Host。其中有一段针对 Grafana 的兼容处理当检测到请求User-Agent以Grafana开头时会自动追加datasource_typeprometheus查询参数参见 lib/vmalertproxy/vmalertproxy.go确保 Grafana 只按 Prometheus 风格解析告警数据避免日志、链路等其他告警类型导致 “Error loading alerts” 之类的兼容性问题。vmalert 演示环境Docker Compose本小节将用 Docker Compose 在本地搭建一套完整的 Datasource-managed 告警演示环境。请按顺序创建以下三个配置文件与compose.yml。步骤 1创建 vmalert 规则文件alerts.yml下面的配置包含一个“永远触发”的演示告警便于立刻在 Grafana 中看到效果以及一条可被 Grafana 直接绘图的记录规则recording rule# alerts.yml groups: - name: demo rules: # Always-firing demo alert so you see something immediately - alert: AlwaysFiring expr: vector(1) for: 10s labels: severity: warning annotations: summary: Demo alert that always fires description: This is a demo alert from vmalert using vector(1). # Simple recording rule you can graph in Grafana - record: demo:vector_one expr: vector(1)这里expr: vector(1)恒为 1配合for: 10s表示该表达式持续命中 10 秒后告警进入 firing 状态record则定义了一条名为demo:vector_one的记录规则vmalert 会将vector(1)的计算结果按-remoteWrite.url写回 VictoriaMetrics供 Grafana 查询。步骤 2创建 Alertmanager 配置alertmanager.yml示例中的 Alertmanager 不把告警转发到任何外部渠道仅作为 Grafana 的通知数据源# alertmanager.yml global: resolve_timeout: 5m route: receiver: log receivers: - name: logroute把所有告警路由到名为log的接收者receivers中该接收者没有配置任何投递方式因此告警只停留在 Alertmanager 内部恰好满足“供 Grafana 读取、但不打扰真实接收者”的演示需求。步骤 3创建 Grafana 数据源配置grafana-datasources.yml通过 provisioning 方式为 Grafana 预置 VictoriaMetricsPrometheus 类型与 Alertmanager 两个数据源# grafana-datasources.yml apiVersion: 1 datasources: - name: VictoriaMetrics type: prometheus access: proxy url: http://victoriametrics:8428 isDefault: true - name: Alertmanager type: alertmanager access: proxy url: http://alertmanager:9093 jsonData: implementation: prometheus其中 Alertmanager 数据源的jsonData.implementation: prometheus表明 Grafana 使用 Prometheus 兼容实现访问 Alertmanager APIisDefault: true让 VictoriaMetrics 成为默认数据源Grafana 将自动从其中发现 vmalert 管理的规则。步骤 4编写 Docker Compose 编排文件compose.ymlcompose.yml将四个服务串联起来并设置好各组件所需的关键命令行参数# compose.yml services: victoriametrics: image: victoriametrics/victoria-metrics:v1.151.0 command: - --storageDataPath/victoria-metrics-data - --selfScrapeInterval10s # Proxy vmalert APIs so Grafana can see rules via VictoriaMetrics - --vmalert.proxyURLhttp://vmalert:8880 ports: - 8428:8428 volumes: - vm-data:/victoria-metrics-data alertmanager: image: prom/alertmanager:v0.31.1 command: - --config.file/etc/alertmanager/alertmanager.yml ports: - 9093:9093 volumes: - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro vmalert: image: victoriametrics/vmalert:v1.151.0 depends_on: - victoriametrics - alertmanager command: # read metrics from VictoriaMetrics - --datasource.urlhttp://victoriametrics:8428 # store and retrieve alert state from VictoriaMetrics - --remoteRead.urlhttp://victoriametrics:8428 - --remoteWrite.urlhttp://victoriametrics:8428 # configure Alertmanager as the notifier - --notifier.urlhttp://alertmanager:9093 - --rule/etc/vmalert/alerts.yml - --evaluationInterval15s # external settings link vmalerts and Alertmanager to Grafana - --external.urlhttp://localhost:3000 - --external.alert.sourceexplore?orgId1left{\datasource\:\VictoriaMetrics\,\queries\:[{\refId\:\A\,\expr\:\{{.Expr|queryEscape}}\}]} ports: - 8880:8880 volumes: - ./alerts.yml:/etc/vmalert/alerts.yml:ro grafana: image: grafana/grafana:12.4 depends_on: - victoriametrics - alertmanager environment: GF_SECURITY_ADMIN_USER: admin GF_SECURITY_ADMIN_PASSWORD: admin GF_PATHS_PROVISIONING: /etc/grafana/provisioning ports: - 3000:3000 volumes: - ./grafana-datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml:ro - grafana-data:/var/lib/grafana volumes: vm-data: grafana-data:连接各组件的核心命令行参数逐个拆解compose.yml中把各组件连接起来的关键参数VictoriaMetrics-vmalert.proxyURL将 Grafana 对/api/v1/rules与/api/v1/alerts的请求转发到 vmalert从而在 Grafana UI 中看到规则。vmalert-datasource.url把 VictoriaMetrics 配置为规则评估的查询源。-remoteWrite.url定义 VictoriaMetrics 作为持久化规则状态的后端使告警状态在重启后不丢失。-remoteRead.url定义 VictoriaMetrics 作为读取 pending待触发告警历史状态的后端。-notifier.url将触发的告警发送到 Alertmanager。-external.url定义告警链接的公共基础地址让通知中的链接指向 Alertmanager 的公共 URL或 Karma、Grafana 等外部告警 UI。-external.alert.source创建可点击的告警链接模板使 Alertmanager UI 能直接链接回 Grafana。这些参数与 vmalert 源码中的 flag 定义一一对应。例如在 app/vmalert/main.go 中可以看到evaluationInterval默认 1 分钟、external.url默认使用主机名与external.alert.source的定义其中external.alert.source的说明还给出了两种内置模板示例链接到 Grafana 的-external.alert.sourceexplore?orgId1left{datasource:VictoriaMetrics,queries:[{expr:{{.Expr|jsonEscape|queryEscape}},refId:A}],range:{from:now-1h,to:now}}以及链接到 VMUI 的-external.alert.sourcevmui/#/?g0.expr{{.Expr|queryEscape}}模板中的{{.Expr}}会在触发时被替换为实际告警表达式。启动并验证执行以下命令启动整个演示环境docker compose up -d然后打开浏览器访问localhost:3000使用用户名admin、密码admin登录 Grafana。打开侧边栏AlertingAlert rules应能看到一条 pending 或 firing 的告警规则再次打开侧边栏进入AlertingActive notifications可以看到 Alertmanager 上报的活跃告警打开http://localhost:8428/vmui/?#/rules也能在 VMUI 中看到告警这依赖 VictoriaMetrics 配置了-vmalert.proxyURL打开http://localhost:9093/#/alerts可在 Alertmanager UI 中看到 firing 告警点击告警的Source链接会跳回 Grafana 并展示生成该告警的查询。vmalert 与 VictoriaMetrics 单节点vmsingle的 Kubernetes 部署本小节讲解如何在 Kubernetes 上为 VictoriaMetrics 单节点版本配置 Datasource-managed 告警。前置条件一个可用的 Kubernetes 集群VictoriaMetrics 单节点版Grafana安装时使用的 Helm values 或配置文件。如果你还没有这些组件可以先参考仓库中的 Kubernetes monitoring via VictoriaMetrics single 指南完成安装。1. 确认 VictoriaMetrics 与 Grafana 已安装首先添加并更新 VictoriaMetrics Helm 仓库helm repo add vm https://victoriametrics.github.io/helm-charts/ helm repo update确认单节点版已安装假设 release 名为vmsingle来自上述安装指南kubectl get pods -l app.kubernetes.io/instancevmsingle应看到单个 running 的 PodNAME READY STATUS RESTARTS AGE vmsingle-victoria-metrics-single-server-0 1/1 Running 0 48m同样确认 Grafana 已安装kubectl get pod -l app.kubernetes.io/namegrafana2. 安装 vmalert 与 Alertmanager创建一个名为vm-alerting-values.yml的 Helm values 文件。下面的示例自带两条演示告警你可以在config: alerts:一节中添加自己的 vmalert 告警规则cat EOF vm-alerting-values.yml # Enable and configure Alertmanager alertmanager: enabled: true config: global: resolve_timeout: 5m route: group_by: [alertname] group_wait: 30s group_interval: 5m repeat_interval: 12h receiver: log receivers: - name: log # place your default route here for notifications # Configure vmalert (server section in this chart) server: # vmalert evaluation datasource: point at vmsingles Prometheus-compatible API datasource: url: http://vmsingle-victoria-metrics-single-server.default.svc.cluster.local.:8428 # Where vmalert stores and reads alert state (remote write/read) remote: write: url: http://vmsingle-victoria-metrics-single-server.default.svc.cluster.local.:8428 read: url: http://vmsingle-victoria-metrics-single-server.default.svc.cluster.local.:8428 # Configure Alertmanager as notifier notifier: alertmanager: # Adjust namespace/name if you install into a non-default namespace or change the release name url: http://vmalert-victoria-metrics-alert-alertmanager:9093 # Inline demo rules. Add your alerting groups and rules here config: alerts: groups: - name: vm-health rules: - alert: TooManyRestarts expr: changes(process_start_time_seconds{job~victoriametrics|vmagent|vmalert}[15m]) 2 labels: severity: critical annotations: summary: {{ $labels.job }} too many restarts (instance {{ $labels.instance }}) description: Job {{ $labels.job }} has restarted more than twice in the last 15 minutes. It might be crashlooping. - alert: ServiceDown expr: up{job~victoriametrics|vmagent|vmalert} 0 for: 2m labels: severity: critical annotations: summary: Service {{ $labels.job }} is down on {{ $labels.instance }} description: {{ $labels.instance }} of job {{ $labels.job }} has been down for more than 2 minutes. EOF上述两条规则分别针对 VM 生态组件自身TooManyRestarts用changes(process_start_time_seconds[...][15m]) 2检测 15 分钟内进程重启超过两次可能处于 crashloopServiceDown用up{job~victoriametrics|vmagent|vmalert} 0且持续 2 分钟判断服务是否宕机。由于 vmsingle 在 compose 演示中开启了-selfScrapeInterval自身指标会被采集这些规则可以直接生效。然后安装 vmalert 与 Alertmanagerhelm install vmalert vm/victoria-metrics-alert -f vm-alerting-values.yml3. 配置 vmsingle 代理到 vmalert在 Datasource-managed 模式下Grafana 与 VictoriaMetrics 通信VictoriaMetrics 通过-vmalert.proxyURL参数把告警相关 API 调用代理给 vmalert。先查看 vmalert 的 Service 名称kubectl get svc -l app.kubernetes.io/instancevmalert,appserver得到 vmalert Service 的名称NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE vmalert-victoria-metrics-alert-server ClusterIP None none 8880/TCP 58m该 Service 在 default 命名空间下的内部 DNS 名称是vmalert-victoria-metrics-alert-server.default.svc.cluster.local:8880接下来创建包含 vmalert 内部 Kubernetes URL 的 Helm values 覆盖文件cat EOF vm-vmalert-proxy-values.yml # vm-vmalert-proxy-values.yaml server: extraArgs: vmalert.proxyURL: http://vmalert-victoria-metrics-alert-server.default.svc.cluster.local:8880 EOF通过同时应用你原有的 Helm values与这份新覆盖文件来更新 vmsingle 配置下面的示例中原 values 文件名为vmsingle-values-file.yml即首次安装集群时使用的文件helm upgrade vmsingle vm/victoria-metrics-single \ -f vmsingle-values-file.yml \ -f vm-vmalert-proxy-values.yml升级完成后vmsingle 会开始把/api/v1/rules、/api/v1/alerts以及 vmalert 的其他 Web 端点 代理到 vmalert 服务使 Grafana 的告警 UI 与 API 可以通过 VictoriaMetrics 数据源正常工作。完成后跳转到文末的 配置 Grafana 一节完成最后一步。vmalert 与 VictoriaMetrics 集群vmcluster的 Kubernetes 部署本小节讲解如何在 Kubernetes 上为 VictoriaMetrics 集群版本配置 Datasource-managed 告警。前置条件一个可用的 Kubernetes 集群VictoriaMetrics 集群版Grafana安装集群时使用的 Helm values 或配置文件。可先参考仓库中的 Kubernetes monitoring with VictoriaMetrics cluster 指南安装集群与 Grafana。1. 确认 VictoriaMetrics 集群与 Grafana 已安装添加并更新 Helm 仓库helm repo add vm https://victoriametrics.github.io/helm-charts/ helm repo update确认集群已安装假设 release 名为vmcluster来自上述安装指南kubectl get pods -l app.kubernetes.io/instancevmcluster应能看到vmselect、vminsert、vmstorage三类 Pod例如NAME READY STATUS RESTARTS AGE vmcluster-victoria-metrics-cluster-vminsert-b4d494b4c-cx2m5 1/1 Running 0 3m8s vmcluster-victoria-metrics-cluster-vminsert-b4d494b4c-xdv76 1/1 Running 0 3m8s vmcluster-victoria-metrics-cluster-vmselect-67979c98fc-7hfdl 1/1 Running 0 3m8s vmcluster-victoria-metrics-cluster-vmselect-67979c98fc-ftpzn 1/1 Running 0 3m8s vmcluster-victoria-metrics-cluster-vmstorage-0 1/1 Running 0 3m8s vmcluster-victoria-metrics-cluster-vmstorage-1 1/1 Running 0 2m48s默认情况下VictoriaMetrics 集群通过vminsert服务端口 8480暴露写入 API通过vmselect服务端口 8481暴露读取Prometheus 兼容API。默认安装时对应的 DNS 名称为写入vmcluster-victoria-metrics-cluster-vminsert.default.svc.cluster.local.:8480读取vmcluster-victoria-metrics-cluster-vmselect.default.svc.cluster.local.:8481确认 Grafana 已安装kubectl get pod -l app.kubernetes.io/namegrafana2. 安装 vmalert 与 Alertmanager创建vm-alerting-values.yml。下面的示例自带两条演示告警请把自定义的 vmalert 告警规则 添加到config: alerts:一节cat EOF vm-alerting-values.yml # Enable and configure Alertmanager alertmanager: enabled: true config: global: resolve_timeout: 5m route: group_by: [alertname] group_wait: 30s group_interval: 5m repeat_interval: 12h receiver: log receivers: - name: log # place your notification route here # Configure vmalert (server section in this chart) server: # vmalert evaluation datasource: point at vmselects Prometheus-compatible API datasource: url: http://vmcluster-victoria-metrics-cluster-vmselect.default.svc.cluster.local.:8481/select/multitenant/prometheus/ # Where vmalert stores and reads alert state (remote write/read) remote: write: # send ALERTS / recording rule series into vminsert url: http://vmcluster-victoria-metrics-cluster-vminsert.default.svc.cluster.local.:8480/insert/0/prometheus/ read: # read back alert state from vmselect url: http://vmcluster-victoria-metrics-cluster-vmselect.default.svc.cluster.local.:8481/select/0/prometheus/ # Configure Alertmanager as notifier notifier: alertmanager: # Adjust namespace/name if you install into a non-default namespace or change the release name url: http://vmalert-victoria-metrics-alert-alertmanager:9093 # Inline demo rules. Add your alerting groups and rules here config: alerts: groups: - name: vm-health rules: - alert: TooManyRestarts expr: changes(process_start_time_seconds{job~victoriametrics|vmagent|vmalert}[15m]) 2 labels: severity: critical annotations: summary: {{ $labels.job }} too many restarts (instance {{ $labels.instance }}) description: Job {{ $labels.job }} has restarted more than twice in the last 15 minutes. It might be crashlooping. - alert: ServiceDown expr: up{job~victoriametrics|vmagent|vmalert} 0 for: 2m labels: severity: critical annotations: summary: Service {{ $labels.job }} is down on {{ $labels.instance }} description: {{ $labels.instance }} of job {{ $labels.job }} has been down for more than 2 minutes. EOF与 单节点部署 的关键区别在于server.datasource.url与server.remote.read.url指向vmselect的读取端点/select/multitenant/prometheus/server.remote.write.url指向vminsert的写入端点/insert/multitenant/prometheus/。安装 vmalert 与 Alertmanagerhelm install vmalert vm/victoria-metrics-alert -f vm-alerting-values.yml3. 配置 VictoriaMetrics 集群代理到 vmalert在 Datasource-managed 模式下Grafana 与 VictoriaMetrics 通信VictoriaMetrics 通过-vmalert.proxyURL参数把告警相关 API 调用代理给 vmalert。集群版中该参数设置在vmselect上并指向 vmalert 服务使 Grafana 能够获取告警状态。先查看 vmalert 的 Servicekubectl get svc -l app.kubernetes.io/instancevmalert,appserver应看到类似输出NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE vmalert-victoria-metrics-alert-server ClusterIP None none 8880/TCP 58m该 Service 在 default 命名空间下的内部 DNS 名称是vmalert-victoria-metrics-alert-server.default.svc.cluster.local:8880为集群创建名为vmcluster-vmalert-proxy-values.yml的 Helm values 覆盖文件。victoria-metrics-clusterchart 中的vmselect.extraArgs允许向 vmselect 传递任意命令行 flag包括-vmalert.proxyURLcat EOF vmcluster-vmalert-proxy-values.yml vmselect: extraArgs: vmalert.proxyURL: http://vmalert-victoria-metrics-alert-server.default.svc.cluster.local:8880 EOF通过同时应用你原有的 Helm values与这份新覆盖文件来更新集群配置下面的示例中原 values 文件名为vmcluster-values-file.yml即首次安装集群时使用的文件helm upgrade vmcluster vm/victoria-metrics-cluster \ -f victoria-metrics-cluster-values.yml \ -f vmcluster-vmalert-proxy-values.yml升级完成后vmselect 会开始把/api/v1/rules、/api/v1/alerts以及 vmalert 的其他端点代理到 vmalert 服务使 Grafana 的告警 UI 与 API 可以通过 VictoriaMetrics 数据源正常工作。从源码验证上文提到的 app/vmselect/main.go 同样适用于集群版因为集群版中处理读取请求的 vmselect 与单节点版共用同一入口代码-vmalert.proxyURL在 app/vmselect/main.go 中被定义并在 app/vmselect/main.go 处完成初始化。配置 Grafana {#grafana}任何 Kubernetes 部署的最后一步都是把 Alertmanager 添加到 Grafana使 Grafana 在通过 VictoriaMetrics 数据源发现规则的同时也能展示通知。获取集群中 Alertmanager 的 Service 名称kubectl get svc -l app.kubernetes.io/instancevmalert,appalertmanager应看到类似输出NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE vmalert-victoria-metrics-alert-alertmanager ClusterIP 10.43.114.243 none 9093/TCP 68m然后将 Alertmanager 添加到 Grafana登录 Grafana 仪表盘进入ConnectionsDatasources点击 Add new data source搜索并选择 “Alertmanager”填写以下参数按需调整命名空间/服务名称Implementation实现PrometheusURLhttp://vmalert-victoria-metrics-alert-alertmanager.default.svc.cluster.local:9093确保 URL 与之前获取的 Alertmanager Service 名称一致点击Save Test。配置好 vmselect或 vmsingle的vmalert.proxyURL并把 Alertmanager 配置为数据源之后Grafana 应能通过 VictoriaMetrics 集群数据源展示 vmalert 的规则与告警实例并在 UI 中显示由 Alertmanager 管理的通知。告警体系架构小结综合三种部署形态可以看到Datasource-managed 告警体系始终遵循同一条链路vmalert 从 VictoriaMetrics 查询指标并评估规则 → 触发告警发送给 Alertmanager 分组路由 → vmalert 通过 remoteWrite/remoteRead 在 VictoriaMetrics 中持久化告警状态 → Grafana 通过 VictoriaMetrics 数据源经-vmalert.proxyURL代理发现规则通过 Alertmanager 数据源展示通知与静默。单节点与集群部署的唯一差异在于 URL 端点单节点统一使用 8428 端口的 Prometheus 兼容 API集群则区分vminsert:8480写入与vmselect:8481读取并携带/insert/、/select/路径前缀。这种架构带来的收益非常直接规则以 YAML 形式保存在 vmalert 配置中天然支持 Git 版本化与评审流程vmalert 无状态、可随业务量水平扩展增加 Pod 即可告警状态存储于 VictoriaMetrics 而非 SQL 数据库规避了 Grafana-managed 模式在数据量增长后的性能瓶颈。若希望深入理解 vmalert 的完整能力规则编写、模板、多租户等可继续阅读 app/vmalert/README.md若要掌握相关组件的 Helm 安装方式仓库中的 Kubernetes monitoring via VictoriaMetrics single 与 Kubernetes monitoring with VictoriaMetrics cluster 是很好的起点。【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考