Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions plugins/ProxmoxVE/v1/configValidation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"steps": [
{
"displayName": "Authenticate",
"dataStream": { "name": "apiVersion" },
"required": true,
"error": "Could not connect to Proxmox VE. Check your Host URL is reachable, and that your Token ID and Token Secret are correct.",
"success": "Connected to Proxmox VE successfully."
}
]
}
23 changes: 23 additions & 0 deletions plugins/ProxmoxVE/v1/custom_types.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[
{
"name": "Proxmox Node",
"sourceType": "Proxmox Node",
"icon": "server",
"singular": "Node",
"plural": "Nodes"
},
{
"name": "Proxmox VM",
"sourceType": "Proxmox VM",
"icon": "display",
"singular": "VM",
"plural": "VMs"
},
{
"name": "Proxmox Container",
"sourceType": "Proxmox Container",
"icon": "box",
"singular": "Container",
"plural": "Containers"
}
]
18 changes: 18 additions & 0 deletions plugins/ProxmoxVE/v1/dataStreams/apiVersion.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "apiVersion",
"displayName": "API Version",
"description": "Proxmox VE API version and release information",
"tags": ["Info"],
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"endpointPath": "/version",
"pathToData": "data"
},
"matches": "none",
"visibility": { "type": "hidden" },
"metadata": [
{ "pattern": ".*" }
],
"timeframes": false
}
30 changes: 30 additions & 0 deletions plugins/ProxmoxVE/v1/dataStreams/clusterResources.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "clusterResources",
"displayName": "Cluster Resources",
"description": "All nodes, VMs, and containers across the cluster with current resource utilisation",
"tags": ["Cluster", "Resources"],
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"endpointPath": "/cluster/resources",
"postRequestScript": "clusterResources.js"
},
"matches": "none",
"metadata": [
{ "name": "sourceId", "displayName": "Source ID", "shape": "string", "visible": false },
{ "name": "sourceType", "displayName": "Type", "shape": "string" },
{ "name": "name", "displayName": "Name", "shape": "string", "role": "label" },
{ "name": "node", "displayName": "Node", "shape": "string" },
{ "name": "vmid", "displayName": "VM ID", "shape": "number" },
{ "name": "status", "displayName": "Status", "shape": ["state", { "map": { "success": ["running", "online"], "error": ["stopped", "offline"], "warning": ["paused", "unknown"] } }] },
{ "name": "cpu", "displayName": "CPU Usage", "shape": ["percent", { "asZeroToOne": true }] },
{ "name": "maxcpu", "displayName": "CPU Cores", "shape": "number" },
{ "name": "mem", "displayName": "Memory Used", "shape": "bytes" },
{ "name": "maxmem", "displayName": "Memory Total", "shape": "bytes" },
{ "name": "disk", "displayName": "Disk Used", "shape": "bytes" },
{ "name": "maxdisk", "displayName": "Disk Total", "shape": "bytes" },
{ "name": "uptime", "displayName": "Uptime", "shape": "seconds" },
{ "name": "type", "displayName": "API Type", "shape": "string", "visible": false }
],
"timeframes": false
}
34 changes: 34 additions & 0 deletions plugins/ProxmoxVE/v1/dataStreams/containerMetrics.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"name": "containerMetrics",
"displayName": "Container Metrics",
"description": "Historical CPU, memory, and network metrics for an LXC container",
"tags": ["Container", "Metrics"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "/nodes/{{object.node}}/lxc/{{object.rawId}}/rrddata",
"getArgs": [
{
"key": "timeframe",
"value": "{{timeframe.enum === 'last1hour' ? 'hour' : timeframe.enum === 'last7days' ? 'week' : timeframe.enum === 'last30days' ? 'month' : 'day'}}"
},
{
"key": "cf",
"value": "AVERAGE"
}
],
"pathToData": "data"
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Proxmox Container"] } },
"metadata": [
{ "name": "time", "displayName": "Time", "shape": "timestamp", "role": "timestamp" },
{ "name": "cpu", "displayName": "CPU Usage", "shape": ["percent", { "asZeroToOne": true }], "role": "value" },
{ "name": "mem", "displayName": "Memory Used", "shape": "bytes" },
{ "name": "maxmem", "displayName": "Memory Total", "shape": "bytes" },
{ "name": "netin", "displayName": "Network In", "shape": "bytespersecondbinary" },
{ "name": "netout", "displayName": "Network Out", "shape": "bytespersecondbinary" },
{ "name": "diskread", "displayName": "Disk Read", "shape": "bytespersecondbinary" },
{ "name": "diskwrite", "displayName": "Disk Write", "shape": "bytespersecondbinary" }
],
"timeframes": ["last1hour", "last24hours", "last7days", "last30days"]
}
28 changes: 28 additions & 0 deletions plugins/ProxmoxVE/v1/dataStreams/containerStatus.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "containerStatus",
"displayName": "Container Status",
"description": "Current CPU, memory, disk, and uptime for an LXC container",
"tags": ["Container", "Status"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "/nodes/{{object.node}}/lxc/{{object.rawId}}/status/current",
"pathToData": "data"
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Proxmox Container"] } },
"metadata": [
{ "name": "name", "displayName": "Name", "shape": "string", "role": "label" },
{ "name": "status", "displayName": "Status", "shape": ["state", { "map": { "success": ["running"], "error": ["stopped"], "warning": ["paused", "unknown"] } }], "role": "value" },
{ "name": "cpu", "displayName": "CPU Usage", "shape": ["percent", { "asZeroToOne": true }] },
{ "name": "cpus", "displayName": "CPU Cores", "shape": "number" },
{ "name": "mem", "displayName": "Memory Used", "shape": "bytes" },
{ "name": "maxmem", "displayName": "Memory Total", "shape": "bytes" },
{ "name": "swap", "displayName": "Swap Used", "shape": "bytes" },
{ "name": "maxswap", "displayName": "Swap Total", "shape": "bytes" },
{ "name": "disk", "displayName": "Disk Used", "shape": "bytes" },
{ "name": "maxdisk", "displayName": "Disk Total", "shape": "bytes" },
{ "name": "uptime", "displayName": "Uptime", "shape": "seconds" },
{ "name": "containerid", "displayName": "Container ID", "shape": "number" }
],
"timeframes": false
}
34 changes: 34 additions & 0 deletions plugins/ProxmoxVE/v1/dataStreams/nodeMetrics.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"name": "nodeMetrics",
"displayName": "Node Metrics",
"description": "Historical CPU, memory, and network metrics for a node",
"tags": ["Node", "Metrics"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "/nodes/{{object.rawId}}/rrddata",
"getArgs": [
{
"key": "timeframe",
"value": "{{timeframe.enum === 'last1hour' ? 'hour' : timeframe.enum === 'last7days' ? 'week' : timeframe.enum === 'last30days' ? 'month' : 'day'}}"
},
{
"key": "cf",
"value": "AVERAGE"
}
],
"pathToData": "data"
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Proxmox Node"] } },
"metadata": [
{ "name": "time", "displayName": "Time", "shape": "timestamp", "role": "timestamp" },
{ "name": "cpu", "displayName": "CPU Usage", "shape": ["percent", { "asZeroToOne": true }], "role": "value" },
{ "name": "maxcpu", "displayName": "CPU Cores", "shape": "number" },
{ "name": "memused", "displayName": "Memory Used", "shape": "bytes" },
{ "name": "memtotal", "displayName": "Memory Total", "shape": "bytes" },
{ "name": "netin", "displayName": "Network In", "shape": "bytespersecondbinary" },
{ "name": "netout", "displayName": "Network Out", "shape": "bytespersecondbinary" },
{ "name": "iowait", "displayName": "I/O Wait", "shape": ["percent", { "asZeroToOne": true }] }
],
"timeframes": ["last1hour", "last24hours", "last7days", "last30days"]
}
25 changes: 25 additions & 0 deletions plugins/ProxmoxVE/v1/dataStreams/nodeStatus.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "nodeStatus",
"displayName": "Node Status",
"description": "Current CPU, memory, disk, and uptime for a node",
"tags": ["Node", "Status"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "/nodes/{{object.rawId}}/status",
"pathToData": "data",
"expandInnerObjects": true
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Proxmox Node"] } },
"metadata": [
{ "name": "cpu", "displayName": "CPU Usage", "shape": ["percent", { "asZeroToOne": true }], "role": "value" },
{ "name": "memory.used", "displayName": "Memory Used", "shape": "bytes" },
{ "name": "memory.total", "displayName": "Memory Total", "shape": "bytes" },
{ "name": "rootfs.used", "displayName": "Disk Used", "shape": "bytes" },
{ "name": "rootfs.total", "displayName": "Disk Total", "shape": "bytes" },
{ "name": "uptime", "displayName": "Uptime", "shape": "seconds" },
{ "name": "kversion", "displayName": "Kernel Version", "shape": "string" },
{ "name": "pveversion", "displayName": "PVE Version", "shape": "string" }
],
"timeframes": false
}
22 changes: 22 additions & 0 deletions plugins/ProxmoxVE/v1/dataStreams/nodeUpdates.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "nodeUpdates",
"displayName": "Node Updates",
"description": "Pending OS package updates available for a node",
"tags": ["Node", "Updates"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "/nodes/{{object.rawId}}/apt/update",
"pathToData": "data"
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Proxmox Node"] } },
"metadata": [
{ "name": "Package", "displayName": "Package Name", "shape": "string", "role": "label" },
{ "name": "Version", "displayName": "New Version", "shape": "string" },
{ "name": "OldVersion", "displayName": "Current Version", "shape": "string" },
{ "name": "Priority", "displayName": "Priority", "shape": "string" },
{ "name": "Origin", "displayName": "Origin", "shape": "string" },
{ "name": "Description", "displayName": "Description", "shape": "string" }
],
"timeframes": false
}
28 changes: 28 additions & 0 deletions plugins/ProxmoxVE/v1/dataStreams/scripts/clusterResources.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const resources = (data && data.data) || [];

