跳转到主要内容

基于Python的Prometheus Veeam Entreprise Exporter

项目描述

veeam_exporter

概述

dashboard overview

描述

Prometheus导出器用于Veeam Entreprise Manager

此导出器从Veeam Enterprise Manager HTTP API收集指标。

它是一个Python HTTP服务器,向http(默认端口9247)公开指标,然后可以被Prometheus抓取。

可以通过将它们添加到YAML配置文件中的主机部分来轮询多个Veeam服务器

配置:(见config.yml)

veeams:
  - host: host.domain
    port: 9398
    user: 'user'
    password: 'password'
#   protocol: https
#   verify_ssl: false
#   timeout: 20
#   keep_session: true # default
#   default_labels:
#     - name: veeam_em
#       value: my_veeam_em_server.domain
#       proxy:
#         url: http://my.proxy.domain:port/
#         protocol: https

weblisten:
  address: 0.0.0.0
  port: 9247

logger:
  level: info
  facility: syslog

metrics_file: "conf/metrics/*_metrics.yml"

用法

导出器可以作为带有模块安装的Unix命令运行,也可以作为不带安装的独立Python脚本运行。

作为系统命令的用法

最简单的方法是使用pip安装

pip3 install --upgrade veeam_exporter

然后您可以使用由模块安装器创建的入口点,在/usr/local/bin/veeam_exporter中或[venv]/bin/veeam_exporter中创建,用于venv上下文。推荐用法是在venv中。

作为Python脚本使用

要使用导出器,需要安装一些软件包。这可以通过以下方式完成

pip3 install -r pip_requirements.txt

requirements.txt的内容

Prometheus-client>=0.8.0
requests==2.23.0
PyYAML==5.3.1
tenacity==6.2.0
urllib3>=1.25.9
Jinja2>=2.11.2
python-dateutil>=0.6.12
  • 考虑在/tmp文件夹中提取归档文件;这将生成文件夹/tmp/veeam_exporter_[version]。
  • 在您想要的目录中创建一个目录,例如/opt/veeam_exporter_[version],
  • 将/tmp/veeam_exporter_[version]/veeam_exporter_package目录移动到/opt/eeam_exporter_[version]
  • 在/opt/veeam_exporter_[version]目录中创建一个命令文件以启动导出器
vi /opt/veeam_exporter_X.Y.Z/veeam_exporter_cmd
#!/usr/libexec/platform-python
# -*- coding: utf-8 -*-
import re
import sys
from veeam_exporter.veeam_exporter import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())
  • 然后编辑conf/config.yml文件并添加您的设置。
  • 通过执行命令以尝试模式尝试您的配置

使用默认的虚拟配置文件示例

