OpenNebula
Visualize your OpenNebula infrastructure in JupiterOne — accounts, clusters, physical hypervisor hosts, and virtual machines — map hosts to the workloads they run, and monitor changes through queries and alerts.
- Installation
- Authorization
- Data Model
- Types
Installation
This integration connects to an OpenNebula deployment through its XML-RPC API and ingests clusters, hosts (physical hypervisor nodes), and virtual machines. It is a collector-based integration. Every method is sent as an XML-RPC request to the single /RPC2 path on the OpenNebula endpoint (default port 2633), over either http:// or https://.
Configuration in OpenNebula
Before configuring the integration in JupiterOne, prepare the following in OpenNebula:
-
The XML-RPC endpoint URL of your OpenNebula deployment, reachable from the JupiterOne collector (for example,
http://opennebula:2633/RPC2). The/RPC2suffix is optional and may be omitted. -
A user for the integration to authenticate as. OpenNebula authenticates XML-RPC calls with a session string of the form
username:password, the same format used by theONE_AUTHfile, so no API key or token is required. -
Read access for that user to the resources you want ingested:
one.clusterpool.inforequiresCLUSTER:USE(* CLUSTER:USE #*).one.hostpool.inforequiresHOST:USE(* HOST:USE #*).one.vmpool.infoextendedrequires admin, or aVM:USEACL over all VMs (* VM:USE #*).
The simplest setup is a dedicated read-only service user in the
oneadmingroup. -
If the endpoint presents a self-signed or internal-CA TLS certificate over HTTPS, obtain the CA certificate (in PEM format) so the collector can verify the connection.
Once you have obtained the information above, proceed to JupiterOne to finalize the integration.
Configuration in JupiterOne
To install the OpenNebula integration in JupiterOne, navigate to the Integrations tab in JupiterOne and select OpenNebula. Click New Instance to begin configuring your integration.
Creating an instance requires the following:
-
The Account Name used to identify the OpenNebula account in JupiterOne. Ingested entities will have this value stored in
tag.AccountNamewhen theAccountNametoggle is enabled. -
Description to assist in identifying the integration instance, if desired.
-
Polling Interval that you feel is sufficient for your monitoring needs. You may leave this as
DISABLEDand manually execute the integration. -
Your OpenNebula Endpoint URL, Username, and Password.
-
Optionally, enable Include Stopped VMs to also ingest virtual machines in the stopped, suspended, done, poweroff, and undeployed states. This is disabled by default.
-
Optionally, a CA Certificate to trust a self-signed or internal-CA certificate, or enable Disable TLS Verification to skip certificate validation (not recommended).
Click Create once all values are provided to finalize the integration.
Next steps
Now that your integration instance has been configured, it will begin running on the polling interval you provided, populating data within JupiterOne. Continue on to our Instance management guide to learn more about working with and editing integration instances.
Endpoints
API endpoints that the integration makes requests to.
Show Endpoints (4)
POST /RPC2 (one.clusterpool.info)POST /RPC2 (one.hostpool.info)POST /RPC2 (one.system.version)POST /RPC2 (one.vmpool.infoextended)
Documentation Links
Links to provider documentation relevant to setup and configuration.
Show Documentation Links (1)
Entities
The following entities are created:
| Resources | Entity _type | Entity _class |
|---|---|---|
| Account | opennebula_account | Account |
| Cluster | opennebula_cluster | Cluster |
| Host | opennebula_host | Host |
| VirtualMachine | opennebula_vm | Host |
Relationships
The following relationships are created:
Source Entity _type | Relationship _class | Target Entity _type |
|---|---|---|
opennebula_account | HAS | opennebula_cluster |
opennebula_cluster | HAS | opennebula_host |
opennebula_cluster | CONTAINS | opennebula_vm |
opennebula_host | HOSTS | opennebula_vm |
Opennebula Account
opennebula_account inherits from Account
| Property | Type | Description | Specifications |
|---|---|---|---|
version * | string | null | OpenNebula version reported by one.system.version. |
Opennebula Cluster
opennebula_cluster inherits from Cluster
| Property | Type | Description | Specifications |
|---|---|---|---|
hostCount * | number | null | Number of hosts that belong to the cluster. |
Opennebula Host
opennebula_host inherits from Host
| Property | Type | Description | Specifications |
|---|---|---|---|
cpu * | number | null | Total physical CPU cores (HOST.HOST_SHARE.TOTAL_CPU divided by 100). | |
hostState * | string | null | Host state mapped from HOST.STATE (e.g. enabled, disabled, error, offline). | |
hypervisorDriver * | string | null | Virtualization driver (HOST.VM_MAD, e.g. kvm, lxc). | |
maxMemoryKB * | number | null | Total host memory in KB (HOST.HOST_SHARE.MAX_MEM). | |
monitoringDriver * | string | null | Information/monitoring driver (HOST.IM_MAD). | |
runningVMs * | number | null | Number of VMs running on the host. | |
usedMemoryKB * | number | null | Used host memory in KB (HOST.HOST_SHARE.MEM_USAGE). |
Opennebula Vm
opennebula_vm inherits from Host
| Property | Type | Description | Specifications |
|---|---|---|---|
cpu * | number | null | Number of vCPUs (VM.TEMPLATE.CPU). | |
deployId * | string | null | Hypervisor-level instance id (VM.DEPLOY_ID). | |
group * | string | null | Owner group name (VM.GNAME). | |
ipAddress * | string | null | Primary NIC IP address (VM.TEMPLATE.NIC[0].IP). | |
macAddress * | string | null | Primary NIC MAC address (VM.TEMPLATE.NIC[0].MAC). | |
memoryMB * | number | null | Memory assigned to the VM in MB (VM.TEMPLATE.MEMORY). | |
networkName * | string | null | Primary NIC virtual network name (VM.TEMPLATE.NIC[0].NETWORK). | |
vmState * | string | null | VM state mapped from VM.STATE (e.g. active, poweroff, stopped). |