fix(plugins/metric_system_v2): report fd metrics as string to avoid float64 precision loss #2487
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi maintainers,
I noticed that input plugin metric_system_v2 reports fd_max as float64. However, fd_max is fixed at max int64(2^63-1 or 9223372036854775807), which exceeds the range of float64. Therefore, the data, with its loss of precision, is represented as 9.223372036854776e+18 in Metric.
loongcollector/plugins/input/systemv2/input_system_linux.go
Lines 166 to 169 in 68ba314
Since the metric is eventually converted to a string (see log_helper.go#L258), it would be more accurate to record fd_max directly as a string.
Alternatively, how about considering simply removing fd_max, since it's a constant on Linux anyway?