问题描述
该笔记将记录:通过 Telegraf 与 InfluxDB 监控 PVE Cluster 的方法,以及相关问题的解决办法。
解决方案
补充说明
我们目前(10/19/2022)还未配置成功,原因如下:
1)但是,我们没有找到合适的 Dashboard 来显示指标数据;
2)并且 Telegraf 提示 E! [inputs.proxmox] Error in plugin: search domain is not set 错误,暂时未找到解决办法;
原理简述
Telegraf Proxmox 插件能够访问 PVE Cluster 并从中采集指标,并发送到 InfluxDB 服务中;
服务部署
第零步、创建 PVE Token 参数
Can’t create API Token – Error 400 | Proxmox Support Forum
在 PVE Cluster 中:
1)Permissions / API Tokens / Add
2)Token ID:[A-Za-z][A-Za-z0-9\.\-_]+
3)Privilege Separation:是否进行独立的权限管理;
第一步、部署 InfluxDB 服务
InfluxDB v2.4.0,通过 APT 直接安装:Install InfluxDB as a service with systemd
1)创建用户名密码,以完成首次初始化;
2)创建 Bucket 实例,进行数据存储;
2)配置 Token 授予 Bucket 访问全新;
第二步、部署 Telegraf 组件
Telegraf 1.24.2,通过 APT 直接安装(与 InfluxDB 使用相同仓库):Telegraf open source data collector
...
[[inputs.proxmox]]
## API connection configuration. The API token was introduced in Proxmox v6.2. Required permissions for user and token: PVEAuditor role on /.
base_url = "https://172.31.253.254:8006/api2/json"
api_token = "root@pam!A123A56.123zde=361d1328-XXXXXXXXXXXXXXXXXX-a765bbc4e574"
## Node name, defaults to OS hostname
node_name = "testing-space"
## Optional TLS Config
# tls_ca = "/etc/telegraf/ca.pem"
# tls_cert = "/etc/telegraf/cert.pem"
# tls_key = "/etc/telegraf/key.pem"
## Use TLS but skip chain & host verification
insecure_skip_verify = true
# HTTP response timeout (default: 5s)
response_timeout = "5s"
...
...
[[outputs.influxdb_v2]]
# ## The URLs of the InfluxDB cluster nodes.
# ##
# ## Multiple URLs can be specified for a single cluster, only ONE of the
# ## urls will be written to each interval.
# ## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
urls = ["http://127.0.0.1:8086"]
#
# ## Token for authentication.
token = "L23Sko-XH4JSnCFXXXXXXXXXXXXXXXXXXXXXXXqMju2WxKGnH3PSMUOSJjKqtlLA=="
#
# ## Organization is the name of the organization you wish to write to.
organization = "example.org"
#
# ## Destination bucket to write into.
bucket = "pve-from-telegraf"
常见问题处理
[Telegraf] … E! [inputs.proxmox] Error in plugin: search domain is not set ..
未解决
[Telegraf] … unexpected end of JSON input …
原因分析:产生该错误的原因很多;
解决方案:在我们场景中,留意 api_token 格式:api_token = “root@pam:5F9DDEEA:KWgo687wl/2CbfvPCFwqs72Q9MCrwc+Af0zedRr7lWo”