iLogtail社区版使用入门 - 主机环境采集业务日志到SLS

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
文件存储 NAS,50GB 3个月
简介: 本文将会详细介绍如何使用社区版iLogtail,并结合SLS云服务快速构建出一套高可用、高性能的日志采集分析系统

iLogtail是阿里云日志服务(SLS)团队自研的可观测数据采集Agent,拥有的轻量级、高性能、自动化配置等诸多生产级别特性,可以署于物理机、虚拟机、Kubernetes等多种环境中来采集遥测数据。iLogtail在阿里云上服务了数万家客户主机和容器的可观测性采集工作,在阿里巴巴集团的核心产品线,如淘宝、天猫、支付宝、菜鸟、高德地图等也是默认的日志、监控、Trace等多种可观测数据的采集工具。目前iLogtail已有千万级的安装量,每天采集数十PB的可观测数据,广泛应用于线上监控、问题分析/定位、运营分析、安全分析等多种场景,在实战中验证了其强大的性能和稳定性。

在当今云原生的时代,我们坚信开源才是iLogtail最优的发展策略,也是释放其最大价值的方法。因此,我们决定将iLogtail开源,期望同众多开发者一起将iLogtail打造成世界一流的可观测数据采集器。

背景

日志作为可观测性建设中的重要一环,可以记录详细的访问请求以及错误信息,在业务分析、问题定位等方面往往会发挥很大的作用。一般开发场景下,当需要进行日志分析时,往往是直接在日志文件中进行grep搜索对应的关键字;但在大规模分布式生产环境下,此方法效率低下,常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集、管理、分析。目前市面上比较主流的开源方案是基于ELK构建一套日志采集分析系统。

该架构中,Filebeat作为日志源的采集Agent部署在业务集群上进行原始日志采集,并采集到的日志发送到消息队列Kafka集群。之后,由LogstashKafka消费数据,并经过过滤、处理后,将标准化后的日志写入Elasticsearch集群进行存储。最后,由Kibana呈现给用户查询。虽然该架构可以提供比较完整的日志采集、分析功能,但是整体涉及的组件非常多,大规模生产环境部署复杂度高,且大流量下ES可能不稳定,运维成本都会很高。

阿里云提供的SLS服务是一个纯定位在日志/时序类可观测数据分析场景的云上托管服务,相对于ELK在日志领域内做了很多定制化开发,在易用性、功能完备性、性能、成本等方便,都有不错表现。iLogtail作为SLS官方标配的可观测数据采集器,在日志采集性能K8s支持上都有不错的体验;iLogtail有明显的性能优势,可以将部分数据处理前置,有效降低存储成本。

目前社区版iLogtail也对SLS提供了很好的支持,本文将会详细介绍如何使用社区版iLogtail,并结合SLS云服务快速构建出一套高可用、高性能的日志采集分析系统。

备注:iLogtail社区版相对于iLogtail企业版,核心采集能力上基本是一致的,但是管控、可观测能力上会有所弱化,这些能力需要配合SLS服务端才能发挥出来。欢迎使用iLogtail企业版体验,两个版本差异详见链接

SLS简介

日志服务SLS是云原生观测与分析平台,为Log、Metric、Trace等数据提供大规模、低成本、实时的平台化服务。日志服务一站式提供数据采集、加工、查询与分析、可视化、告警、消费与投递等功能,全面提升您在研发、运维、运营、安全等场景的数字化能力。

通过SLS可以快速的搭建属于自己的可观测分析平台,可以快速享受到SLS提供的各种数据服务,包括不限于:查询与分析、可视化、告警等。

  • 查询分析
  • 支持精确查询、模糊查询、全文查询、字段查询。
  • 以SQL作为查询和分析框架,同时在框架中融入PromQL语法和机器学习函数。

  • 可视化
  • 基于SLS统一的查询分析引擎,以图表的形式将查询与分析结果呈现出来,清晰呈现全局态势。
  • 支持与第三方可视化工具对接。

  • 监控告警:提供一站式的告警监控、降噪、事务管理、通知分派的智能运维平台。

操作实战

以下介绍如何使用iLogtail社区版采集主机环境业务日志到SLS。

场景

采集/root/bin/input_data/access.log/root/bin/input_data/error.log,并将采集到的日志写入SLS中。

其中,access.log需要正则解析;error.log为单行文本打印。

如果之前已经使用iLogtail将日志采集到Kafka,在迁移阶段可以保持双写,等稳定后删除Kafka Flusher配置即可。

前提条件

安装iLogtail

  • 下载

$ wget https://ilogtail-community-edition.oss-cn-shanghai.aliyuncs.com/1.1.0/ilogtail-1.1.0.linux-amd64.tar.gz

tar -xzvf ilogtail-1.1.0.linux-amd64.tar.gz

$ cd ilogtail-1.1.0


$ ll

drwxrwxr-x 5 505 505      4096 7月  10 18:00 example_config

