基于Python的Prometheus Veeam Entreprise Exporter
项目描述
veeam_exporter
概述
描述
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中。
要使用导出器,需要安装一些软件包。这可以通过以下方式完成
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8dd409ce935d11d1ee3b414f623417d27e51c2f1cb12cfe17290ea70da966d87 |
|
MD5 | 0748ea15d4cee7f4812bb57490c588ad |
|
BLAKE2b-256 | cd404f0cbb9804034dee155850e021cdb97127442e3dc5849dfde7ad8104c11a |
veeam_exporter-1.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 136b12562e3cb2ba8be9c378b7f3da2cdea3ac59013a09f4fffe73f865e3a06d |
|
MD5 | 2ae67aeee35dc3d3743b3ad580f5f991 |
|
BLAKE2b-256 | 90e068ce1244324bef0111793aac1c626990a219eec4972d7ceb42aa6ce22693 |