dreport: collecting all namespace journal logs

For BMCs that support multiple namespaces to manage logs, add the
--namespace=* option to the journalctl command to collect all logs.

refer to systemd-journald.service.html[0].

Tested:
1. Prepare a namespace configuration, to isolate logs (in general for
   the third-party code, like silicon vendor, etc), avoid too many
   unexpected to noise the system.
```
~# cp /etc/systemd/journald.conf /etc/systemd/journald@intel.conf
~# mkdir -p /etc/systemd/system/com.intel.crashdump.service.d
~# echo "[Service]" > /etc/systemd/system/com.intel.crashdump.service.d/override.conf
~# echo "LogNamespace=intel" >> /etc/systemd/system/com.intel.crashdump.service.d/override.conf
~# reboot # or restart systemd-journald, and daemon-reload
````

2. using journalctl vs journalctl --namespace=*
```
~# journalctl -u com.intel.crashdump.service
Dec 10 16:56:49 xxx systemd[1]: Starting Intel BMC CPU Crashdump...
Dec 10 16:56:55 xxx systemd[1]: Started Intel BMC CPU Crashdump.
```

```
~# journalctl --namespace=*
Dec 10 16:56:49 xxx systemd[1]: Starting Intel BMC CPU Crashdump...
Dec 10 16:56:55 xxx systemd[1]: Started Intel BMC CPU Crashdump.
Dec 10 16:56:57 xxx crashdump[258]: Crashdump version: ....
Dec 10 16:56:57 xxx crashdump[258]: Initializing crashdump...
....
```

3. After this change, check the journal logs, and the journal logs
   should be collect the logs from all namespaces.
```
cat journal-pretty.log| ag "Initializing crashdump"
	"MESSAGE" : "Initializing crashdump...",
```

[0]: https://www.freedesktop.org/software/systemd/man/latest/systemd-journald.service.html#Journal%20Namespaces

Change-Id: I70f33eb6119cbe041bb0dc2aac527e02d8f5e757
Signed-off-by: Jian Zhang <zhangjian.3032@bytedance.com>
3 files changed
tree: fab7522fb9f4a15fc01831ab65ee4e127db8cdd9
  1. dump-extensions/
  2. host-transport-extensions/
  3. subprojects/
  4. test/
  5. tools/
  6. .clang-format
  7. .clang-tidy
  8. .gitignore
  9. .shellcheck-ignore
  10. bmc_dump_entry.cpp
  11. bmc_dump_entry.hpp
  12. core_manager.cpp
  13. core_manager.hpp
  14. core_manager_main.cpp
  15. dump-extensions.hpp
  16. dump_entry.cpp
  17. dump_entry.hpp
  18. dump_manager.cpp
  19. dump_manager.hpp
  20. dump_manager_bmc.cpp
  21. dump_manager_bmc.hpp
  22. dump_manager_faultlog.cpp
  23. dump_manager_faultlog.hpp
  24. dump_manager_main.cpp
  25. dump_offload.cpp
  26. dump_offload.hpp
  27. dump_serialize.cpp
  28. dump_serialize.hpp
  29. dump_types.cpp.mako
  30. dump_types.hpp.mako
  31. dump_utils.cpp
  32. dump_utils.hpp
  33. elog_watch.cpp
  34. elog_watch.hpp
  35. example_dump_types.yaml
  36. example_errors_watch.yaml
  37. faultlog_dump_entry.cpp
  38. faultlog_dump_entry.hpp
  39. ffdc
  40. host_transport_exts.hpp
  41. LICENSE
  42. map_gen.py
  43. meson.build
  44. meson.options
  45. OWNERS
  46. ramoops_manager.cpp
  47. ramoops_manager.hpp
  48. ramoops_manager_main.cpp
  49. README.md
  50. watch.cpp
  51. watch.hpp
README.md

phosphor-debug-collector

Phosphor Debug Collector provides mechanisms to collect various log files and system parameters. Used to troubleshoot problems in OpenBMC based systems.

One such mechanism is dreport, a script that collects debug data and packages it into an archive file.

To Build

To build this package with meson, do the following steps:

    1. meson builddir
    2. ninja -C builddir

To clean the built files run ninja -C builddir clean.

To run unit tests

Tests can be run in the CI docker container, refer local-ci-build

or with an OpenBMC x86 sdk(see below for x86 steps).

meson -Dtests=enabled build
ninja -C build test