All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.metricssampler.extensions.apachestatus.parsers.ModQosParser Maven / Gradle / Ivy

The newest version!
package org.metricssampler.extensions.apachestatus.parsers;

import org.metricssampler.reader.Metrics;

/**
 * Parse a status line from the mod_qos status module
 */
public class ModQosParser implements StatusLineParser {
	private static final String MOD_QOS_MARKER = "QS_";

	@Override
	public boolean parse(final String line, final Metrics metrics, final long timestamp) {
		if (!line.contains(MOD_QOS_MARKER)) {
			return false;
		}
		final String[] cols = line.split(";");
		final StringBuilder result = new StringBuilder();
		result.append("virtual=").append(cols[0])
			  .append(",host=").append(cols[1])
			  .append(",port=").append(cols[2]);
		final int colIdx = cols[3].indexOf(':');
		if (colIdx > 0) {
			result.append(",metric=").append(cols[3].substring(0, colIdx));
			final String value = cols[3].substring(colIdx+2);
			addValue(timestamp, metrics, result.toString(), value);
		} else {
			result.append(",metric=").append(cols[3]);
			final int pathStartIdx = cols[4].indexOf('[');
			final int colonIdx = cols[4].indexOf(':', pathStartIdx);
			final String path = cols[4].substring(pathStartIdx+1, colonIdx-1);
			if (!path.isEmpty()) {
				result.append(",path=").append(path);
			}
			final String limit = cols[4].substring(0, pathStartIdx);
			final String current = cols[4].substring(colonIdx+2);
			final String nameBase = result.toString();
			addValue(timestamp, metrics, nameBase + ".limit", limit);
			addValue(timestamp, metrics, nameBase + ".current", current);
		}
		return true;
	}

	protected void addValue(final long timestamp, final Metrics metrics, final String name, final String value) {
		metrics.add(name, timestamp, value);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy