修改 EMQX 日志等级
任务目标
如何修改 EMQX 集群日志等级。
配置 EMQX 集群
下面是 EMQX Custom Resource 的相关配置,你可以根据希望部署的 EMQX 的版本来选择对应的 APIVersion,具体的兼容性关系,请参考 EMQX Operator 兼容性:
apps.emqx.io/v2beta1 EMQX
支持通过 .spec.config.data
来配置 EMQX 集群日志等级,EMQX 配置可以参考文档:配置手册。
这个字段只允许在创建 EMQX 集群的时候配置,不支持更新。如果在创建 EMQX 之后需要修改集群日志等级,请通过 EMQX Dashboard 进行修改。
将下面的内容保存成 YAML 文件,并通过
kubectl apply
命令部署它yamlapiVersion: apps.emqx.io/v2beta1 kind: EMQX metadata: name: emqx spec: image: emqx5.0 config: data: | log.console.level = debug dashboardServiceTemplate: spec: type: LoadBalancer listenersServiceTemplate: spec: type: LoadBalancer
apiVersion: apps.emqx.io/v2beta1 kind: EMQX metadata: name: emqx spec: image: emqx5.0 config: data: | log.console.level = debug dashboardServiceTemplate: spec: type: LoadBalancer listenersServiceTemplate: spec: type: LoadBalancer
.spec.config.data
字段配置 EMQX 集群日志等级为debug
。等待 EMQX 集群就绪,可以通过
kubectl get
命令查看 EMQX 集群的状态,请确保STATUS
为Running
,这个可能需要一些时间bash$ kubectl get emqx NAME IMAGE STATUS AGE emqx emqx:5.1 Running 10m
$ kubectl get emqx NAME IMAGE STATUS AGE emqx emqx:5.1 Running 10m
获取 EMQX 集群的 Dashboard External IP,访问 EMQX 控制台
bash$ kubectl get svc emqx-dashboard -o json | jq '.status.loadBalancer.ingress[0].ip' 192.168.1.200
$ kubectl get svc emqx-dashboard -o json | jq '.status.loadBalancer.ingress[0].ip' 192.168.1.200
通过浏览器访问
http://192.168.1.200:18083
,使用默认的用户名和密码admin/public
登录 EMQX 控制台。
验证日志等级
MQTT X CLI 是一款开源的 MQTT 5.0 命令行客户端工具,旨在帮助开发者在不需要使用图形化界面的基础上,也能更快的开发和调试 MQTT 服务与应用。
获取 EMQX 集群的 External IP
bashexternal_ip=$(kubectl get svc emqx-listeners -o json | jq '.status.loadBalancer.ingress[0].ip')
external_ip=$(kubectl get svc emqx-listeners -o json | jq '.status.loadBalancer.ingress[0].ip')
使用 MQTT X CLI 连接 EMQX 集群
bash$ mqttx conn -h ${external_ip} -p 1883 [4/17/2023] [5:17:31 PM] › … Connecting... [4/17/2023] [5:17:31 PM] › ✔ Connected
$ mqttx conn -h ${external_ip} -p 1883 [4/17/2023] [5:17:31 PM] › … Connecting... [4/17/2023] [5:17:31 PM] › ✔ Connected
使用命令行查看 EMQX 集群日志信息
bash$ kubectl logs emqx-core-0 -c emqx
$ kubectl logs emqx-core-0 -c emqx
可以获取到类似如下的打印,这意味着 EMQX 收到了一个来自客户端的 CONNECT 报文,并向客户端回复了 CONNACK 报文:
bash2023-04-17T09:11:35.993031+00:00 [debug] msg: mqtt_packet_received, mfa: emqx_channel:handle_in/2, line: 360, peername: 218.190.230.144:59457, clientid: mqttx_322680d9, packet: CONNECT(Q0, R0, D0, ClientId=mqttx_322680d9, ProtoName=MQTT, ProtoVsn=5, CleanStart=true, KeepAlive=30, Username=undefined, Password=), tag: MQTT 2023-04-17T09:11:35.997066+00:00 [debug] msg: mqtt_packet_sent, mfa: emqx_connection:serialize_and_inc_stats_fun/1, line: 872, peername: 218.190.230.144:59457, clientid: mqttx_322680d9, packet: CONNACK(Q0, R0, D0, AckFlags=0, ReasonCode=0), tag: MQTT
2023-04-17T09:11:35.993031+00:00 [debug] msg: mqtt_packet_received, mfa: emqx_channel:handle_in/2, line: 360, peername: 218.190.230.144:59457, clientid: mqttx_322680d9, packet: CONNECT(Q0, R0, D0, ClientId=mqttx_322680d9, ProtoName=MQTT, ProtoVsn=5, CleanStart=true, KeepAlive=30, Username=undefined, Password=), tag: MQTT 2023-04-17T09:11:35.997066+00:00 [debug] msg: mqtt_packet_sent, mfa: emqx_connection:serialize_and_inc_stats_fun/1, line: 872, peername: 218.190.230.144:59457, clientid: mqttx_322680d9, packet: CONNACK(Q0, R0, D0, AckFlags=0, ReasonCode=0), tag: MQTT