# 配置 EMQX 日志等级
# 任务目标
- 如何配置 EMQX 集群日志等级。
# 配置 EMQX 集群
EMQX CRD 支持使用 .spec.bootstrapConfig
来配置 EMQX 集群日志等级,bootstrapConfig 的配置可以参考文档:bootstrapConfig (opens new window)。这个字段只允许在创建 EMQX 集群的时候配置,不支持更新。注意: 如果在创建 EMQX 之后需要修改集群日志等级,请通过 EMQX Dashboard 进行修改。
apiVersion: apps.emqx.io/v2alpha1
kind: EMQX
metadata:
name: emqx
spec:
image: emqx/emqx:5.0.9
imagePullPolicy: IfNotPresent
bootstrapConfig: |
log {
console_handler {
level = debug
}
}
coreTemplate:
spec:
replicas: 3
replicantTemplate:
spec:
replicas: 0
listenersServiceTemplate:
spec:
type: NodePort
ports:
- name: "tcp-default"
protocol: TCP
port: 1883
targetPort: 1883
nodePort: 32010
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
说明: .spec.bootstrapConfig
字段配置 EMQX 集群日志等级为 debug
。
EMQX 企业版在 EMQX Operator 里面对应的 CRD 为 EmqxEnterprise,EmqxEnterprise 支持通过 .spec.template.spec.emqxContainer.emqxConfig
字段配置 EMQX 集群日志等级。emqxConfig 字段的具体描述可以参考:emqxConfig (opens new window)。
apiVersion: apps.emqx.io/v1beta4
kind: EmqxEnterprise
metadata:
name: emqx-ee
spec:
template:
spec:
emqxContainer:
image:
repository: emqx/emqx-ee
version: 4.4.8
emqxConfig:
log.level: debug
serviceTemplate:
spec:
type: NodePort
ports:
- name: "mqtt-tcp-1883"
protocol: "TCP"
port: 1883
targetPort: 1883
nodePort: 32010
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
说明: .spec.template.spec.emqxContainer.emqxConfig
字段配置 EMQX 集群日志等级为 debug
。
EMQX 企业版在 EMQX Operator 里面对应的 CRD 为 EmqxEnterprise,EmqxEnterprise 支持通过 .spec.emqxTemplate.config
字段配置集群日志等级。config 字段的描述可以参考文档:config (opens new window)
apiVersion: apps.emqx.io/v1beta3
kind: EmqxEnterprise
metadata:
name: emqx-ee
spec:
emqxTemplate:
image: emqx/emqx-ee:4.4.8
config:
log.level: debug
serviceTemplate:
spec:
type: NodePort
ports:
- name: "mqtt-tcp-1883"
protocol: "TCP"
port: 1883
targetPort: 1883
nodePort: 32010
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
说明: .spec.emqxTemplate.config
字段配置 EMQX 集群日志等级为 debug
。
将上述内容保存为:emqx-log-level.yaml,并执行如下命令部署 EMQX 集群:
kubectl apply -f emqx-log-level.yaml
输出类似于:
emqx.apps.emqx.io/emqx created
- 检查 EMQX 集群是否就绪
kubectl get emqx emqx -o json | jq ".status.emqxNodes"
输出类似于:
[
{
"node": "emqx@emqx-core-0.emqx-headless.default.svc.cluster.local",
"node_status": "running",
"otp_release": "24.2.1-1/12.2.1",
"role": "core",
"version": "5.0.9"
},
{
"node": "emqx@emqx-core-1.emqx-headless.default.svc.cluster.local",
"node_status": "running",
"otp_release": "24.2.1-1/12.2.1",
"role": "core",
"version": "5.0.9"
},
{
"node": "emqx@emqx-core-2.emqx-headless.default.svc.cluster.local",
"node_status": "running",
"otp_release": "24.2.1-1/12.2.1",
"role": "core",
"version": "5.0.9"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
说明: node 表示 EMQX 节点在集群的唯一标识。node_status 表示 EMQX 节点的状态。otp_release 表示 EMQX 使用的 Erlang 的版本。role 表示 EMQX 节点角色类型。version 表示 EMQX 版本。EMQX Operator 默认创建包含三个 core 节点和三个 replicant 节点的 EMQX 集群,所以当集群运行正常时,可以看到三个运行的 core 节点和三个 replicant 节点信息。如果你配置了 .spec.coreTemplate.spec.replicas
字段,当集群运行正常时,输出结果中显示的运行 core 节点数量应和这个 replicas 的值相等。如果你配置了 .spec.replicantTemplate.spec.replicas
字段,当集群运行正常时,输出结果中显示的运行 replicant 节点数量应和这个 replicas 的值相等。
kubectl get emqxenterprise emqx-ee -o json | jq ".status.emqxNodes"
输出类似于:
[
{
"node": "emqx-ee@emqx-ee-0.emqx-ee-headless.default.svc.cluster.local",
"node_status": "Running",
"otp_release": "24.1.5/12.1.5",
"version": "4.4.8"
},
{
"node": "emqx-ee@emqx-ee-1.emqx-ee-headless.default.svc.cluster.local",
"node_status": "Running",
"otp_release": "24.1.5/12.1.5",
"version": "4.4.8"
},
{
"node": "emqx-ee@emqx-ee-2.emqx-ee-headless.default.svc.cluster.local",
"node_status": "Running",
"otp_release": "24.1.5/12.1.5",
"version": "4.4.8"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
说明: node 表示 EMQX 节点在集群的唯一标识。node_status 表示 EMQX 节点的状态。otp_release 表示 EMQX 使用的 Erlang 的版本。version 表示 EMQX 版本。EMQX Operator 默认会拉起三个节点的 EMQX 集群,所以当集群运行正常时,可以看到三个运行的节点信息。如果你配置了 .spec.replicas
字段,当集群运行正常时,输出结果中显示的运行节点数量应和 replicas 的值相等。
kubectl get emqxenterprise emqx-ee -o json | jq ".status.emqxNodes"
输出类似于:
[
{
"node": "emqx-ee@emqx-ee-0.emqx-ee-headless.default.svc.cluster.local",
"node_status": "Running",
"otp_release": "24.1.5/12.1.5",
"version": "4.4.8"
},
{
"node": "emqx-ee@emqx-ee-1.emqx-ee-headless.default.svc.cluster.local",
"node_status": "Running",
"otp_release": "24.1.5/12.1.5",
"version": "4.4.8"
},
{
"node": "emqx-ee@emqx-ee-2.emqx-ee-headless.default.svc.cluster.local",
"node_status": "Running",
"otp_release": "24.1.5/12.1.5",
"version": "4.4.8"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
说明: node 表示 EMQX 节点在集群的唯一标识。node_status 表示 EMQX 节点的状态。otp_release 表示 EMQX 使用的 Erlang 的版本。version 表示 EMQX 版本。EMQX Operator 默认会拉起三个节点的 EMQX 集群,所以当集群运行正常时,可以看到三个运行的节点信息。如果你配置了 .spec.replicas
字段,当集群运行正常时,输出结果中显示的运行节点数量应和 replicas 的值相等。
# 验证 EMQX 集群日志等级配置是否生效
- 使用 MQTT X 连接 EMQX 集群发送消息
在 MQTT X 页面点击创建新连接的按钮,按照如图所示配置 EMQX 集群节点信息,在配置好连接信息之后,点击 connect 按钮连接 EMQX 集群:
然后点击订阅按钮新建订阅,如图所示 MQTT X 已成功连接 EMQX 集群并且已经成功创建订阅:
在成功连接 EMQX 集群并创建订阅之后,我们就可以向 EMQX 集群发送消息,如下图所示:
- 使用命令行查看 EMQX 集群日志信息
kubectl logs emqx-core-0 -c emqx
输出如下图所示:
从图中可以看到刚才使用 MQTT 连接 EMQX 集群建立连接以及发送消息的 debug 日志信息。