地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Go】カーネルが出しているTCP関連のメトリクスを取得するmackerelプラグインを書いた

github.com

ListenDropとかTCPでの再送あたりに絞って取れるものがなかったので書いた。

netstat.tcp.segments.TcpInSegs  154.285714      1648393258
netstat.tcp.segments.TcpOutSegs 112.653061      1648393258
netstat.tcp.segments.TcpRetransSegs     1.530612        1648393258
netstat.tcp.segments.TcpInErrs  0       1648393258
netstat.tcp.segments.TcpOutRsts 0       1648393258
netstat.tcp.memory.tcp_memory_size      4096    1648393258
netstat.tcp.misc_errors.TcpExtEmbryonicRsts     0       1648393258
netstat.tcp.misc_errors.TcpExtPruneCalled       0       1648393258
netstat.tcp.misc_errors.TcpExtRcvPruned 0       1648393258
netstat.tcp.misc_errors.TcpExtOfoPruned 0       1648393258
netstat.tcp.misc_errors.TcpExtListenOverflows   0       1648393258
netstat.tcp.misc_errors.TcpExtListenDrops       0       1648393258
netstat.tcp.misc_errors.TcpExtTCPSchedulerFailed        0       1648393258
netstat.tcp.misc_errors.TcpExtTCPRcvCollapsed   0       1648393258

-extendをつけて実行すれば上級向け(?)のメトリクスも出せる。

netstat.tcp.delayed_acks.TcpExtDelayedACKs      1.313869        1648393342
netstat.tcp.delayed_acks.TcpExtDelayedACKLocked 0       1648393342
netstat.tcp.delayed_acks.TcpExtDelayedACKLost   1.094891        1648393342
netstat.tcp.timewait.timewait.TcpExtTW  0.437956        1648393342
netstat.tcp.timewait.timewait.TcpExtTWRecycled  0       1648393342
netstat.tcp.timewait.timewait.TcpExtTWKilled    0       1648393342
netstat.tcp.syncookies.TcpExtSyncookiesSent     0       1648393342
netstat.tcp.syncookies.TcpExtSyncookiesRecv     0       1648393342
netstat.tcp.syncookies.TcpExtSyncookiesFailed   0       1648393342
netstat.tcp.timeout.TcpExtTCPTimeouts   0       1648393342
netstat.tcp.segments.TcpInSegs  134.014599      1648393342
netstat.tcp.segments.TcpOutSegs 97.445255       1648393342
netstat.tcp.segments.TcpRetransSegs     1.094891        1648393342
netstat.tcp.segments.TcpInErrs  0       1648393342
netstat.tcp.segments.TcpOutRsts 0       1648393342
netstat.tcp.memory.tcp_memory_size      4096    1648393342
netstat.tcp.misc_errors.TcpExtEmbryonicRsts     0       1648393342
netstat.tcp.misc_errors.TcpExtPruneCalled       0       1648393342
netstat.tcp.misc_errors.TcpExtRcvPruned 0       1648393342
netstat.tcp.misc_errors.TcpExtOfoPruned 0       1648393342
netstat.tcp.misc_errors.TcpExtListenOverflows   0       1648393342
netstat.tcp.misc_errors.TcpExtListenDrops       0       1648393342
netstat.tcp.misc_errors.TcpExtTCPSchedulerFailed        0       1648393342
netstat.tcp.misc_errors.TcpExtTCPRcvCollapsed   0       1648393342
netstat.tcp.abort.TcpExtTCPAbortOnData  0       1648393342
netstat.tcp.abort.TcpExtTCPAbortOnClose 0       1648393342
netstat.tcp.abort.TcpExtTCPAbortOnMemory        0       1648393342
netstat.tcp.abort.TcpExtTCPAbortOnTimeout       0       1648393342
netstat.tcp.abort.TcpExtTCPAbortOnLinger        0       1648393342
netstat.tcp.abort.TcpExtTCPAbortFailed  0       1648393342

各メトリクスは過去にまとめてるのでご参考にどうぞ。インクリメントされるタイミングがカーネルソース読んで初めて理解できる系のものは力尽きてまとめてないです...

ryuichi1208.hateblo.jp