【最佳实践】主机场景下如何使用ilogtail采集超大规模文件

简介: 目标读者数字化系统开发运维(DevOps)工程师、稳定性工程师(SRE)、可观测平台运维人员等。使用场景客户的某些场景下,业务拆分的比较细,每个业务会定时输出一个日志文件(比如每小时输出一个文件),那么在一台机器上,可能会产生大量的日志文件。由于某些原因,用户不想在业务服务器上安装采集端,因此采用比...

目标读者

数字化系统开发运维(DevOps)工程师、稳定性工程师(SRE)、可观测平台运维人员等。

使用场景

客户的某些场景下,业务拆分的比较细,每个业务会定时输出一个日志文件(比如每小时输出一个文件),那么在一台机器上,可能会产生大量的日志文件。由于某些原因,用户不想在业务服务器上安装采集端,因此采用比如Rsync的方式把日志文件同步到一台日志服务器上,那么这台日志服务器上的文件数量会非常大。Logtail由于采用的是注册事件监听以及定期轮询机制进行文件发现,对于采集文件/文件夹的数量有一定的限制,参考文档

相关概念

Logtail

Logtail是日志服务提供的日志采集Agent,用于采集阿里云ECS、自建IDC、其他云厂商等服务器上的日志。本文介绍Logtail的功能、优势、使用限制及配置流程等信息。

方案架构

单个Logtail实例的对于采集文件/文件夹的数量有一定的限制,参考文档, 内存2G的情况下

  • 最大监控目录总数:10W(目录不包含Logtail采集配置中指定的目录黑名单)。

  • 最大监控目录和文件总数:100W(目录不包含Logtail采集配置中指定的目录黑名单,文件包含未被Logtail采集配置匹配的文件)。

  • 单个采集配置监控目录和文件总数:10W(目录不包含Logtail采集配置中指定的目录黑名单,文件包含未被Logtail采集配置匹配的文件)。

  • 单个目录中被监控的子目录和文件总数:10W(目录包含Logtail采集配置中指定的目录黑名单,文件包含未被Logtail采集配置匹配的文件)。

因此考虑使用多实例的方式,来进行能力拓展,具体架构如下:image.png

  • 将要采集的文件划分在不同的文件夹下

  • 在一台服务器上,启动多个logtail实例

  • 通过自定义机器组标识的方式,区分多个实例

  • 针对不同的实例,配置不同的采集配置,分别采集不同的文件夹(不通采集配置之间要采集的文件路径不要有重叠)

方案实施

下面我们模拟一个场景:

  • 一台机器上共有40w个文件需要采集

前提条件

  • 机器拥有足够的资源配置

    • 内存2G可以支持10w个文件采集,40w个文件就需要启动4个Logtail实例,一共需要8G内存(业务进程所需的资源不包含在内)

    • 参考文档,除去文件数量的限制,CPU和内存还需要根据采集速率进行一定的预估,比如每个实例的采集速率都达到了40MB/s,那么4个logtail实例就一共需要16G内存+16核CPU

    • 机器的open files的设置要足够大,查看命令是: ulimit -a

  • 开通阿里云日志服务

操作步骤

1. 在日志服务器上划分好文件夹,满足logtail采集限制

由于Logtail的采集配置可以通过文件路径来划定采集单个采集配置的采集范围,因此,在日志文件生成的时候,需要有一定的规划。本案例中,40w个文件,以最简单的方式,划分了4个文件夹。

/root/test_log/
├── dir1
│   ├── 1.log
│   ├── ...
│   └── 100000.log
├── dir2
│   ├── 100001.log
│   ├── ...
│   └── 200000.log
├── dir3
│   ├── 200001.log
│   ├── ...
│   └── 300000.log
└── dir4
    ├── 300001.log
│   ├── ...
    └── 400000.log

2. 启动多个logtail实例

ilogtail正常安装部署命令分为三部分(下面的安装命令以中国香港地域为例,用户操作的时候,需要替换成自己的地域)

