140 likes | 243 Vues
Learn about GMOC Objects API, operational measurement classes, code examples, and reporting. Models the state of things in GENI with easy submission of metadata and data series. Explore the future directions and how to use and report data effectively.
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