// Copyright 2015 The Prometheus Authors // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package ganglia provides types for unmarshalling gmond's XML output. // // Not used elements in gmond's XML output are commented. // In case you want to use them, please change the names so that one // can understand without needing to know what the acronym stands for. package ganglia import "encoding/xml" // ExtraElement describes EXTRA_ELEMENT elements. type ExtraElement struct { Name string `xml:"NAME,attr"` Val string `xml:"VAL,attr"` } // ExtraData describes EXTRA_DATA elements. type ExtraData struct { ExtraElements []ExtraElement `xml:"EXTRA_ELEMENT"` } // Metric describes METRIC elements. type Metric struct { Name string `xml:"NAME,attr"` Value float64 `xml:"VAL,attr"` /* Unit string `xml:"UNITS,attr"` Slope string `xml:"SLOPE,attr"` Tn int `xml:"TN,attr"` Tmax int `xml:"TMAX,attr"` Dmax int `xml:"DMAX,attr"` */ ExtraData ExtraData `xml:"EXTRA_DATA"` } // Host describes HOST elements. type Host struct { Name string `xml:"NAME,attr"` /* Ip string `xml:"IP,attr"` Tags string `xml:"TAGS,attr"` Reported int `xml:"REPORTED,attr"` Tn int `xml:"TN,attr"` Tmax int `xml:"TMAX,attr"` Dmax int `xml:"DMAX,attr"` Location string `xml:"LOCATION,attr"` GmondStarted int `xml:"GMOND_STARTED",attr"` */ Metrics []Metric `xml:"METRIC"` } // Cluster describes CLUSTER elements. type Cluster struct { Name string `xml:"NAME,attr"` /* Owner string `xml:"OWNER,attr"` LatLong string `xml:"LATLONG,attr"` Url string `xml:"URL,attr"` Localtime int `xml:"LOCALTIME,attr"` */ Hosts []Host `xml:"HOST"` } // Ganglia describes the top-level XML structure. type Ganglia struct { XMLNAME xml.Name `xml:"GANGLIA_XML"` Clusters []Cluster `xml:"CLUSTER"` }