4.18. 为代理配置日志记录
AMQ Broker 使用 Log4j 2 logging 工具提供消息日志记录。当您部署代理时,它会使用默认的 Log4j 2 配置。如果要更改默认配置,则必须在 secret 或 configMap 中创建一个新的 Log4j 2 配置。将 secret 或 configMap 的名称添加到主代理自定义资源(CR)后,Operator 会将每个代理配置为使用新的日志记录配置,该配置存储在 Operator 挂载到每个 Pod 的文件中。
前提条件
- 熟悉 Log4j 2 配置选项。
流程
准备包含您要与 AMQ Broker 搭配使用的 log4j 2 配置的文件。
代理使用的默认 Log4j 2 配置文件位于每个代理 Pod 上的
/home/jboss/amq-broker/etc/log4j2.properties
文件中。您可以使用默认配置文件的内容作为在 secret 或 configMap 中创建新的 Log4j 2 配置的基础。要获取默认 Log4j 2 配置文件的内容,请完成以下步骤。使用 OpenShift Container Platform Web 控制台:
-
单击
。 - 点 ex-aao-ss Pod。
- 点击 Terminal 选项卡。
-
使用
cat
命令显示代理 Pod 上/home/jboss/amq-broker/etc/log4j2.properties
文件的内容并复制其内容。 -
将内容粘贴到安装 OpenShift Container Platform CLI 的本地文件中,并将文件保存为
logging.properties
。
-
单击
使用 OpenShift 命令行界面:
获取部署中的 Pod 的名称。
oc get pods -o wide
$ oc get pods -o wide NAME STATUS IP amq-broker-operator-54d996c Running 10.129.2.14 ex-aao-ss-0 Running 10.129.2.15
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc cp
命令将日志配置文件从 Pod 复制到您的本地目录。oc cp <pod name>:/home/jboss/amq-broker/etc/log4j2.properties logging.properties -c <name>-container
$ oc cp <pod name>:/home/jboss/amq-broker/etc/log4j2.properties logging.properties -c <name>-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中,容器名称的 <name> 部分是 Pod 名称的
-ss
字符串前的前缀。例如:oc cp ex-aao-ss-0:/home/jboss/amq-broker/etc/log4j2.properties logging.properties -c ex-aao-container
$ oc cp ex-aao-ss-0:/home/jboss/amq-broker/etc/log4j2.properties logging.properties -c ex-aao-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意从文件创建 configMap 或 secret 时,configMap 或 secret 中的键默认为文件名,值默认为文件内容。从名为
logging.properties
的文件创建 secret,新日志记录配置所需的密钥会插入到 secret 或 configMap 中。
编辑
logging.properties
文件,并创建您要与 AMQ Broker 搭配使用的 Log4j 2 配置。例如,在使用默认配置时,AMQ Broker 只会将信息记录到控制台。您可能想要更新配置,以便 AMQ Broker 也会将信息记录到磁盘。
将更新的 Log4j 2 配置添加到 secret 或 ConfigMap 中。
以具有在项目中为代理部署创建 secret 或 ConfigMap 的用户身份登录 OpenShift。
oc login -u <user> -p <password> --server=<host:port>
oc login -u <user> -p <password> --server=<host:port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要在 secret 中配置日志设置,请使用
oc create secret
命令。例如:oc create secret generic newlog4j-logging-config --from-file=logging.properties
oc create secret generic newlog4j-logging-config --from-file=logging.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要在 ConfigMap 中配置日志设置,请使用
oc create configmap
命令。例如:oc create configmap newlog4j-logging-config --from-file=logging.properties
oc create configmap newlog4j-logging-config --from-file=logging.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow configMap 或 secret 名称必须具有
-logging-config
的后缀,因此 Operator 可以识别 secret 包含新的日志记录配置。
将 secret 或 ConfigMap 添加到代理部署的自定义资源(CR)实例中。
使用 OpenShift 命令行界面:
以具有特权的用户身份登录 OpenShift,以便在代理部署的项目中部署 CR。
oc login -u <user> -p <password> --server=<host:port>
oc login -u <user> -p <password> --server=<host:port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑 CR。
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 OpenShift Container Platform Web 控制台:
- 以具有特权的用户身份登录控制台,以便在代理部署的项目中部署 CR。
-
在左侧窗格中,点
。 - 点 Red Hat Integration - AMQ Broker for RHEL 8 (Multiarch) operator。
- 点 AMQ Broker 选项卡。
- 单击 ActiveMQArtemis 实例名称的名称
点 YAML 标签。
在控制台中,会打开 YAML 编辑器,供您配置 CR 实例。
将包含 Log4j 2 日志记录配置的 secret 或 configMap 添加到 CR。以下示例显示了一个 secret,并在 CR 中添加 configMap。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 保存 CR。
在每个代理 Pod 中,Operator 挂载一个 logging.properties
文件,该文件包含您创建的 secret 或 configMap 中的日志记录配置。另外,Operator 将每个代理配置为使用挂载的日志文件,而不是默认的日志文件。
如果在 configMap 或 secret 中更新日志配置,每个代理会自动使用更新的日志记录配置。