树莓派上玩转iLogtail:构建/采集/分析NAS日志
2022年6月,阿里云iLogtail(也称Logtail)代码完整开源,正式发布了完整功能的iLogtail社区版。iLogtail作为阿里云SLS官方标配的采集器,多年以来一直稳定服务阿里集团、蚂蚁集团以及众多公有云上的企业客户,目前已经有千万级的安装量,每天采集数十PB的可观测数据,广泛应用于线上监控、问题分析/定位、运营分析、安全分析等多种场景。
iLogtail在采集性能和稳定性上有独特的优势,既然已经开源,那今天我们从另外一个角度(arm阵营)+ 低功耗设备(树莓派4b)来看看iLogtail在平台开放性上的表现(包括构建、安装、使用等)。
为能够直观体验,我们演示如下三个步骤:
- 步骤一:如何编译ARM版本(可跳过)
- 步骤二:在树莓派上安装iLogtail(为了简化使用阿里云版)
- 步骤三:采集树莓派上采集NAS访问日志并创建大盘
关于树莓派(Raspherry Pi)
Raspberry Pi树莓派,(英语:Raspberry Pi,简写为RPi,别名为RasPi / RPI) 是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于Linux(Debian)。树莓派问世以来,由于低廉的价格(<35美元)+ 五脏俱全功能受众多计算机发烧友和创客的追捧
更多内容可以参见官网:
步骤一:iLogtail编译
树莓派操作系统是Debian,如果数据采集服务端是阿里云SLS+树莓派版本是4以上64位系统,那么可以直接在SLS官网上安装文档选择 “Debian 11.2 ARM版”已编译好的版本进行安装。当然如果还是想折腾一下社区版iLogtail,欢迎继续向下看哈。
具体步骤:
- 打开iLogtail官网文档编译章节,在Pi中下载源代码编译(较为复杂,建议直接到第二步)
https://ilogtail.gitbook.io/ilogtail-docs/installation/sources/build
- 由于iLogtail初始状态依赖的包比较多,我们直接选择通过容器镜像来编译,进入直接使用镜像编译环节
https://ilogtail.gitbook.io/ilogtail-docs/developer-guide/development-environment#vsykl
- 在镜像包中默认使用的是x86镜像地址“amd64”,我们把他修改为“arm64”(注意 Pi 3及以下版本都是32位系统,因此本文档只适用于Pi 4以上的版本)
docker run --name ilogtail-build -d \ -v `pwd`:/src -w /src \ sls-registry.cn-beijing.cr.aliyuncs.com/sls-microservices/ilogtail-build-linux-arm64:latest \ bash -c "sleep infinity"
- 启动容器,ssh进入容器镜像,开始编译
docker exec -it ilogtail-build bash
# cd src foldermake
步骤二:部署+安装
iLogtail采集后的输出支持多种插件体系,例如支持到Kafka、ES等系统。在这里为了能够演示方便,我们直接使用输出到阿里云SLS作为例子。树莓派上采集数据有好几种方法,今天我们主要演示第一种:
方法 | 优缺点 |
---|---|
通过Agent(例如iLogtail) | 使用方便,可以随时采集日志或Metric等数据,带有异步发送功能。因是单独Agent,有一定资源消耗。 |
通过IoT套件(例如阿里云IoT套件) | 轻量级对接,但需要对接协议。 |
通过SDK(例如Python) | 简单直接,但需要写程序发送数据,容易与业务逻辑紧耦合。 |
在这里,我们选择第一种,通过iLogtail进行采集和输出。
具体步骤:
- 打开SLS控制台,创建Project,存储数据,例如我们这里使用pi-demo(注意Project名全局唯一,可以起一个个性化名字)
- 之后我们在Project下创建一个存储日志的Logstore,例如“nasdemo”,点击数据接入向导。我们采集的日志会以文本的方式输出,因此我们使用最简单的“正则-文本日志”作为接入方案。接下来在“创建机器组”环节选择自建机器。
- 接下来我们需要进入关键的一个步骤,在Pi上安装Logtail,并且能够让服务端建立连接。(为了演示方便,我们选择通过公网接入的方式进行):
- 打开 离线安装 页面,选择下载安装包(ARM)
- 由于我们project创建在杭州,并且是公网连接,因此需要把其中的变量{your_region_name},换成cn-hangzhou。下载地址为:
- 通过ssh或图形方式登录到Pi,执行下载命令
pi@raspberrypi:~ $ wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/linux64/aarch64/logtail-linux64.tar.gz--2022-09-12 13:30:22-- http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/linux64/aarch64/logtail-linux64.tar.gz正在解析主机 logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com (logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com)... 47.110.177.76正在连接 logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com (logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com)|47.110.177.76|:80... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度:23850597 (23M) [application/x-gzip]正在保存至: “logtail-linux64.tar.gz”
logtail-linux64.tar.gz 100%[=======================================================================>] 22.75M 8.75MB/s 用时 2.6s
2022-09-12 13:30:25 (8.75 MB/s) - 已保存 “logtail-linux64.tar.gz” [23850597/23850597])
- 执行安装脚本。(注意如果默认使用pi用户访问系统目录,需要sudo权限)
pi@raspberrypi:~ $ chmod +x logtail.sh; sudo ./logtail.sh install-local cn-hangzhou-internetlogtail.sh version: 1.5.1
OS Arch: aarch64OS Distribution: Debianupdate-rc.d del ilogtaild successuninstall logtail successRUNUSER:rootlogtail-linux64.tar.gz download successinstall logtail files successagent stub for telegraf has been installedsystemd 247 (247.3-7+deb11u1)+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=unifieduse systemd for startupservice_file_path:/etc/systemd/system/ilogtaild.serviceSynchronizing state of ilogtaild.service with SysV service script with /lib/systemd/systemd-sysv-install.Executing: /lib/systemd/systemd-sysv-install enable ilogtaildCreated symlink /etc/systemd/system/default.target.wants/ilogtaild.service → /etc/systemd/system/ilogtaild.service.systemd startup donerunuser -l root -c /etc/init.d/ilogtaild startilogtail is runninginstall logtail successstart logtail success
- 我们可以通过命令确认logtail已经在后台运行(共2个,其中一个进程为守护进程)。
pi@raspberrypi:~ $ ps -A | grep logtail 3340 ? 00:00:00 ilogtail 3341 ? 00:00:00 ilogtail
- 接下来我们需要建立logtail与服务端连接,这样我们就可以在SLS控制台通过远程+批量方式来进行logtail任务的下发与设置。我们在Pi主机上执行touch操作(告诉服务端当前机器对于该uid是可以管理的),放置当前用户的aliuid(可以在创建机器组页面找到)。
- 点击确认安装完毕,进入机器组设置环节。在这里我们给Pi设置一个机器组的名字(例如 pi-machines),以及属于该机器组的标识(例如IP列表,或一个自定义名字)。为了管理方便,我们为该机器组设置一个叫 pi-group 的标识。并且登录pi在/etc/ilogtail/user_defined_id文件中加入该标识。
pi@raspberrypi:~ $ vim /etc/ilogtail/user_defined_idpi@raspberrypi:~ $ sudo vim /etc/ilogtail/user_defined_idpi@raspberrypi:~ $ cat /etc/ilogtail/user_defined_idpi-group
- 点击下一步,我们看到刚创建的机器组已经应用了。接下来我们可以创建采集的配置,或者直接跳转到刚才创建的机器组(pi-machines)查看,从机器组状态上看到,PI上的logtail已经和服务端建立了连接(心跳状态为OK),我们接下来可以通过SLS控制台远程管理logtail啦。
步骤三:采集+分析树莓派上日志
树莓派可以认为就是一台小型计算机,上面可以有各种玩法,详情可以参见如下两个链接:
以下我们用家用NAS例子,参见教女朋友一样教你用树莓派和移动硬盘搭NAS,这里就不赘述。NAS的log默认存储在/var/log/samba 目录下:
pi@raspberrypi:~ $ ls -lrt /var/log/samba总用量 20-rw-r—r— 1 root root 0 9月 12 08:54 log.drwx------ 4 root root 4096 9月 12 08:54 cores-rw-r—r— 1 root root 0 9月 12 09:58 log.192.168.3.13-rw-r—r— 1 root root 0 9月 12 09:58 log.192.168.3.24-rw-r—r— 1 root root 0 9月 12 10:19 log.macbookpro-1d8b-rw-r—r— 1 root root 2442 9月 12 10:40 log.%m-rw-r—r— 1 root root 3984 9月 12 12:12 log.smbd-rw-r—r— 1 root root 5512 9月 12 12:12 log.nmbd
接下来我们在SLS控制台配置采集任务,把日志采集到服务端。
具体步骤:
- 回到刚才的采集配置。
- 设定日志采集目录/var/log/samba下所有以log开头的文件,设置模式为极简模式
- 我们把采集配置设置完成后,点击应用到机器组。
- 点击到最后一步,打开控制台,我们就能看到所有NAS访问的日志都被采集上来拉。
- 我们可以在控制台查询、分析日志、通过SQL、数据加工等能力去构建各种分析大盘,告警等。
- NAS服务器流量情况
- 有多少客户端连接
- 有哪些客户做了访问,最热门的是哪些文件
- 客户访问的明细是什么,做了什么高危操作,是否需要提醒管理员告警等
写在最后
经过一周的连续使用测试,通过CloudLens for SLS我们能看到iLogtail运行稳定,并且对系统的资源消耗极小:1)内存始终在20MB以内;2)CPU没有超过<0.5%。可以较好胜任在Pi上的数据采集任务。
除了NAS之外,我们还可以用iLogtail采集树莓派上的服务器日志、IoT传感器数据、应用报文、数模传感器内容等,有非常多把玩的空间。当然,iLogtail在各行各业仍然有许多应用场景有待发现,仍有许多功能有待完善,
非常期待您的一起参与 👉 贡献指南
https://github.com/alibaba/ilogtail/blob/main/docs/cn/contributing/CONTRIBUTING.md