-rwxr-xr-x 1 505 505  84242040 7月  11 00:00 ilogtail

-rwxr-xr-x 1 505 505     16400 7月  11 00:00 libPluginAdapter.so

-rw-r--r-- 1 505 505 115963144 7月  11 00:00 libPluginBase.so

-rw-rw-r-- 1 505 505     11356 7月  11 00:00 LICENSE

-rw-rw-r-- 1 505 505      5810 7月  11 00:00 README-cn.md

-rw-rw-r-- 1 505 505      4834 7月  11 00:00 README.md

-rw-rw-r-- 1  505  505    118 7月  14 11:22 ilogtail_config.json

drwxr-xr-x 2 root root    4096 7月  12 09:55 user_yaml_config.d

  • 获取阿里云AK,并进行配置。

$ cat ilogtail_config.json

{

  "default_access_key_id": "xxxxxx",

  "default_access_key": "yyyyy"

}

  • 采集配置

user_yaml_config.d创建针对access_logerror_log分别创建两个采集配置,两个采集配置分别将日志采集到SLS不同logstoreKafka不同的Topic中。双写适用于从Kafka迁移到SLS的场景,如果迁移完成稳定后,可以删除flusher_kafka,只保留flusher_sls即可。

# 访问日志采集配置

$ cat user_yaml_config.d/access_log.yaml

enable: true

inputs:

 - Type: file_log

   LogPath: /root/bin/input_data/

   FilePattern: access.log

processors:

 - Type: processor_regex

   SourceKey: content

   Regex: ([\d\.]+) \S+ \S+ \[(\S+) \S+\] \"(\w+) ([^\\"]*)\" ([\d\.]+) (\d+) (\d+) (\d+|-) \"([^\\"]*)\" \"([^\\"]*)\"

   Keys:

     - ip

     - time

     - method

     - url

     - request_time

     - request_length

     - status

     - length

     - ref_url

     - browser

flushers:

 - Type: flusher_sls

   Endpoint: cn-hangzhou.log.aliyuncs.com

   ProjectName: test-ilogtail

   LogstoreName: access-log

 - Type: flusher_kafka

   Brokers:

     - localhost:9092

   Topic: access-log

# 错误日志采集配置

$ cat user_yaml_config.d/error_log.yaml

enable: true

inputs:

 - Type: file_log

   LogPath: /root/bin/input_data/

   FilePattern: error.log

flushers:

 - Type: flusher_sls

   Endpoint: cn-hangzhou.log.aliyuncs.com

   ProjectName: test-ilogtail

   LogstoreName: access-log

 - Type: flusher_kafka

   Brokers:

     - localhost:9092

   Topic: error-log

$ tree user_yaml_config.d/

user_yaml_config.d/

├── access_log.yaml

└── error_log.yaml

  • 启动

$ nohup ./ilogtail > stdout.log 2> stderr.log &

验证

  • 访问日志验证,查看logstore数据正常。

# 写入访问日志

$ echo '127.0.0.1 - - [10/Aug/2017:14:57:51 +0800] "POST /PutData?Category=YunOsAccountOpLog HTTP/1.1" 0.024 18204 200 37 "-" "aliyun-sdk-java"' >> /root/bin/input_data/access.log

  • 错误日志验证,查看logstore数据正常。

# 写入错误日志

$ echo -e '2022-07-12 10:00:00 ERROR This is a error!\n2022-07-12 10:00:00 ERROR This is a new error!' >> /root/bin/input_data/error.log

总结

以上,我们介绍了使用iLogtail社区版将日志采集到SLS的方法。如果想体验企业版iLogtail与SLS更深度的集成能力,欢迎使用iLogtail企业版,并配合SLS构建可观测平台。

关于iLogtail

iLogtail作为阿里云SLS提供的可观测数据采集器,可以运行在服务器、容器、K8s、嵌入式等多种环境,支持采集数百种可观测数据(日志、监控、Trace、事件等),已经有千万级的安装量。目前,iLogtail已正式开源,欢迎使用及参与共建。

GitHub:https://github.com/alibaba/ilogtail

社区版文档:https://ilogtail.gitbook.io/ilogtail-docs/about/readme

企业版官网:https://help.aliyun.com/document_detail/65018.html

钉钉群:iLogtail社区

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
22天前
|
监控 测试技术 开发者
一行代码改进:Logtail的多行日志采集性能提升7倍的奥秘
一个有趣的现象引起了作者的注意:当启用行首正则表达式处理多行日志时,采集性能出现下降。究竟是什么因素导致了这种现象?本文将探索Logtail多行日志采集性能提升的秘密。
|
2月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
57 1
|
3月前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
3月前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
187 9
|
4月前
|
存储 Kubernetes Java
在k8S中,容器内日志是怎么采集的?
在k8S中,容器内日志是怎么采集的?
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
359 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
15天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
335 3
|
25天前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
2月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1712 14

相关产品

  • 日志服务