natrontech / pbs-exporter Goto Github PK
View Code? Open in Web Editor NEWA prometheus exporter for Proxmox Backup Server
License: GNU General Public License v3.0
A prometheus exporter for Proxmox Backup Server
License: GNU General Public License v3.0
Support multiple endpoints with one exporter like the prometheus-pve-exporter.
- job_name: 'pbs-exporter'
static_configs:
- targets:
- <target-ip-1>
- <target-ip-2>
metrics_path: /metrics
params:
module: [default]
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: pbs-exporter:9101
I propose to add support to dockerfile secrets for PBS_USERNAME, PBS_API_TOKEN_NAME and PBS_API_TOKEN.
Idea is to move secrets outside of docker-compose file for instance for security purpose.
As example a docker-compose file can be created like this:
proxmoxbackup:
image: ghcr.io/natrontech/pbs-exporter:0.1.5
container_name: proxmoxbackup
restart: always
secrets:
- proxmoxbackup-username
- proxmoxbackup-api-token-name
- proxmoxbackup-api-token
environment:
PBS_USERNAME_FILE: /run/secrets/proxmoxbackup-username
PBS_API_TOKEN_NAME_FILE: /run/secrets/proxmoxbackup-api-token-name
PBS_API_TOKEN_FILE: /run/secrets/proxmoxbackup-api-token
secrets:
proxmoxbackup-username:
file: "./.secrets/proxmoxbackup_username.secret"
proxmoxbackup-api-token-name:
file: "./.secrets/proxmoxbackup_api_token_name.secret"
proxmoxbackup-api-token:
file: "./.secrets/proxmoxbackup_api_token.secret"
All secrets are now stored in a folder .secrets.
Convention naming for secrets in docker is to add _FILE to regular environnement variable.
In our case we need to manage PBS_USERNAME_FILE, PBS_API_TOKEN_NAME_FILE and PBS_API_TOKEN_FILE env variables.
I just adapt the main.go to read the new env variable for the secret file name and read the first line from the file.
Sorry I cannot add a file here so I post a diff of main
diff --git a/main.go b/main.go
index 1e6686d..cd8cd88 100644
--- a/main.go
+++ b/main.go
@@ -1,6 +1,7 @@
package main
import (
+func ReadSecretFile(secretfilename string) string {
log.Fatal(err)
if err = file.Close(); err != nil {
log.Fatal(err)
}
func NewExporter(endpoint string, username string, apitoken string, apitokenname string) *Exporter {
return &Exporter{
endpoint: endpoint,
@@ -660,12 +679,24 @@ func main() {
}
if os.Getenv("PBS_USERNAME") != "" {
*username = os.Getenv("PBS_USERNAME")
if os.Getenv("PBS_USERNAME_FILE") != "" {
*username = ReadSecretFile(os.Getenv("PBS_USERNAME_FILE"))
}
if os.Getenv("PBS_API_TOKEN_NAME_FILE") != "" {
*apitokenname = ReadSecretFile(os.Getenv("PBS_API_TOKEN_NAME_FILE"))
}
if os.Getenv("PBS_API_TOKEN_FILE") != "" {
*apitoken = ReadSecretFile(os.Getenv("PBS_API_TOKEN_FILE"))
}
Hi
Exporter will set pbs_up = 0 when some datastore is being deleted
I think It does not make sense to set pbs_up = 0 because the proxmox backup server still working and can get other metrics.
I have created PR #7 to check datastore is being deleted.
I already check PBS API docs. It does seem not to have any paths to get its status.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.