• 介绍一个prometheus监控数据生成工具


    prometheus-data-generator

    Prometheus数据模拟工具旨在通过配置文件模拟Prometheus数据,用于测试和开发目的。该工具允许您生成用于测试和开发的合成数据。

    配置

    工具的配置信息存储在一个YAML文件中。以下部分描述了可用的选项:

    template_dir: ./templates
    output_dir: ./output
    template_value_dir: ./template_values
    
    global_config:
      template_value_path: ./template_values_without_unix.json
      days: 1
      resolution_seconds: 15
      endtime_unix: 1698048047
    
    template_without_unix_configs:
      - name: nvidia_gpu_exporter
        template_value_path: gpu_node_2.json
    
    template_with_unix_configs:
      - name: nvidia_gpu_exporter_with_unix
        template_value_path: samples_gpu_node_1.json
    

    全局配置

    全局配置部分包含适用于所有模板的设置,这些设置在global_config键下指定。可用的选项有:

    • template_value_path: 包含模板值的JSON文件的路径。默认情况下,工具在template_values目录中查找此文件。
    • days: 生成数据的天数。默认值为30。
    • resolution_seconds: 生成数据的分辨率(秒)。默认值为15。
    • endtime_unix: 生成数据的结束时间的Unix时间戳。默认值为1698048047。

    模板配置

    模板配置定义了各个模板及其特定设置。有两种类型的模板配置:

    • 无Unix时间戳的模板
      在template_without_unix_configs键下定义无Unix时间戳的模板配置。每个模板配置包括以下选项:

      • name: 模板的名称。
      • template_value_path: 包含此模板特定模板值的JSON文件的路径。默认情况下,工具在template_values目录中查找此文件。
    • 带Unix时间戳的模板
      在template_with_unix_configs键下定义带Unix时间戳的模板配置。每个模板配置包括以下选项:

      • name: 模板的名称。
      • template_value_path: 包含此模板特定模板值的JSON文件的路径。默认情况下,工具在template_values目录中查找此文件。

    模板格式

    格式为golang的text/template格式,具体模板参考 https://github.com/gmodx/prometheus-data-generator/tree/main/templates

    {{ range t := .Timestamps }}{{ range .Items -}}
    DCGM_FI_DEV_FB_FREE{instance="{{.IP}}:9400",gpu="{{.Index}}",UUID="{{.ID}}",device="{{.Vendor}}",modelName="{{.Model}}",Hostname="{{.IP}}"} {{ .RandomInt 501 10000 }} {{t}}
    DCGM_FI_DEV_FB_USED{instance="{{.IP}}:9400",gpu="{{.Index}}",UUID="{{.ID}}",device="{{.Vendor}}",modelName="{{.Model}}",Hostname="{{.IP}}"} {{ .RandomInt 1 500 }} {{t}}
    DCGM_FI_DEV_GPU_UTIL{instance="{{.IP}}:9400",gpu="{{.Index}}",UUID="{{.ID}}",device="{{.Vendor}}",modelName="{{.Model}}",Hostname="{{.IP}}"} {{ .RandomInt 1 100 }} {{t}}
    DCGM_FI_DEV_POWER_USAGE{instance="{{.IP}}:9400",gpu="{{.Index}}",UUID="{{.ID}}",device="{{.Vendor}}",modelName="{{.Model}}",Hostname="{{.IP}}"} {{ .RandomInt 1 500 }} {{t}}
    {{ end -}}{{ end -}}
    

    使用

    ./prometheus-data-generator --config.file=config.yaml
    Dec  1 03:46:22.488 nvidia_gpu_exporter, 2023-10-22T08:00:47Z -> 2023-10-23T08:00:47Z, step: 15s
    Dec  1 03:46:22.488 progress: 0%, 2023-10-22T08:00:47Z -> 2023-10-22T10:00:00Z
    Dec  1 03:46:22.488 process template...
    Dec  1 03:46:22.722 create blocks...
    BLOCK ULID                  MIN TIME                       MAX TIME                       DURATION     NUM SAMPLES  NUM CHUNKS   NUM SERIES   SIZE
    01HGHQR4GFSFXM8Q5SSNW7Y1RJ  2023-10-22 08:00:47 +0000 UTC  2023-10-22 09:59:47 +0000 UTC  1h59m0.001s  30528        256          64           72KiB840B
    Dec  1 03:46:22.950 progress: 8%, 2023-10-22T10:00:00Z -> 2023-10-22T12:00:00Z
    Dec  1 03:46:22.950 process template...
    Dec  1 03:46:23.118 create blocks...
    

    文件下载

    https://github.com/gmodx/prometheus-data-generator/releases/tag/v1.0.1

    源码

    https://github.com/gmodx/prometheus-data-generator

  • 相关阅读:
    Ajax学习:设置CROS响应头实现跨域(跨域资源共享)
    让ChatGPT等模型学会自主思考!开创性技术“自主认知”框架
    自定义MVC原理
    【Mysql】联表查询
    Linux系统编程:Linux基础
    pytorch案例代码-3
    A-level 物理实验题目
    基于Springboot+Vue+Element实现汽车租赁系统
    基于SpingBoot+vue的乡村公益助老平台
    架构-三层架构:三层架构
  • 原文地址:https://www.cnblogs.com/handsomer/p/17957370