目标读者
IoT系统开发运维工程师、MQTT协议应用工程师
使用场景
MQTT是一个为IoT设计的消息协议,是一种轻量级的基于Pub/Sub模式的通信协议,支持物联网设备与服务器之间的双向通信。广泛应用于自动驾驶、智能家居、制造业、电信等领域。
本文主要介绍如何使用日志服务Logtail作为订阅方来采集基于MQTT协议的消息。并将消息内容采集到日志服务的Logstore。
相关概念
Logtail
Logtail是日志服务提供的日志采集Agent,用于采集阿里云ECS、自建IDC、其他云厂商等服务器上的日志。本文介绍Logtail的功能、优势、使用限制及配置流程等信息。
MQTT
全称:Message Queuing Telemetry Transport,是一种轻量级高效的传输协议,主要应用于物联网设备的数据传输等。具有双向通信、高度Scale、支持Qos、支持不稳定网络等特点。
传输方式主要基于Pub/Sub架构。在Pub和Sub中间需要有支持MQTT的Broker
方案架构
本方案是Logtail作为MQTT协议的订阅方,连接到MQTT Broker进行消息的订阅,并将订阅到的消息采集到日志服务的Logstore中,从而进行后续的消息查询分析、可视化等。
方案优势
将Logtail作为MQTT的订阅方,只需要进行简单的配置,即可消费设备发来的消息,数据采集到日志服务Logstore后,可以借助日志服务一站式查询分析、数据加工、可视化、告警等。相对于自研系统或者其他开源系统具有便捷、高性能、一站式的优势。
方案实施
前提条件
- 已部署好MQTT Broker
- 有一台可以连通MQTT Broker的机器上已安装Logtail
- 开通阿里云日志服务
操作步骤
步骤一:创建Project、Logstore
- 登录日志服务控制台,在Project列表页面,选择已有的Project或者创建新的Project。
- 在日志库标签页,选择已有Logstore或者单击+图标创建新的Logstore。
步骤二:创建/选择机器组
- 在数据接入-> Logtail配置,点击+,接入数据
- 快速数据接入页面,选择自定义数据插件。
- 创建/选择机器组。
- 如果您已有可用的机器组,请单击使用现有机器组。
- 如果您还没有可用的机器组,请执行以下操作(以ECS为例)。在ECS机器页签中,通过手动选择实例方式选择目标ECS实例,单击立即执行。安装完成后,单击确认安装完毕。
- 在创建机器组页面,输入名称,单击下一步。日志服务支持创建IP地址机器组和用户自定义标识机器组
步骤三:创建MQTT采集配置
本文假定已有MQTT Broker配置的服务器地址、用户名、密码,如果测试需要可以在阿里云微消息队列MQTT版进行创建Broker,具体可以参考链接。
配置如下:其中参数根据Broker环境进行配置
{
"inputs": [
{
"detail": {
"Topics": [
"topic name 1",
"topic name 2",
],
"Qos": 1,
"Server": "tcp://mqtt-cn-xxxxxx-internal-vpc.mqtt.aliyuncs.com:1883",
"Username": "fill in username",
"ClientID": "fill in clientId",
"Password": "fill in password"
},
"type": "service_mqtt"
}
]
}
点击下一步,开始查询日志。
步骤四:查询采集后的日志
- 登录日志服务控制台。
- 选择目标Project和Logstore,点开logstore菜单,选择放大镜按钮,查询分析,即可查询采集到的日志。
如果消息格式为JSON格式,可以将Logstore索引中的content设置为JSON类型。
参考
- MQTT:https://mqtt.org/
- 使用Logtail自定义插件采集数据:https://help.aliyun.com/document_detail/65064.html
- SLS(日志服务)云原生观测分析平台:https://www.aliyun.com/product/sls
- 欢迎扫群加入阿里云-日志服务(SLS)技术交流或关注公众号, 获得第一手资料与支持: