140 likes | 235 Views
Operational Monitoring. Kevin Bohan , GMOC pbohan @ grnoc.iu.edu. Topics. GMOC Objects API Operational Measurement Classes Code Examples What’s Reporting Future Directions. GMOC Objects. Models the state of things in GENI Integrates submission of metadata and time-series data
E N D
Operational Monitoring Kevin Bohan, GMOC pbohan@grnoc.iu.edu
Topics • GMOC Objects API • Operational Measurement Classes • Code Examples • What’s Reporting • Future Directions
GMOC Objects • Models the state of things in GENI • Integrates submission of metadata and time-series data • Allows partial data submission • Can be instantiated anywhere • Currently implemented as a Python module • Easy to use correctly, hard to do it wrong
Easy to Use Correctly • You don’t have to write XML anymore • You don’t have to remember arcane metric names or tags or intervals or interval modes • foam5.gpolab.bbn.com-node-cpu_idle-aggregate_foam5.gpolab.bbn.com • You don’t have to call multiple scripts for different pieces of data
Hard To Do It Wrong • Data is validated before submission • Identifiers have to be of the correct format • Object hierarchy is enforced • Measurements can only be used with the objects they’re supposed to report on • You can’t report a vm_count metric for a slice • Partial submissions • If you don’t have all the information in one place, that’s okay • Backward compatiblewith the past two versions
Modeled Network Elements • POP • Organization • Aggregate • Sliver • Resource • Interface • IPv4, IPv6, MAC address • VLANs • Slice Authority • Slice • Network • Circuit • Endpoint interfaces • Circuit type • 1/10/40/100 Gigabit Ethernet • 802.11 • WiMAX • Provisioned bandwidth
Operational Measurement Objects • CPUUtilization • VMCount • TargetPingable • AMAPIListResources • AMAPIGetVersion • DiskUtilization • OpenFlowSliverStats • SliverState • DatapathStats • NetworkStats
Manual Measurements import gmoc pop = gmoc.POP(“urn:publicid:IDN+gmoc.geni.net+pop+MOXI-Indiana”) agg = gmoc.Aggregate(“moxifoam.ictc.indiana.gigapop.net:3626”, pop) cpu = CPUUtilization() cpu.addData(1349725335, { "cpu_idle": 3.1 }) agg.addMeasurement(cpu) client.storeMeasurement(pop)
Measurement from RRDs import gmoc pop = gmoc.POP(“urn:publicid:IDN+gmoc.geni.net+pop+MOXI-Indiana”) agg = gmoc.Aggregate(“moxifoam.ictc.indiana.gigapop.net:3626”, pop) cpu = CPUUtilization() cpu.loadRRD(”/array/moxifoam_node_cpu_idle.rrd”, 1318102932, 1349729656) agg.addMeasurement(cpu) client.storeMeasurement(pop)
Changing Aggregate State import gmoc pop = gmoc.POP(“urn:publicid:IDN+gmoc.geni.net+pop+MOXI-Indiana”) agg = gmoc.Aggregate(“moxifoam.ictc.indiana.gigapop.net:3626”, pop) agg.state = gmoc.AM_STATE_DOWN client.store(agg)
Who’s Reporting? • 20 FOAM Aggregates • pgeni.gpolab.bbn.com SA and GENI Clearinghouse Portal • ExoGENI Racks • Metadata • Time-Series Metrics • InstaGENI Racks • Some Metadata
Future Directions? • Populate the API with data from GMOC • Query current operational data about GENI things • More measurements • RSpec parser/generator • Support for additional languages? • Better visualization of data within the UI • Integration with other projects • GENI Clearinghouse Portal • Active measurement projects • Use Circuit data operationally
References • “Protected” User Interface • https://gmoc-db.grnoc.iu.edu/protected/ • Monitoring API • Objects Client • https://gmoc-db.grnoc.iu.edu/public_docs/gmoc.py • Objects API Reference • https://gmoc-db.grnoc.iu.edu/public_docs/gmoc-objects-v1.pdf • Relational Schemahttp://groups.geni.net/geni/attachment/wiki/GENIMetaOps/gmocv4.rng • Time series statisticshttp://groups.geni.net/geni/wiki/GENIMetaOps/DraftMonitoringMetrics
Get Involved Interested in testing the GMOC Monitoring User Interface? Contact: GMOC Service Desk <gmoc@grnoc.iu.edu> GENI Help Desk <help@geni.net> Interested in Monitoring? Join the monitoring@geni.net mailing list: http://lists.geni.net/mailman/listinfo/monitoring