xref: /openbmc/phosphor-logging/README.md (revision c49661925b0c59a4355aca6813a85d749c21e764)
17aafb12eSNagaraju Goruganti# phosphor-logging
27aafb12eSNagaraju Gorugantiphosphor logging provides mechanism for common event and logging creation based
37aafb12eSNagaraju Gorugantion information from the journal log.
47aafb12eSNagaraju Goruganti
57aafb12eSNagaraju Goruganti## To Build
67aafb12eSNagaraju Goruganti```
77aafb12eSNagaraju GorugantiTo build this package, do the following steps:
87aafb12eSNagaraju Goruganti
97aafb12eSNagaraju Goruganti    1. ./bootstrap.sh
107aafb12eSNagaraju Goruganti    2. ./configure ${CONFIGURE_FLAGS}
117aafb12eSNagaraju Goruganti    3. make
127aafb12eSNagaraju Goruganti
137aafb12eSNagaraju GorugantiTo clean the repository run `./bootstrap.sh clean`.
147aafb12eSNagaraju Goruganti```
159067c077SDeepak Kodihalli
16*c4966192SDeepak Kodihalli## Remote Logging via Rsyslog
17*c4966192SDeepak KodihalliThe BMC has the ability to stream out local logs (that go to the systemd journal)
18*c4966192SDeepak Kodihallivia rsyslog (https://www.rsyslog.com/).
19*c4966192SDeepak Kodihalli
20*c4966192SDeepak KodihalliThe BMC will send everything. Any kind of filtering and appropriate storage
21*c4966192SDeepak Kodihalliwill have to be managed on the rsyslog server. Various examples are available
22*c4966192SDeepak Kodihallion the internet. Here are few pointers :
23*c4966192SDeepak Kodihallihttps://www.rsyslog.com/storing-and-forwarding-remote-messages/
24*c4966192SDeepak Kodihallihttps://www.rsyslog.com/doc/rsyslog%255Fconf%255Ffilter.html
25*c4966192SDeepak Kodihallihttps://www.thegeekdiary.com/understanding-rsyslog-filter-options/
26*c4966192SDeepak Kodihalli
27*c4966192SDeepak Kodihalli#### Configuring rsyslog server for remote logging
28*c4966192SDeepak KodihalliThe BMC is an rsyslog client. To stream out logs, it needs to talk to an rsyslog
29*c4966192SDeepak Kodihalliserver, to which there's connectivity over a network. REST API can be used to
30*c4966192SDeepak Kodihalliset the remote server's IP address and port number.
31*c4966192SDeepak Kodihalli
32*c4966192SDeepak KodihalliThe following presumes a user has logged on to the BMC (see
33*c4966192SDeepak Kodihallihttps://github.com/openbmc/docs/blob/master/rest-api.md).
34*c4966192SDeepak Kodihalli
35*c4966192SDeepak KodihalliSet the IP:
36*c4966192SDeepak Kodihalli```
37*c4966192SDeepak Kodihallicurl -b cjar -k -H "Content-Type: application/json" -X PUT \
38*c4966192SDeepak Kodihalli    -d '{"data": <IP address>}' \
39*c4966192SDeepak Kodihalli    https://<BMC IP address>/xyz/openbmc_project/logging/config/remote/attr/Address
40*c4966192SDeepak Kodihalli```
41*c4966192SDeepak Kodihalli
42*c4966192SDeepak KodihalliSet the port:
43*c4966192SDeepak Kodihalli```
44*c4966192SDeepak Kodihallicurl -b cjar -k -H "Content-Type: application/json" -X PUT \
45*c4966192SDeepak Kodihalli    -d '{"data": <port number>}' \
46*c4966192SDeepak Kodihalli    https://<BMC IP address>/xyz/openbmc_project/logging/config/remote/attr/Port
47*c4966192SDeepak Kodihalli```
48*c4966192SDeepak Kodihalli
49*c4966192SDeepak Kodihalli#### Querying the current configuration
50*c4966192SDeepak Kodihalli```
51*c4966192SDeepak Kodihallicurl -b cjar -k \
52*c4966192SDeepak Kodihalli    https://<BMC IP address>/xyz/openbmc_project/logging/config/remote
53*c4966192SDeepak Kodihalli```
54*c4966192SDeepak Kodihalli
55*c4966192SDeepak Kodihalli#### Setting the hostname
56*c4966192SDeepak KodihalliRsyslog can store logs separately for each host. For this reason, it's useful to
57*c4966192SDeepak Kodihalliprovide a unique hostname to each managed BMC. Here's how that can be done via a
58*c4966192SDeepak KodihalliREST API :
59*c4966192SDeepak Kodihalli```
60*c4966192SDeepak Kodihallicurl -b cjar -k -H "Content-Type: application/json" -X PUT \
61*c4966192SDeepak Kodihalli    -d '{"data": "myHostName"}' \
62*c4966192SDeepak Kodihalli    https://<BMC IP address>//xyz/openbmc_project/network/config/attr/HostName
63*c4966192SDeepak Kodihalli```
64*c4966192SDeepak Kodihalli
65*c4966192SDeepak Kodihalli#### Changing the rsyslog server
66*c4966192SDeepak KodihalliWhen switching to a new server from an existing one (i.e the address, or port,
67*c4966192SDeepak Kodihallior both change), it is recommended to disable the existing configuration first.
68*c4966192SDeepak Kodihalli
699067c077SDeepak Kodihalli## Adding application specific error YAML
704e5f521aSMarri Devender Rao* This document captures steps for adding application specific error YAML files
714e5f521aSMarri Devender Rao  and generating local elog-errors.hpp header file for application use.
724e5f521aSMarri Devender Rao* Should cater for continuous integration (CI) build, bitbake image build, and
734e5f521aSMarri Devender Rao  local repository build.
747aafb12eSNagaraju Goruganti
759067c077SDeepak Kodihalli#### Continuous Integration (CI) build
764e5f521aSMarri Devender Rao * Make is called on the repository that is modified.
774e5f521aSMarri Devender Rao * Dependent packages are pulled based on the dependency list specified in the
784e5f521aSMarri Devender Rao   configure.ac script.
797aafb12eSNagaraju Goruganti
809067c077SDeepak Kodihalli#### Recipe build
814e5f521aSMarri Devender Rao * Native recipes copy error YAML files to shared location.
824e5f521aSMarri Devender Rao * phosphor-logging builds elog-errors.hpp by parsing the error YAML files from
834e5f521aSMarri Devender Rao   the shared location.
847aafb12eSNagaraju Goruganti
859067c077SDeepak Kodihalli#### Local repository build
864e5f521aSMarri Devender Rao * Copies local error YAML files to the shared location in SDK
874e5f521aSMarri Devender Rao * Make generates elog-errors.hpp by parsing the error YAML files from the
884e5f521aSMarri Devender Rao   shared location.
897aafb12eSNagaraju Goruganti
909067c077SDeepak Kodihalli#### Makefile changes
914e5f521aSMarri Devender Rao**Reference**
924e5f521aSMarri Devender Rao * https://github.com/openbmc/openpower-debug-collector/blob/master/Makefile.am
939067c077SDeepak Kodihalli
949067c077SDeepak Kodihalli###### Export error YAML to shared location
954e5f521aSMarri Devender Rao*Modify Makefile.am to export newly added error YAML to shared location*
964e5f521aSMarri Devender Rao```
974e5f521aSMarri Devender Raoyamldir = ${datadir}/phosphor-dbus-yaml/yaml
984e5f521aSMarri Devender Raonobase_yaml_DATA = \
994e5f521aSMarri Devender Rao    org/open_power/Host.errors.yaml
1004e5f521aSMarri Devender Rao```
1019067c077SDeepak Kodihalli
1029067c077SDeepak Kodihalli###### Generate elog-errors.hpp using elog parser from SDK location
1034e5f521aSMarri Devender Rao * Add a conditional check "GEN_ERRORS"
1044e5f521aSMarri Devender Rao * Disable the check for recipe bitbake image build
1054e5f521aSMarri Devender Rao * Enable it for local repository build
1064e5f521aSMarri Devender Rao * If "GEN_ERRORS" is enabled, build generates elog-errors.hpp header file.
1074e5f521aSMarri Devender Rao```
1084e5f521aSMarri Devender Rao  # Generate phosphor-logging/elog-errors.hpp
1094e5f521aSMarri Devender Rao  if GEN_ERRORS
1104e5f521aSMarri Devender Rao  ELOG_MAKO ?= elog-gen-template.mako.hpp
1114e5f521aSMarri Devender Rao  ELOG_DIR ?= ${OECORE_NATIVE_SYSROOT}${datadir}/phosphor-logging/elog
1124e5f521aSMarri Devender Rao  ELOG_GEN_DIR ?= ${ELOG_DIR}/tools/
1134e5f521aSMarri Devender Rao  ELOG_MAKO_DIR ?= ${ELOG_DIR}/tools/phosphor-logging/templates/
1144e5f521aSMarri Devender Rao  YAML_DIR ?= ${OECORE_NATIVE_SYSROOT}${datadir}/phosphor-dbus-yaml/yaml
1154e5f521aSMarri Devender Rao  phosphor-logging/elog-errors.hpp:
1164e5f521aSMarri Devender Rao      @mkdir -p ${YAML_DIR}/org/open_power/
1174e5f521aSMarri Devender Rao      @cp ${top_srcdir}/org/open_power/Host.errors.yaml \
1184e5f521aSMarri Devender Rao        ${YAML_DIR}/org/open_power/Host.errors.yaml
1194e5f521aSMarri Devender Rao      @mkdir -p `dirname $@`
1204e5f521aSMarri Devender Rao      @chmod 777 $(ELOG_GEN_DIR)/elog-gen.py
1214e5f521aSMarri Devender Rao      $(AM_V_at)$(PYTHON) $(ELOG_GEN_DIR)/elog-gen.py -y ${YAML_DIR} \
1224e5f521aSMarri Devender Rao        -t ${ELOG_MAKO_DIR} -m ${ELOG_MAKO} -o $@
1234e5f521aSMarri Devender Rao  endif
1244e5f521aSMarri Devender Rao```
1257aafb12eSNagaraju Goruganti
1269067c077SDeepak Kodihalli###### Update BUILT_SOURCES
1274e5f521aSMarri Devender Rao * Append elog-errors.hpp to BUILT_SOURCES list and put it in conditional check
1284e5f521aSMarri Devender Rao   GEN_ERRORS so that the elog-errors.hpp is generated only during local
1294e5f521aSMarri Devender Rao   repository build.
1304e5f521aSMarri Devender Rao```
1314e5f521aSMarri Devender Rao    if GEN_ERRORS
1324e5f521aSMarri Devender Rao    nobase_nodist_include_HEADERS += \
1334e5f521aSMarri Devender Rao                phosphor-logging/elog-errors.hpp
1344e5f521aSMarri Devender Rao    endif
1354e5f521aSMarri Devender Rao    if GEN_ERRORS
1364e5f521aSMarri Devender Rao    BUILT_SOURCES += phosphor-logging/elog-errors.hpp
1374e5f521aSMarri Devender Rao    endif
1384e5f521aSMarri Devender Rao```
1399067c077SDeepak Kodihalli
1409067c077SDeepak Kodihalli###### Conditional check for native build
1414e5f521aSMarri Devender Rao * As the same Makefile is used both for recipe image build and native recipe
1424e5f521aSMarri Devender Rao   build, add a conditional to ensure that only installation of error yaml files
1434e5f521aSMarri Devender Rao   happens during native build. It is not required to build repository during
1444e5f521aSMarri Devender Rao   native build.
1454e5f521aSMarri Devender Rao```
1464e5f521aSMarri Devender Rao   if !INSTALL_ERROR_YAML
1474e5f521aSMarri Devender Rao   endif
1484e5f521aSMarri Devender Rao```
1499067c077SDeepak Kodihalli
1509067c077SDeepak Kodihalli#### Autotools changes
1514e5f521aSMarri Devender Rao**Reference**
1524e5f521aSMarri Devender Rao * https://github.com/openbmc/openpower-debug-collector/blob/master/configure.ac
1537aafb12eSNagaraju Goruganti
1549067c077SDeepak Kodihalli###### Add option(argument) to enable/disable installing error yaml file
1554e5f521aSMarri Devender Rao * Install error yaml option(argument) is enabled for native recipe build
1564e5f521aSMarri Devender Rao   and disabled for bitbake build.
1574e5f521aSMarri Devender Rao
1584e5f521aSMarri Devender Rao * When install error yaml option is disabled do not check for target specific
1594e5f521aSMarri Devender Rao   packages in autotools configure script.
1604e5f521aSMarri Devender Rao
1619067c077SDeepak Kodihalli###### Add option(argument) to install error yaml files
1624e5f521aSMarri Devender Rao```
1634e5f521aSMarri Devender RaoAC_ARG_ENABLE([install_error_yaml],
1644e5f521aSMarri Devender Rao    AS_HELP_STRING([--enable-install_error_yaml],
1654e5f521aSMarri Devender Rao    [Enable installing error yaml file]),[], [install_error_yaml=no])
1664e5f521aSMarri Devender RaoAM_CONDITIONAL([INSTALL_ERROR_YAML],
1674e5f521aSMarri Devender Rao    [test "x$enable_install_error_yaml" = "xyes"])
1684e5f521aSMarri Devender RaoAS_IF([test "x$enable_install_error_yaml" != "xyes"], [
1694e5f521aSMarri Devender Rao..
1704e5f521aSMarri Devender Rao..
1714e5f521aSMarri Devender Rao])
1724e5f521aSMarri Devender Rao```
1739067c077SDeepak Kodihalli
1749067c077SDeepak Kodihalli###### Add option(argument) to enable/disable generating elog-errors header file
1754e5f521aSMarri Devender Rao```
1764e5f521aSMarri Devender RaoAC_ARG_ENABLE([gen_errors],
1774e5f521aSMarri Devender Rao    AS_HELP_STRING([--enable-gen_errors], [Enable elog-errors.hpp generation ]),
1784e5f521aSMarri Devender Rao    [],[gen_errors=yes])
1794e5f521aSMarri Devender RaoAM_CONDITIONAL([GEN_ERRORS], [test "x$enable_gen_errors" != "xno"])
1804e5f521aSMarri Devender Rao```
1814e5f521aSMarri Devender Rao
1829067c077SDeepak Kodihalli#### Recipe changes
1834e5f521aSMarri Devender Rao**Reference**
1844e5f521aSMarri Devender Rao* https://github.com/openbmc/openbmc/blob/master/meta-openbmc-machines\
1854e5f521aSMarri Devender Rao/meta-openpower/common/recipes-phosphor/debug/openpower-debug-collector.bb
1864e5f521aSMarri Devender Rao
1879067c077SDeepak Kodihalli###### Extend recipe for native and nativesdk
1884e5f521aSMarri Devender Rao* Extend the recipe for native and native SDK builds
1894e5f521aSMarri Devender Rao```
1904e5f521aSMarri Devender RaoBBCLASSEXTEND += "native nativesdk"
1914e5f521aSMarri Devender Rao```
1929067c077SDeepak Kodihalli###### Remove dependencies for native and native SDK build
1934e5f521aSMarri Devender Rao* Native recipe caters only for copying error yaml files to shared location.
1944e5f521aSMarri Devender Rao* For native and native SDK build remove dependency on packages that recipe
1954e5f521aSMarri Devender Rao  build depends
1964e5f521aSMarri Devender Rao
1979067c077SDeepak Kodihalli###### Remove dependency on phosphor-logging for native build
1984e5f521aSMarri Devender Rao```
1994e5f521aSMarri Devender RaoDEPENDS_remove_class-native = "phosphor-logging"
2004e5f521aSMarri Devender Rao```
2019067c077SDeepak Kodihalli
2029067c077SDeepak Kodihalli###### Remove dependency on phosphor-logging for native SDK build
2034e5f521aSMarri Devender Rao```
2044e5f521aSMarri Devender RaoDEPENDS_remove_class-nativesdk = "phosphor-logging"
2054e5f521aSMarri Devender Rao```
2069067c077SDeepak Kodihalli
2079067c077SDeepak Kodihalli###### Add install_error_yaml argument during native build
2084e5f521aSMarri Devender Rao* Add package config to enable/disable install_error_yaml feature.
2099067c077SDeepak Kodihalli
2109067c077SDeepak Kodihalli###### Add package config to enable/disable install_error_yaml feature
2114e5f521aSMarri Devender Rao```
2124e5f521aSMarri Devender RaoPACKAGECONFIG ??= "install_error_yaml"
2134e5f521aSMarri Devender RaoPACKAGECONFIG[install_error_yaml] = " \
2144e5f521aSMarri Devender Rao        --enable-install_error_yaml, \
2154e5f521aSMarri Devender Rao        --disable-install_error_yaml, ,\
2164e5f521aSMarri Devender Rao        "
2174e5f521aSMarri Devender Rao```
2189067c077SDeepak Kodihalli###### Enable install_error_yaml check for native build
2194e5f521aSMarri Devender Rao```
2204e5f521aSMarri Devender RaoPACKAGECONFIG_add_class-native = "install_error_yaml"
2214e5f521aSMarri Devender RaoPACKAGECONFIG_add_class-nativesdk = "install_error_yaml"
2224e5f521aSMarri Devender Rao```
2239067c077SDeepak Kodihalli###### Disable install_error_yaml during target build
2244e5f521aSMarri Devender Rao```
2254e5f521aSMarri Devender RaoPACKAGECONFIG_remove_class-target = "install_error_yaml"
2264e5f521aSMarri Devender Rao```
2274e5f521aSMarri Devender Rao
2289067c077SDeepak Kodihalli###### Disable generating elog-errors.hpp for bitbake build
2294e5f521aSMarri Devender Rao* Disable gen_errors argument for bitbake image build as the application uses
2304e5f521aSMarri Devender Rao  the elog-errors.hpp generated by phosphor-logging
2314e5f521aSMarri Devender Rao* Argument is enabled by default for local repository build in the configure
2324e5f521aSMarri Devender Rao  script of the local repository.
2334e5f521aSMarri Devender Rao```
2344e5f521aSMarri Devender Rao XTRA_OECONF += "--disable-gen_errors"
2354e5f521aSMarri Devender Rao```
2364e5f521aSMarri Devender Rao
2379067c077SDeepak Kodihalli#### Local build
2384e5f521aSMarri Devender Rao* During local build use --prefix=/usr for the configure script.
2394e5f521aSMarri Devender Rao
2404e5f521aSMarri Devender Rao**Reference**
2414e5f521aSMarri Devender Rao* https://github.com/openbmc/openpower-debug-collector/blob/master/README.md
242