- CLOUDSTACK-9998Getting issue details... STATUS
Several organizations use Prometheus based metrics/monitoring, the aim is to develop a CloudStack metrics exporter for Prometheus server which can export metrics such as CPU, memory, cores, VMs, volumes, IPs.
The exporter can be implemented as a CloudStack plugin that is disabled by default. When enabled, it listens on a configured port and allows configured IPs to access metrics data on a web service endpoint (/metrics).
The metrics are exported per zone and contain zone names and host names, ips where-ever applicable.
List of metrics exported per zone (pop): - Total hosts - Online hosts - Offline hosts - Per host: - CPU speed Used - CPU speed Total - RAM Used - RAM Total - Total VMs running on host - CPU cores Used - CPU cores Total
- CPU speed Allocated for zone
- CPU cores Allocated for zone
- RAM Allocated for zone
- VMs (count in all states)
- Volumes Ready
- Volumes Destroyed
- Volumes Total
- Storage Pools (Primary/Secondary)
- Disk size allocated (only for primary storage)
- Disk size total
- Disk size used
- Private IP allocated - Private IP total - Public IP addresses allocated - Public IP addresses total - Shared Network IPs total - Shared Network IPs allocated - VLAN Allocated - VLAN Total
- CloudStack cpu cores limit (summation across domains)
- CloudStack memory limit (summation across domains)
1. prometheus.exporter.enable - (default: false), Enable the prometheus exporter plugin, management server restart needed.
2. prometheus.exporter.port - (default: 9595), The prometheus exporter server port.
3. prometheus.exporter.allowed.ips - (default: 127.0.0.1), List of comma separated prometheus server ips (with no spaces) that should be allowed to access the metrics endpoint.
3 Comments
Wido den Hollander
Seems good! I would however also allow ::1 as we are going to the IPv6 world!
Chiradeep Vittal
Looks like it is generic? That is, any adaptor can read using this protocol and write to any metric / time-series store? Also, why not use the admin API?
Rohit Yadav
@Chiradeep Vittal - Yes, admin API is not consumeable unless you provide credentials, Prometheus server may not understand how to send a signed API request which is why it is implemented on a separate port with minimal IP/source based access control. Secondly, currently supported API responses serialized as JSON and XML only, however prometheus consumes a line separate key/value pair (syntax).