public void Write(CollectableValue value) { if (!_enabled) { return; } Queue <CollectableValue> entry = new Queue <CollectableValue>(); entry.Enqueue(value); Write(entry); }
public void Write(CollectableValue value) { // This Write Plugin only knows about metrics if (!(value is MetricValue)) { return; } MetricValue metric = (MetricValue)value; //Rough first pass //TODO - handle multiple metrics //TODO - check type string bucket = ""; if (_prefix.Trim().Length > 0) { bucket += _prefix.Trim() + "."; } bucket += metric.HostName + "." + metric.PluginName; if (metric.PluginInstanceName.Length > 0) { bucket += "." + metric.PluginInstanceName; } bucket += "." + metric.TypeInstanceName; // Remove : and | from bucket names bucket = bucket.Replace(":", "_").Replace("|", "_").Replace(" ", "_"); string payload = bucket + ":" + metric.Values[0] + "|g"; if (metric.Values.Length > 1) { Logger.Warn("Multiple counters not handled yet - only posting first"); } Logger.Debug("WriteStatsdPlugin: {0}", payload); using (var client = new UdpClient()) { IPEndPoint ep = new IPEndPoint(IPAddress.Parse(_host), _port); client.Connect(ep); byte[] data = System.Text.Encoding.UTF8.GetBytes(payload); // Fire and forget client.Send(data, data.Length); } }