python3 veeam_exporter_cmd -n -v
veeam_exporter[647132]: level=INFO - veeam_exporter 1.0.3 starting....
veeam_exporter[647132]: level=DEBUG - config is {'veeams': [{'host': 'host.domaine', 'port': 9398, 'user': 'user', 'password': 'password', 'verify_ssl': False, 'timeout': 20}], 'weblisten': {'address': '0.0.0.0', 'port': 9247}, 'logger': {'level': 'info', 'facility': 'syslog'}, 'metrics_file': 'conf/metrics/*_metrics.yml'}
veeam_exporter[647132]: level=ERROR - Connection Exception: Host host.domaine: HTTPSConnectionPool(host='host.domaine', port=9398): Max retries exceeded with url: /api/sessionMngr/?v=latest (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fa9e4eab9b0>: Failed to establish a new connection: [Errno -2] Name or service not known',))
veeam_exporter[647132]: level=DEBUG - # HELP veeam_em_up probe success  login status: 0 Down / 1 Up
veeam_exporter[647132]: level=DEBUG - # TYPE veeam_em_up gauge
veeam_exporter[647132]: level=DEBUG - veeam_em_up 0.0
veeam_exporter[647132]: level=INFO - veeam_exporter 1.0.3 stopped.

导出器命令行选项

启动导出器

./veeam_exporter &

默认情况下,它将加载config.yml文件以执行操作。

详细选项
Usage: veeam_exporter [-h] [-b BASE_PATH] [-c CONFIG_FILE]
                      [-f LOGGER.FACILITY] [-l {error,warning,info,debug}]
                      [-o  METRICS_FILE] [-m  METRIC] [-n] [-t  TARGET]
                      [-w WEB.LISTEN_ADDRESS] [-V] [-v]

collector for veeam server.

optional arguments:
  -h, --help            show this help message and exit
  -b BASE_PATH, --base_path BASE_PATH
                        set base directory to find default files.
  -c CONFIG_FILE, --config_file CONFIG_FILE
                        path to config files.
  -f LOGGER.FACILITY, --logger.facility LOGGER.FACILITY
                        logger facility (syslog or file path).
  -l {error,warning,info,debug}, --logger.level {error,warning,info,debug}
                        logger level.
  -o  METRICS_FILE, --metrics_file METRICS_FILE
                        collect the metrics from the specified file instead of
                        config.
  -m  METRIC, --metric METRIC
                        collect only the specified metric name from the
                        metrics_file.
  -n , --dry_mode       collect the metrics then exit; display results to
                        stdout.
  -t  TARGET, --target TARGET
                        In dry_mode collect metrics on specified target.i
                        Default first from config file.
  -w WEB.LISTEN_ADDRESS, --web.listen-address WEB.LISTEN_ADDRESS
                        Address to listen on for web interface and telemetry.
  -V, --version         display program version and exit..
  -v , --verbose        verbose mode; display log message to stdout.

要测试您的配置,您可以在dry_mode下启动导出器

./veeam_exporter -v -n -t host.domain

此命令将尝试连接到'host.domain' veeam服务器,使用config.yml中指定的参数,公开收集到的指标,并最终显示警告或错误,然后退出。

普罗米修斯配置

由于可以在导出器中设置多个Veeam服务器,普罗米修斯通过在URL中添加目标参数来区分每个服务器。目标参数必须与导出器配置文件中的相同(按字典顺序)。

  - job_name: "veeam"
    scrape_interval: 120s
    scrape_timeout: 60s
    metrics_path: /metrics

    static_configs:
      - targets: [ veeamhost.domain ]
        labels:
          environment: "PROD"
#    file_sd_configs:
#      - files: [ "/etc/prometheus/veeam_exp/*.yml" ]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: "veeam-exporter-hostname.domain:9247"  # The veeam exporter's real hostname.

指标

收集的指标定义在conf/metrics文件夹中的单独文件中。所有值、计算和标签都在指标文件中定义,这意味着导出器在内部不对值进行任何操作。配置完全控制值的呈现方式。

收集的指标

所有指标都定义在配置文件中(conf/metrics/*.yml)。您可以在此处检索所有指标名称。其中大部分都有帮助文本。

文件 指标
veeam_overview_metrics.yml 一般结果 按类型“备份”、“代理”、“存储库”、“计划作业”、“成功虚拟机”、“警告虚拟机”进行计数
vm_overview_metrics.yml 虚拟机一般结果 按保护类型“受保护”、“已备份”、“已复制”、“恢复点”进行计数的虚拟机数量
按类型“完全备份点”、“增量备份点”、“副本恢复点”、“源虚拟机”计数的虚拟机总大小(以字节为单位)
虚拟机成功备份的百分比
repositories_metrics.yml 存储库 按名称和类型统计每个存储库的总大小和空闲大小(以字节为单位)
jobs_overview_metrics.yml 作业通用信息 作业类型的各种计数:“运行中”、“已计划”、“计划备份”、“计划副本作业计数”
按类型“总次数”、“成功”、“警告”、“失败”计数的作业运行总数
按类型和名称计数的作业最长的最大持续时间
backup_agent_metrics.yml 备份代理 备份代理状态1 在线 / 2 离线,按名称、类型和版本进行标记
backup_servers_metrics.yml 备份服务器 每个备份服务器的配置,按名称、描述、端口、版本标记:不收集值(返回1)
backup_jobs_sessions_metrics.yml 备份作业运行 最后备份作业运行的信息状态、持续时间、重试,按备份服务器、作业名称、作业类型标记
vm_backup_jobs_sessions_metrics.yml 虚拟机备份作业运行 最后虚拟机备份作业运行的信息状态、持续时间、重试、总字节数,按备份服务器、作业名称、虚拟机名称、任务名称、消息标记

扩展指标

导出的指标定义在YAML配置文件中。值可以使用Jinja2模板语言。配置格式受Ansible任务表示法的启发。因此,一个指标配置文件由要执行的操作列表组成。

有五种可能的行为

  • url:从HTTP API收集指标
  • set_fact:将值分配给变量
  • actions:执行一系列(子)操作
  • metrics:定义要向普罗米修斯公开/返回的指标
  • debug:将调试文本显示到记录器。

所有行为都有默认的“属性”

  • name:操作或指标计数器的名称
  • vars:将变量设置到全局符号表中
  • with_items:在当前操作上循环一个项目列表
  • loop_var:设置将接收循环中当前值的变量的名称。默认为'item'。
  • when:必须检查和为真的条件列表(和)以执行操作。

“属性”按先前表中指定的顺序进行分析;这意味着您不能在“vars”部分使用“item”变量(从'with_items'指令获得),因为在评估'vars'部分时它尚未定义。如果您需要该功能,您必须在'actions'部分考虑'with_items'(请参阅metrics/backup_jobs_sessions_metrics.yml)。

action 参数 描述 备注
url   表示要收集的实体的字符串,不包含'/api'部分 http://host.domain:port/api**[url]**。例如:/reports/summary/overview
  var_name 用于存储结果的变量名称。默认值为 '_root',表示结果JSON对象直接存储在符号表中。  
       
set_fact   要定义的变量列表  
  var_name: value  
       
指标   定义要公开的指标列表
  metric_prefix 添加到所有指标名称的前缀 最终名称将是 [metric_prefix]_[metric_name]
'a metric' 名称 指标的名称
  帮助信息 添加到指标的帮助信息(在Grafana资源管理器中显示)
  类型 'gauge' 或 'counter' Prometheus指标的类型  
  实际的数值  
  标签 一组用于确定指标的名称值对  

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

veeam_exporter-1.1.0.tar.gz (610.8 kB 查看哈希值)

上传时间

构建分布

veeam_exporter-1.1.0-py3-none-any.whl (46.6 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面