public void SerializeTo(ref StatsServiceCheck sc, SerializedMetric serializedMetric) { serializedMetric.Reset(); var builder = serializedMetric.Builder; string processedName = EscapeName(sc.Name); string processedMessage = EscapeMessage(sc.ServiceCheckMessage); builder.Append("_sc|"); builder.Append(processedName); builder.AppendFormat(CultureInfo.InvariantCulture, "|{0}", sc.Status); if (sc.Timestamp != null) { builder.AppendFormat(CultureInfo.InvariantCulture, "|d:{0}", sc.Timestamp.Value); } SerializerHelper.AppendIfNotNull(builder, "|h:", sc.Hostname); _serializerHelper.AppendTags(builder, sc.Tags); // Note: this must always be appended to the result last. SerializerHelper.AppendIfNotNull(builder, "|m:", processedMessage); sc.ServiceCheckMessage = TruncateMessageIfRequired(sc.Name, builder, sc.TruncateIfTooLong, processedMessage); if (sc.ServiceCheckMessage != null) { sc.TruncateIfTooLong = true; SerializeTo(ref sc, serializedMetric); } }
public SerializedMetric Serialize <T>( MetricType metricType, string name, T value, double sampleRate = 1.0, string[] tags = null) { var serializedMetric = _serializerHelper.GetOptionalSerializedMetric(); if (serializedMetric == null) { return(null); } var builder = serializedMetric.Builder; var unit = _commandToUnit[metricType]; builder.Append(_prefix); builder.Append(name); builder.Append(':'); builder.AppendFormat(CultureInfo.InvariantCulture, "{0}", value); builder.Append('|'); builder.Append(unit); if (sampleRate != 1.0) { builder.AppendFormat(CultureInfo.InvariantCulture, "|@{0}", sampleRate); } _serializerHelper.AppendTags(builder, tags); return(serializedMetric); }
public void SerializeTo(ref StatsMetric metricStats, SerializedMetric serializedMetric) { serializedMetric.Reset(); var builder = serializedMetric.Builder; var unit = _commandToUnit[metricStats.MetricType]; builder.Append(_prefix); builder.Append(metricStats.StatName); builder.Append(':'); switch (metricStats.MetricType) { case MetricType.Set: builder.Append(metricStats.StringValue); break; default: builder.AppendFormat(CultureInfo.InvariantCulture, "{0}", metricStats.NumericValue); break; } builder.Append('|'); builder.Append(unit); if (metricStats.SampleRate != 1.0) { builder.AppendFormat(CultureInfo.InvariantCulture, "|@{0}", metricStats.SampleRate); } _serializerHelper.AppendTags(builder, metricStats.Tags); }
public void SerializeTo(ref StatsEvent statsEvent, SerializedMetric serializedMetric) { serializedMetric.Reset(); string processedTitle = SerializerHelper.EscapeContent(statsEvent.Title); string processedText = SerializerHelper.EscapeContent(statsEvent.Text); var builder = serializedMetric.Builder; builder.Append("_e{"); builder.AppendFormat(CultureInfo.InvariantCulture, "{0}", processedTitle.Length); builder.Append(','); builder.AppendFormat(CultureInfo.InvariantCulture, "{0}", processedText.Length); builder.Append("}:"); builder.Append(processedTitle); builder.Append('|'); builder.Append(processedText); if (statsEvent.DateHappened != null) { builder.AppendFormat(CultureInfo.InvariantCulture, "|d:{0}", statsEvent.DateHappened.Value); } SerializerHelper.AppendIfNotNull(builder, "|h:", statsEvent.Hostname); SerializerHelper.AppendIfNotNull(builder, "|k:", statsEvent.AggregationKey); SerializerHelper.AppendIfNotNull(builder, "|p:", statsEvent.Priority); SerializerHelper.AppendIfNotNull(builder, "|s:", statsEvent.SourceType); SerializerHelper.AppendIfNotNull(builder, "|t:", statsEvent.AlertType); _serializerHelper.AppendTags(builder, statsEvent.Tags); if (builder.Length > MaxSize) { if (statsEvent.TruncateIfTooLong) { var overage = builder.Length - MaxSize; if (statsEvent.Title.Length > statsEvent.Text.Length) { statsEvent.Title = SerializerHelper.TruncateOverage(statsEvent.Title, overage); } else { statsEvent.Text = SerializerHelper.TruncateOverage(statsEvent.Text, overage); } statsEvent.TruncateIfTooLong = true; SerializeTo(ref statsEvent, serializedMetric); } else { throw new Exception(string.Format("Event {0} payload is too big (more than 8kB)", statsEvent.Title)); } } }
public SerializedMetric Serialize( string name, int status, int?timestamp, string hostname, string[] tags, string serviceCheckMessage, bool truncateIfTooLong = false) { var serializedMetric = _serializerHelper.GetOptionalSerializedMetric(); if (serializedMetric == null) { return(null); } var builder = serializedMetric.Builder; string processedName = EscapeName(name); string processedMessage = EscapeMessage(serviceCheckMessage); builder.Append("_sc|"); builder.Append(processedName); builder.AppendFormat(CultureInfo.InvariantCulture, "|{0}", status); if (timestamp != null) { builder.AppendFormat(CultureInfo.InvariantCulture, "|d:{0}", timestamp.Value); } SerializerHelper.AppendIfNotNull(builder, "|h:", hostname); _serializerHelper.AppendTags(builder, tags); // Note: this must always be appended to the result last. SerializerHelper.AppendIfNotNull(builder, "|m:", processedMessage); var truncatedMessage = TruncateMessageIfRequired(name, builder, truncateIfTooLong, processedMessage); if (truncatedMessage != null) { return(Serialize(name, status, timestamp, hostname, tags, truncatedMessage, true)); } return(serializedMetric); }
public SerializedMetric Serialize( string title, string text, string alertType, string aggregationKey, string sourceType, int?dateHappened, string priority, string hostname, string[] tags, bool truncateIfTooLong = false) { string processedTitle = SerializerHelper.EscapeContent(title); string processedText = SerializerHelper.EscapeContent(text); var serializedMetric = _serializerHelper.GetOptionalSerializedMetric(); if (serializedMetric == null) { return(null); } var builder = serializedMetric.Builder; builder.Append("_e{"); builder.AppendFormat(CultureInfo.InvariantCulture, "{0}", processedTitle.Length); builder.Append(','); builder.AppendFormat(CultureInfo.InvariantCulture, "{0}", processedText.Length); builder.Append("}:"); builder.Append(processedTitle); builder.Append('|'); builder.Append(processedText); if (dateHappened != null) { builder.AppendFormat(CultureInfo.InvariantCulture, "|d:{0}", dateHappened.Value); } SerializerHelper.AppendIfNotNull(builder, "|h:", hostname); SerializerHelper.AppendIfNotNull(builder, "|k:", aggregationKey); SerializerHelper.AppendIfNotNull(builder, "|p:", priority); SerializerHelper.AppendIfNotNull(builder, "|s:", sourceType); SerializerHelper.AppendIfNotNull(builder, "|t:", alertType); _serializerHelper.AppendTags(builder, tags); if (builder.Length > MaxSize) { if (truncateIfTooLong) { var overage = builder.Length - MaxSize; if (title.Length > text.Length) { title = SerializerHelper.TruncateOverage(title, overage); } else { text = SerializerHelper.TruncateOverage(text, overage); } return(Serialize(title, text, alertType, aggregationKey, sourceType, dateHappened, priority, hostname, tags, true)); } else { throw new Exception(string.Format("Event {0} payload is too big (more than 8kB)", title)); } } return(serializedMetric); }