-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
[metricbeat] Provide detailed network counters via netstat/snmp and sysctl #12210
Comments
@fearful-symmetry following with my comment in #11951 (comment), I think that |
Bah, I keep on forgetting about that! I should change the name. I think I kinda gravitate towards |
Maybe an option is to name it |
Yah, that seems the most 'native' option considering our naming scheme now.
Also true. IMO, |
We may be at risk of bloating
We can do step 2 without breaking change, just by putting metrics on different events? Question remains if we should keep adding more metricsets or make the right decisions for the user from a few of them. |
Just getting back to this, I thought @exekias raised some good issues as well.
I agree. Considering the rather large amount of network counters/namespaces/weird APIs/ that many OSes expose, I wonder if we should have a
How would this work? Would it be some kind of sub-metricset? Do we want to do that? |
Sorry for the late response 🤕 : How about adding a
|
Picking this up again since it's next in line after I finish systemd work. So, I'm not worried too much about metricsets/namespaces right now. I think either What I am worried about is cross-compatibility. A lot of similar but different metrics are gathered in BSD. We have 3 ways to deal with this:
|
@fearful-symmetry regarding the BSD data, we could definitely go without BSD data by now, but keeping in mind that we can add more platforms in the future. |
Yep.
I didn't consider that. Is aliasing/duplication something we do often? |
We used aliasing mainly for the migration to ECS, I guess we can consider using it for other purposes. The problem with aliasing is that I think it only works on query time, the resulting events don't have the aliased fields. About duplicating, I would consider it for cases where it improves the usability, I would only do it for some fields that we feel are going to be the most used ones. I think that we have also used it in the past to rename fields without breaking backwards compatibility. |
Addressed in #15196 |
This is a continuation of #11951, now that #12050 was merged.
What this is
So, right now the data we have coming from
system/network
is pretty limited:In some way this makes sense, as the metricset is cross-platform and different OSes can expose wildly different metrics and data. What we have now is basically a distillation of what we can probably get regardless of platform. With #12050 at least, we have a demo of how to report certain metrics depending on the OS. So it stands we might want to do this for other metricsets and data sources as well. It should be noted that netdata and node_exporter both provide data that is far more comprehensive compared to system/network.
In linux, the two sources of data that come to mind are
/proc/net/snmp
and/proc/net/netstat
/proc/net/netstat
provides a wealth of extended data on TCP/IP counters, as does/proc/net/snmp
, which also includes counters and stats for ICMP and UDP. Together, these procfs files make up the majority of the information you would get vianetstat -s
on a linux system.We can also do work on BSD as well. Although
netstat
is very different on bsd,netstat -s
is still a thing, and provides a great deal of TCP/IP stack data, and info from UDP and ICMP as well. As this is BSD, it usessysctl
under the hood as opposed to a pseudo file system.How the data would look
The most obvious way to present these files is a 1-to-1 direct dump of the procfs files/sysctl counters. This would provide a familar interface for users, and make blog posts straight forward (
monitoring netstat with metricbeat...
).In the data itself, if the operating system supports it, we would just append an extra object to the existing system/network metricset:
At least on linux, this should be an 'easy' win, as dealing with procfs is something we're already used to. On BSD this might get a tad harder, as dealing with the more complex opaque types that
sysctl
returns can be a snarl in golang.How can I look at this myself?
Create some linux and freeBSD VMs as you normally do.
On linux:
on FreeBSD:
The text was updated successfully, but these errors were encountered: