Monitoring extension
The dbg_monitor.fdx
extension provides a mean to access internal information of the freeDiameter
daemon, until SNMP support is implemented (see #2).
The information is provided in two ways:
- A periodical report is displayed in the daemon's log. This report contains:
- Internal queues status (number of incoming, outgoing, and local messages in buffers)
- Local servers status (open listening sockets)
- Peers information (status of the connections, remote identities, ...)
- An additional report can be generated on-demand, by sending a signal to the application. This additional report contains:
- Dictionary dump: all objects of the dictionary are displayed.
- Configuration dump: the running configuration of the daemon.
- Extensions dump: the list of loaded extensions.
The signal that trigs this detailed report is MONITOR_SIGNAL, by default SIGUSR2
. It can be changed at compilation time. See [source:freeDiameter/extensions/dbg_monitor/dbg_monitor.c] for more information.
Configuration
The dbg_monitor.fdx
extension does not take any configuration.
Usage
The extension's behavior is influenced by the CMAKE_BUILD_TYPE
parameter. When this parameter is set to "Debug", the dbg_monitor.fdx
extension displays its periodical status every 30 seconds. In addition, it displays a timer value every seconds. This is helpful to follow log activity for periods of activity and periods of calm.
If the CMAKE_BUILD_TYPE
is not "Debug", the extension displays its status information once every hour, and no intermediary counter is shown.
Output
[dbg_monitor] 0h 0m28s
In DEBUG mode (see previous paragraph), the extension displays a timer like this every seconds. This is useful to have visual feedback on the periods of activity in the logs.
[dbg_monitor] Dumping current information
This line indicates the beginning of the periodical report.
Dumping queue 'Incoming messages' (0x919e450): 0 elements in queue / 1 threads waiting thresholds: 0 / 0 (h:0), cb: (nil),(nil) ((nil)), highest: 0 Dumping queue 'Outgoing messages' (0x919e4d0): 0 elements in queue / 1 threads waiting thresholds: 0 / 0 (h:0), cb: (nil),(nil) ((nil)), highest: 0 Dumping queue 'Local messages' (0x919e550): 0 elements in queue / 4 threads waiting thresholds: 0 / 0 (h:0), cb: (nil),(nil) ((nil)), highest: 0
This is the status of the queues in the daemon. The most useful information is the number of elements in each queue. If this number grows regularly, it shows that the daemon is not able to consume the messages quickly enough -- in such case, solutions might be easy to implement, such as increasing the number of consumer threads.
Dumping servers list : Serv 0x91a38a8 'SCTP srv :3868 (4)': SCTP, NotSecur, Thread running Serv 0x91a3a40 'SCTP srv :3869 (6)': SCTP, Secur, Thread running Serv 0x91a3bd8 'TCP srv [0.0.0.0]:3868 (8)': TCP, NotSecur, Thread running Serv 0x91a3d90 'TCP srv [0.0.0.0]:3869 (10)': TCP, Secur, Thread running Serv 0x91a3f48 'TCP srv [::]:3868 (12)': TCP, NotSecur, Thread running Serv 0x91a4100 'TCP srv [::]:3869 (14)': TCP, Secur, Thread running
This is the list of server threads accepting new connections. The most important information here is the "Thread running" status which should be checked.
Dumping list of peers : > STATE_OPEN cli.testbed.aaa (rlm:testbed.aaa) ['freeDiameter' 10000]
This shows the list of connected peers, with their identities, realms, and software name and versions.