const typeMap = {
node: 'Proxmox Node',
qemu: 'Proxmox VM',
lxc: 'Proxmox Container'
};

result = resources
.filter(function(r) { return typeMap[r.type]; })
.map(function(r) {
return {
sourceId: r.type === 'node' ? r.node : String(r.vmid),
sourceType: typeMap[r.type],
name: r.name || r.node,
node: r.node,
vmid: r.vmid != null ? r.vmid : null,
type: r.type,
status: r.status,
cpu: r.cpu || 0,
maxcpu: r.maxcpu || 0,
mem: r.mem || 0,
maxmem: r.maxmem || 0,
disk: r.disk || 0,
maxdisk: r.maxdisk || 0,
uptime: r.uptime || 0
Comment thread
clarkd marked this conversation as resolved.
};
});
34 changes: 34 additions & 0 deletions plugins/ProxmoxVE/v1/dataStreams/vmMetrics.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"name": "vmMetrics",
"displayName": "VM Metrics",
"description": "Historical CPU, memory, and network metrics for a QEMU/KVM virtual machine",
"tags": ["VM", "Metrics"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "/nodes/{{object.node}}/qemu/{{object.rawId}}/rrddata",
"getArgs": [
{
"key": "timeframe",
"value": "{{timeframe.enum === 'last1hour' ? 'hour' : timeframe.enum === 'last7days' ? 'week' : timeframe.enum === 'last30days' ? 'month' : 'day'}}"
},
{
"key": "cf",
"value": "AVERAGE"
}
],
"pathToData": "data"
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Proxmox VM"] } },
"metadata": [
{ "name": "time", "displayName": "Time", "shape": "timestamp", "role": "timestamp" },
{ "name": "cpu", "displayName": "CPU Usage", "shape": ["percent", { "asZeroToOne": true }], "role": "value" },
{ "name": "mem", "displayName": "Memory Used", "shape": "bytes" },
{ "name": "maxmem", "displayName": "Memory Total", "shape": "bytes" },
{ "name": "netin", "displayName": "Network In", "shape": "bytespersecondbinary" },
{ "name": "netout", "displayName": "Network Out", "shape": "bytespersecondbinary" },
{ "name": "diskread", "displayName": "Disk Read", "shape": "bytespersecondbinary" },
{ "name": "diskwrite", "displayName": "Disk Write", "shape": "bytespersecondbinary" }
],
"timeframes": ["last1hour", "last24hours", "last7days", "last30days"]
}
28 changes: 28 additions & 0 deletions plugins/ProxmoxVE/v1/dataStreams/vmStatus.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "vmStatus",
"displayName": "VM Status",
"description": "Current CPU, memory, disk, and uptime for a QEMU/KVM virtual machine",
"tags": ["VM", "Status"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "get",
"endpointPath": "/nodes/{{object.node}}/qemu/{{object.rawId}}/status/current",
"pathToData": "data"
},
"matches": { "sourceType": { "type": "oneOf", "values": ["Proxmox VM"] } },
"metadata": [
{ "name": "status", "displayName": "Status", "shape": ["state", { "map": { "success": ["running"], "error": ["stopped"], "warning": ["paused", "unknown"] } }], "role": "value" },
{ "name": "cpu", "displayName": "CPU Usage", "shape": ["percent", { "asZeroToOne": true }] },
{ "name": "cpus", "displayName": "CPU Cores", "shape": "number" },
{ "name": "mem", "displayName": "Memory Used", "shape": "bytes" },
{ "name": "maxmem", "displayName": "Memory Total", "shape": "bytes" },
{ "name": "disk", "displayName": "Disk Used", "shape": "bytes" },
{ "name": "maxdisk", "displayName": "Disk Total", "shape": "bytes" },
{ "name": "uptime", "displayName": "Uptime", "shape": "seconds" },
{ "name": "name", "displayName": "Name", "shape": "string", "role": "label" },
{ "name": "vmid", "displayName": "VM ID", "shape": "number" },
{ "name": "netin", "displayName": "Network In", "shape": "bytes" },
{ "name": "netout", "displayName": "Network Out", "shape": "bytes" }
],
"timeframes": false
}
Loading
Loading