// 1. 下载安装脚本
wget http://logtail-release-cn-hongkong.oss-cn-hongkong-internal.aliyuncs.com/linux64/logtail.sh -O logtail.sh
// 2. 给脚本授权
chmod 755 logtail.sh
// 3. 执行安装命令
./logtail.sh install cn-hongkong

为了启动多个logtail实例,其中第三步的安装命令需要添加如下参数

./logtail.sh install cn-hongkong -s ${自定义后缀名}

为了启动4个Logtail实例,我们将自定义后缀名分别指定为1,2,3,4

./logtail.sh install cn-hongkong -s 1
./logtail.sh install cn-hongkong -s 2
./logtail.sh install cn-hongkong -s 3
./logtail.sh install cn-hongkong -s 4

然后查看进程我们会发现有8个进程启动起来(每个Logtail实例包含一个守护进程和一个主进程)

# ps -ef | grep logtail
root     1935015       1  0 Feb13 ?        00:00:00 /usr/local/ilogtail1/ilogtail
root     1935017 1935015  0 Feb13 ?        00:16:23 /usr/local/ilogtail1/ilogtail
root     1935823       1  0 Feb13 ?        00:00:00 /usr/local/ilogtail2/ilogtail
root     1935825 1935823  0 Feb13 ?        00:16:15 /usr/local/ilogtail2/ilogtail
root     1936165       1  0 Feb13 ?        00:00:00 /usr/local/ilogtail3/ilogtail
root     1936166 1936165  0 Feb13 ?        00:16:14 /usr/local/ilogtail3/ilogtail
root     2007431       1  0 20:32 ?        00:00:00 /usr/local/ilogtail4/ilogtail
root     2007432 2007431  1 20:32 ?        00:00:03 /usr/local/ilogtail4/ilogtail

每个实例的运行目录分别在/usr/local/ilogtail1,/usr/local/ilogtail2,/usr/local/ilogtail3,/usr/local/ilogtail4目录下

Logtail的相关的目录也分别对应了4个实例:

控制命令目录(对应原来的/etc/init.d/ilogtaild):

# ll /etc/init.d/
-rwxr-xr-x  1 root root  4564 Feb 13 20:32 ilogtaild1
-rwxr-xr-x  1 root root  4564 Feb 13 20:32 ilogtaild2
-rwxr-xr-x  1 root root  4564 Feb 13 20:32 ilogtaild3
-rwxr-xr-x  1 root root  4564 Feb 14 20:32 ilogtaild4

标识文件目录(对应原来的/etc/logtail):

# ll /etc/
drwxr-xr-x   8 root root     4096 Feb 13 20:32 ilogtail1
drwxr-xr-x   8 root root     4096 Feb 13 20:32 ilogtail2
drwxr-xr-x   8 root root     4096 Feb 13 20:32 ilogtail3
drwxr-xr-x   8 root root     4096 Feb 14 20:32 ilogtail4

记录文件目录(对应原来的/tmp/logtail_check_point):

# ll /tmp/
-rw-r--r-- 1 root root 1494166 Feb 14 20:47 logtail_check_point1
-rw-r--r-- 1 root root 1484264 Feb 14 20:48 logtail_check_point2
-rw-r--r-- 1 root root 1484264 Feb 14 20:48 logtail_check_point3
-rw-r--r-- 1 root root 1484264 Feb 14 20:47 logtail_check_point4

到这里,4个Logtail实例就启动好了

3. 对每个logtail实例配置自定义机器组标识以及创建机器组

正常情况下,主机场景,Logtail通常使用IP型机器组来进行统一的配置管理。但是现在的场景下,IP型机器组显然无法使用,因此需要使用标识型机器组

为Logtail1创建自定义标识:taiye_1

# touch /etc/ilogtail1/user_defined_id
# echo "taiye_1" >> /etc/ilogtail1/user_defined_id
# cat /etc/ilogtail1/user_defined_id
taiye_1

