Module Raindrops::Linux
In: lib/raindrops/linux.rb  (CVS)
lib/raindrops/linux.rb  (CVS)

For reporting TCP ListenStats, users of older \Linux kernels need to ensure that the the "inet_diag" and "tcp_diag" kernel modules are loaded as they do not autoload correctly. The inet_diag facilities of \Raindrops is useful for periodic snapshot reporting of listen queue sizes.

Instead of snapshotting, Raindrops::Aggregate::LastDataRecv may be used to aggregate statistics from all accepted sockets as they arrive based on the last_data_recv field in Raindrops::TCP_Info

Methods

Constants

PROC_NET_UNIX_ARGS = %w(/proc/net/unix)   The standard proc path for active UNIX domain sockets, feel free to call String#replace on this if your /proc is mounted in a non-standard location for whatever reason
PROC_NET_UNIX_ARGS = %w(/proc/net/unix)   The standard proc path for active UNIX domain sockets, feel free to call String#replace on this if your /proc is mounted in a non-standard location for whatever reason

Public Instance methods

Get ListenStats from an array of paths

Socket state mapping from integer => symbol, based on socket_state enum from include/linux/net.h in the \Linux kernel:

    typedef enum {
            SS_FREE = 0,              /* not allocated                */
            SS_UNCONNECTED,           /* unconnected to any socket    */
            SS_CONNECTING,            /* in process of connecting     */
            SS_CONNECTED,             /* connected to socket          */
            SS_DISCONNECTING          /* in process of disconnecting  */
    } socket_state;
  • SS_CONNECTING maps to ListenStats#queued
  • SS_CONNECTED maps to ListenStats#active

This method may be significantly slower than its tcp_listener_stats counterpart due to the latter being able to use inet_diag via netlink. This parses /proc/net/unix as there is no other (known) way to expose Unix domain socket statistics over netlink.

Get ListenStats from an array of paths

Socket state mapping from integer => symbol, based on socket_state enum from include/linux/net.h in the \Linux kernel:

    typedef enum {
            SS_FREE = 0,              /* not allocated                */
            SS_UNCONNECTED,           /* unconnected to any socket    */
            SS_CONNECTING,            /* in process of connecting     */
            SS_CONNECTED,             /* connected to socket          */
            SS_DISCONNECTING          /* in process of disconnecting  */
    } socket_state;
  • SS_CONNECTING maps to ListenStats#queued
  • SS_CONNECTED maps to ListenStats#active

This method may be significantly slower than its tcp_listener_stats counterpart due to the latter being able to use inet_diag via netlink. This parses /proc/net/unix as there is no other (known) way to expose Unix domain socket statistics over netlink.

[Validate]