Dreport: Add D-Bus Statistics Collection

Add functionality to collect statistical information about
D-Bus usage as part of the debug data collection process.

Including this information in debug reports will enhance
troubleshooting capabilities for D-Bus related issues in
OpenBMC-based systems. It provides a snapshot of D-Bus
activity and performance at the time of report generation.

This addition will help identify potential communication
bottlenecks, unexpected service behaviors, and performance
issues related to inter-process communication, system
management interfaces, and sensor data retrieval.

Tested on qemuarm.

'''
Dump size: 76k
Untar Dump Size:  916K
Added File Size: 79K
Time for the Dump Completion: 15 sec
Time for the command to run: 0.260s

[1] root@qemuarm:~# time dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.Debug.Stats.GetStats
real    0m0.260s
user    0m0.049s
sys     0m0.204s

High OutgoingBytes:
While all connections show 0 in the given data, a connection
with consistently high OutgoingBytes might suggest a blocked
receiver or network issues.

Rapidly Increasing NameObjects:
If a connection's NameObjects count grows quickly over time,
it may indicate a resource leak.

Mismatched IncomingBytes and OutgoingBytes:
Large discrepancies between these values across multiple
connections could suggest communication issues.

High Number of Connections:
An unusually high number of active connections
(the log shows 33) might indicate connection leaks
or denial-of-service attempts.

[2] root@qemuarm:~# busctl call xyz.openbmc_project.Dump.Manager /xyz/openbmc_project/dump/bmc xyz.openbmc_project.Dump.Create CreateDump a{sv} 1 "i" i 1234

...
[3] Mar 26 11:14:45 qemuarm phosphor-dump-manager[223]: Initiating new BMC dump with type: user path:
...
[4] Mar 26 11:15:00 qemuarm phosphor-dump-manager[305]: Wed Mar 26 11:15:00 UTC 2025 Successfully completed
[5] Mar 26 11:15:00 qemuarm phosphor-dump-manager[223]: User initiated dump completed, resetting flag

ls -lrth obmcdump_1_1742987685
total 916K
...
-rw-r--r-- 1 dkamat domain-users  79K Mar 26 16:44 dbusstats.log
...

ls -lrth obmcdump_1_1742987685/dbusstats.log
domain-users 79K Mar 26 16:44 obmcdump_1_1742987685/dbusstats.log
cat obmcdump_1_1742987685/dbusstats.log | -n 10
...
                  array [
                     dict entry(
                        string "NameObjects"
                        uint32 0
                     )
                     dict entry(
                        string "MatchBytes"
                        uint32 6150
                     )
                     dict entry(
                        string "Matches"
                        uint32 8
                     )
                     dict entry(
                        string "ReplyObjects"
                        uint32 0
                     )
                     dict entry(
                        string "IncomingBytes"
                        uint32 16
                     )
                     dict entry(
                        string "IncomingFds"
                        uint32 0
                     )
                     dict entry(
                        string "OutgoingBytes"
                        uint32 0
                     )
                     dict entry(
                        string "OutgoingFds"
                        uint32 0
                     )
                     dict entry(
                        string "ActivationRequestBytes"
                        uint32
                     )
                     dict entry(
                        string "ActivationRequestFds"
                        uint32 0
                     )
                  ]
               }
'''

Change-Id: I37d93f1a6a55c306cd3a05e7319c99413353aa98
Signed-off-by: Deepak Kamat <dkamat@nvidia.com>
diff --git a/tools/dreport.d/plugins.d/dbusstats b/tools/dreport.d/plugins.d/dbusstats
new file mode 100644
index 0000000..49a046a
--- /dev/null
+++ b/tools/dreport.d/plugins.d/dbusstats
@@ -0,0 +1,18 @@
+#!/bin/bash
+#
+# config: 2 50
+# @brief: Get the internal dbus information.
+#
+
+# shellcheck source=/dev/null
+. "$DREPORT_INCLUDE"/functions
+
+desc="dbus internal stats"
+
+command="dbus-send --system --dest=org.freedesktop.DBus \
+            --type=method_call --print-reply \
+            /org/freedesktop/DBus org.freedesktop.DBus.Debug.Stats.GetStats"
+
+file_name="dbusstats.log"
+
+add_cmd_output "$command" "$file_name" "$desc"