为Logtail2,Logtail3,Logtail4也分别创建自定义标识taiye_2, taiye_3, taiye_4创建好之后,我们在SLS的页面上,分别创建4个机器组image.png

创建好之后,分别查看每个机器组的状态,可以看到机器组的心跳已经正常了image.png

4. 对每个实例配置采集配置

image.png如图所示,采集配置test_log1,只使用taiye_1的机器组(里面只包含了Logtail1的实例),采集的日志路径里,也只配置了/root/test_log/dir1的路径。以此类比,创建采集配置test_log2,test_log3,test_log4。

5. 验证配置效果

通过查看每个Logtail实例下的user_log_config.json文件,可以确认采集配置被正确下发了。image.png

通过日志查询,可以看到每个实例下的日志都被采集上来了。image.png

注意事项

  1. 采用本方案启动多个Logtail实例,不能使用IP型机器组,否则相同的采集配置会下发到每个实例中,浪费资源。

  2. 如果该主机之前已经有过Logtail实例,且为IP型机器组,那么需要把原来的IP型机器组删除,确保没有之前的采集配置遗留。

参考

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
消息中间件 存储 数据采集
iLogtail社区版使用入门 - 主机环境采集业务日志到SLS
本文将会详细介绍如何使用社区版iLogtail,并结合SLS云服务快速构建出一套高可用、高性能的日志采集分析系统
846 0
|
3月前
|
存储 Prometheus 监控
性能监控之国产时序库TDengine TDinsight dashboard 指标解析
【2月更文挑战第1天】性能监控之国产时序库TDengine TDinsight dashboard 指标解析
270 1
性能监控之国产时序库TDengine TDinsight dashboard 指标解析
|
4月前
|
JSON 监控 API
【实践】开源IDS网络流量分析与监控系统Zeek对接GrayLog
【实践】开源IDS网络流量分析与监控系统Zeek对接GrayLog
202 0
|
12月前
|
Prometheus 监控 Kubernetes
《云原生网络数据面可观测性最佳实践》——三、容器网络常见观测工具及特点——2.Net Exporter技术原理
《云原生网络数据面可观测性最佳实践》——三、容器网络常见观测工具及特点——2.Net Exporter技术原理
|
12月前
|
监控 网络协议 Cloud Native
《云原生网络数据面可观测性最佳实践》——三、容器网络常见观测工具及特点——1.常见网络排查工具
《云原生网络数据面可观测性最佳实践》——三、容器网络常见观测工具及特点——1.常见网络排查工具
|
12月前
|
域名解析 Kubernetes 网络协议
《云原生网络数据面可观测性最佳实践》——四、ACK Net-Exporter 快速上手——3.典型问题排查指南
《云原生网络数据面可观测性最佳实践》——四、ACK Net-Exporter 快速上手——3.典型问题排查指南
|
数据采集 监控 前端开发
LS支持持续性能数据采集与监控
小王所在的公司最近在做降本增效,要求上半年每个人的微服务接口性能提升至少30%。小王思虑很久也没想到优化点,于是开始向ChatGPT寻求帮助。
179 0
LS支持持续性能数据采集与监控
|
存储 Prometheus Kubernetes
对比开源丨Prometheus 服务多场景存储压测全解析
作为国内领先的云服务提供商,阿里云提供了优秀的可观测全套解决方案,阿里云 Prometheus 服务正是其中重要一环,相比于开源版本 Prometheus,阿里云的 Prometheus 服务无论是易用性、扩展性、性能均有大幅度提升。
对比开源丨Prometheus 服务多场景存储压测全解析
|
运维 大数据 数据库
《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》下载
本书将从介绍Elasticsearch、全观测技术原理、行业应用到技术实践,全面系统地解读在大数据背景下,运维人员、开发人员等应用全观测技术的价值和实践上手指南。
453 0
《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》下载
|
存储 缓存 Prometheus
企业级解决方案-性能指标监控命令|学习笔记
快速学习企业级解决方案-性能指标监控命令
58 0
企业级解决方案-性能指标监控命令|学习笔记