4.15. 为代理配置日志记录
AMQ Broker 使用 Log4j 2 日志记录工具来提供消息日志记录。部署代理时,它会使用默认的 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 NAME STATUS IP amq-broker-operator-54d996c Running 10.129.2.14 ex-aao-ss-0 Running 10.129.2.15
使用
oc cp
命令将日志配置文件从 Pod 复制到您的本地目录。$ oc cp <pod name>:/home/jboss/amq-broker/etc/log4j2.properties logging.properties -c <name>-container
其中,容器名称的 <name> 部分是 Pod 名称中的
-ss
字符串前的前缀。例如:$ oc cp ex-aao-ss-0:/home/jboss/amq-broker/etc/log4j2.properties logging.properties -c ex-aao-container
注意当您从文件创建 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>
如果要在 secret 中配置日志设置,请使用
oc create secret
命令。例如:oc create secret generic newlog4j-logging-config --from-file=logging.properties
如果要在 ConfigMap 中配置日志设置,请使用
oc create configmap
命令。例如:oc create configmap newlog4j-logging-config --from-file=logging.properties
configMap 或 secret 名称必须具有
-logging-config
后缀,以便 Operator 可以识别 secret 包含新的日志记录配置。
将 secret 或 ConfigMap 添加到代理部署的自定义资源(CR)实例中。
使用 OpenShift 命令行界面:
以具有特权在项目中为代理部署 CR 的用户身份登录 OpenShift。
oc login -u <user> -p <password> --server=<host:port>
编辑 CR。
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
使用 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。以下示例显示了添加到 CR 中的 secret 和 configMap。
apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemis metadata: name: ex-aao spec: deploymentPlan: ... extraMounts: secrets: - "newlog4j-logging-config" ...
apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemis metadata: name: ex-aao spec: deploymentPlan: ... extraMounts: configMaps: - "newlog4j-logging-config" ...
- 保存 CR。
在每个代理 Pod 中,Operator 会挂载一个 logging.properties
文件,其中包含您创建的 secret 或 configMap 中的日志记录配置。另外,Operator 将每个代理配置为使用挂载的日志文件,而不是默认的日志配置文件。
如果您更新 configMap 或 secret 中的日志记录配置,则每个代理都会自动使用更新的日志记录配置。