-
Notifications
You must be signed in to change notification settings - Fork 304
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HPCC-30821 Use json format for metrics in the log #18307
Conversation
Signed-off-by: Gavin Halliday <[email protected]>
Tested in combination with #18021 |
https://track.hpccsystems.com/browse/HPCC-30821 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See comments in case there is a desire to remove the "Prometheus" personality from the output.
name.append(".").append(metaDataIt.value); | ||
if (labels.length() > 0) | ||
labels.append(","); | ||
labels.appendf("{ \"name\":\"%s\", \"value\": \"%s\" }", metaDataIt.key.c_str(), metaDataIt.value.c_str()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Treating the meta data like labels is a Prometheus feature. I simply concatenated the meta data to create a unique name that would be easy to grep for in the logs if needed. The framework also concatenates the meta data to create the unique metric name when detecting duplicates during registration. That was another reason the same mechanism was used to create the name for the log entry.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. In this case the format is up to us, and I want it to be able to reflect the most detailed representation - so that the developers can clearly see the logical description of the metric in the logs.
std::vector<__uint64> values = pMetric->queryHistogramValues(); | ||
std::vector<__uint64> limits = pMetric->queryHistogramBucketLimits(); | ||
size_t countBucketValues = values.size(); | ||
__uint64 cumulative = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The base histogram does not accumulate bucket measurement counts. The Prometheus sink does since it is the required format. I left the log and file sinks to only report the actual counts per bucket to match the way the metric stored the data and possibly make it easier to extract certain counts from the log if needed. Accumulating the counts makes the output more like Prometheus. Just an overall comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I also deliberately changed this. The reason again was to help developers. If you have a list
[10,20,0,0,0,0,1,0] it is much easier to visually spot that you have an unexpected outlier than if you have a list
[10,30,30,30,30,30,31,31]
@kenrowland see responses to comments. |
Type of change:
Checklist:
Smoketest:
Testing: