private void setAttrCacheTag(MetricsTag tag, int recNo) { String key = tagName(tag.name(), recNo); attrCache.put(key, new Attribute(key, tag.value())); }
@Override public MetricsRecordBuilder add(MetricsTag tag) { return tuple(tag.name(), tag.value()); }
@Override public MetricsRecordBuilder add(MetricsTag tag) { return tuple(tag.name(), tag.value()); }
@InterfaceAudience.Private public void appendPrefix(MetricsRecord record, StringBuilder sb) { String contextName = record.context(); Collection<MetricsTag> tags = record.tags(); if (useTagsMap.containsKey(contextName)) { Set<String> useTags = useTagsMap.get(contextName); for (MetricsTag t : tags) { if (useTags == null || useTags.contains(t.name())) { // the context is always skipped here because it is always added // the hostname is always skipped to avoid case-mismatches // from different DNSes. if (t.info() != MsInfo.Context && t.info() != MsInfo.Hostname && t.value() != null) { sb.append('.').append(t.name()).append('=').append(t.value()); } } } } }
MBeanInfo get() { curRecNo = 0; for (MetricsRecordImpl rec : recs) { for (MetricsTag t : rec.tags()) { attrs.add(newAttrInfo("tag."+ t.name(), t.description(), "java.lang.String")); } for (AbstractMetric m : rec.metrics()) { m.visit(this); } ++curRecNo; } MetricsSystemImpl.LOG.debug(attrs.toString()); MBeanAttributeInfo[] attrsArray = new MBeanAttributeInfo[attrs.size()]; return new MBeanInfo(name, description, attrs.toArray(attrsArray), null, null, null); // no ops/ctors/notifications } }
@Override public MetricsRecordBuilder add(MetricsTag metricsTag) { tags.put(canonicalizeMetricName(metricsTag.name()), metricsTag.value()); return this; }
@Override public boolean accepts(MetricsTag tag) { // Accept if whitelisted Pattern ipat = includeTagPatterns.get(tag.name()); if (ipat != null && ipat.matcher(tag.value()).matches()) { return true; } // Reject if blacklisted Pattern epat = excludeTagPatterns.get(tag.name()); if (epat != null && epat.matcher(tag.value()).matches()) { return false; } // Reject if no match in whitelist only mode if (!includeTagPatterns.isEmpty() && excludeTagPatterns.isEmpty()) { return false; } return true; }
@Override public void putMetrics(MetricsRecord record) { writer.print(record.timestamp()); writer.print(" "); writer.print(record.context()); writer.print("."); writer.print(record.name()); String separator = ": "; for (MetricsTag tag : record.tags()) { writer.print(separator); separator = ", "; writer.print(tag.name()); writer.print("="); writer.print(tag.value()); } for (AbstractMetric metric : record.metrics()) { writer.print(separator); separator = ", "; writer.print(metric.name()); writer.print("="); writer.print(metric.value()); } writer.println(); }
@Override public boolean accepts(Iterable<MetricsTag> tags) { // Accept if any include tag pattern matches for (MetricsTag t : tags) { Pattern pat = includeTagPatterns.get(t.name()); if (pat != null && pat.matcher(t.value()).matches()) { return true; } } // Reject if any exclude tag pattern matches for (MetricsTag t : tags) { Pattern pat = excludeTagPatterns.get(t.name()); if (pat != null && pat.matcher(t.value()).matches()) { return false; } } // Reject if no match in whitelist only mode if (!includeTagPatterns.isEmpty() && excludeTagPatterns.isEmpty()) { return false; } return true; }
if (tag.value() != null) { metricsPathPrefix.append("."); metricsPathPrefix.append(tag.name()); metricsPathPrefix.append("="); metricsPathPrefix.append(tag.value());
/** * Update the cache and return the current cached record * @param mr the update record * @param includingTags cache tag values (for later lookup by name) if true * @return the updated cache record */ public Record update(MetricsRecord mr, boolean includingTags) { String name = mr.name(); RecordCache recordCache = map.get(name); if (recordCache == null) { recordCache = new RecordCache(); map.put(name, recordCache); } Collection<MetricsTag> tags = mr.tags(); Record record = recordCache.get(tags); if (record == null) { record = new Record(); recordCache.put(tags, record); } for (AbstractMetric m : mr.metrics()) { record.metrics.put(m.name(), m); } if (includingTags) { // mostly for some sinks that include tags as part of a dense schema for (MetricsTag t : mr.tags()) { record.tags.put(t.name(), t.value()); } } return record; }
currentOutStream.printf("%s%s=%s", separator, tag.name(), tag.value()); separator = ", ";
int tagCount = 0; for (MetricsTag tag : record.tags()) { if (tag.name().equals(ANNOTATION.traceName)) { addDynamicEntry(keys, values, variableValues, ANNOTATION_FAMILY, tag, ANNOTATION, annotationCount); annotationCount++; } else if (tag.name().equals(TAG.traceName)) { addDynamicEntry(keys, values, variableValues, TAG_FAMILY, tag, TAG, tagCount); tagCount++; } else if (tag.name().equals(HOSTNAME.traceName)) { keys.add(HOSTNAME.columnName); values.add(VARIABLE_VALUE); variableValues.add(tag.value()); } else if (tag.name().equals("Context")) {
@Override public boolean apply(MetricsTag input) { return input.name().equals(tagName); } }
@Override public boolean apply(MetricsTag input) { return input.name().equals(tagName); } }
@Override public MetricsRecordBuilder add(MetricsTag tag) { return tuple(tag.name(), tag.value()); }
@Override public MetricsRecordBuilder add(MetricsTag metricsTag) { tags.put(canonicalizeMetricName(metricsTag.name()), metricsTag.value()); return this; }
@Override public boolean matches(Object toMatch) { MetricsTag asTag = (MetricsTag)toMatch; return asTag.name().equals(tagName) && matches(asTag); }
@Override public MetricsRecordBuilder add(MetricsTag metricsTag) { tags.put(canonicalizeMetricName(metricsTag.name()), metricsTag.value()); return this; }
@Override public boolean matches(Object toMatch) { MetricsTag asTag = (MetricsTag)toMatch; return asTag.name().equals(tagName) && matches(asTag); }