Neutron Network Statistics

Registered by Peter Erik Mellquist

This is a proposal to add statistics for networking related resources to Neutron including the Neutron APIs and required underlying instrumentation. Specifically, the current APIs, https://wiki.openstack.org/wiki/Neutron/APIv2-specification, do not support reading network counters typically available through SNMP. '/stats' would prove to be quite valuable for performance and fault monitoring. This will allow an Openstack / Neutron tenant to see performance and faults for their networking resources.

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
Peter Erik Mellquist
Definition:
Superseded
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Armando Migliaccio

Related branches

Sprints

Whiteboard

Another proposal is being discussed in the context of bug 1475736

---------------

This is a proposal to add statistics for networking related resources to Neutron including the Neutron APIs and required underlying instrumentation. Specifically, the current APIs, https://wiki.openstack.org/wiki/Neutron/APIv2-specification, do not support reading network counters typically available through SNMP. '/stats' would prove to be quite valuable for performance and fault monitoring. This will allow an Openstack / Neutron tenant to see performance and faults for their networking resources.

Data Model and API Ideas

Read networking stats
-------------------------------------
GET /networks/{network_id}/stats

Here we have a network which is comprised of zero or more subnets which can be shared or exclusive to a tenant. Stats provide an overall statistics view of the network including all subnets within.

Status : [up,down,error]
Usage : [sum of Tx and Rx packets]
ReceivedRate : [Rate of data received in kB/sec]
TransmittedRate : [Rate of data transmitted in kB/sec]
PacketTx : [total # of packets transmitted since reset]
PacketRx : [total # of packets received in since reset]

Clear stats
--------------------------------------
POST /networks/{network_id}/stats
Reset all the counters.

{
   action:reset
}

Subnet
--------------------------------------
GET /subnets/{subnet-id}
GET /subnets/{subnet-id}/stats

Port
---------------------------------------
GET /ports/{port-id}
GET /ports/{port-id}/stats

Router
---------------------------------------
GET /routers/{router_id}
GET /routers/{router_id}/stats

Floating IP
--------------------------------------
GET /floatingips/{floatingip_id}
GET /floatingips/{floatingip_id}/stats

Other
---------------------------------------
GET /otherQuantumObject/{id}/stats

Additonal Notes
----------------------------------------
* read only, a way to reset them, a way to sample over a period
* how are things running, how to I calculate performance, how can i see faults, traffic monitoring
* based on SNMP( router, rmon ), Netconf, sFlow, Vswitch counters TBD although source is not exposed, it is abstracted. Community would propose and review for each object type.
* schemas needed, these will need to evolve over time
* not extensions, common metrics
* performance, counters, faults ( FCAPS F and P )

Status: up, down, error
Summary Usage (KBps)
Rx, Tx ( bytes, packets)
ReceivedRate, TransmittedRate KBps)
errRX, errTx

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.