日志服务的数据采集支持多种采集方式与数据类型。本文将介绍如何选择不同来源数据的采集方式。
数据采集方式
数据采集作为使用日志服务功能的第一步,目的是将目标数据传输并保存到日志服务中,以便后续使用日志服务的其他功能。例如对数据进行查询与分析,对数据格式与内容进行数据加工处理,将数据消费或投递到第三方系统等。
日志服务提供的采集方式仅支持采集增量数据,若需要历史数据请使用数据导入。
概念介绍:
LoongCollector(原Logtail):Logtail是日志服务提供的日志采集Agent,用于采集阿里云ECS、自建IDC或其他云厂商等服务器上的日志。Logtail基于日志文件采集,无需修改应用程序代码,且采集日志不会影响应用程序运行。LoongCollector是日志服务推出的新一代采集Agent,是Logtail的升级版,兼容Logtail的同时性能更佳。
SDK采集:日志服务支持直接使用SDK/API等方式在代码中进行定制化开发,相比其他方式灵活性更高。
Kubernetes环境下的采集方案
当企业应用部署在Kubernetes环境下,使用阿里云日志服务进行采集时请参考如下内容:
Kubernetes集群容器日志采集:对于应用日志采集有两种方式,支持标准输出与文本日志类型,采集前请阅读Kubernetes集群容器日志采集须知。
通过控制台采集集群容器日志(标准输出/文件):通过控制台手动可视化配置日志采集规则,适合少量集群及测试环境的使用场景。
通过Kubernetes CRD采集集群容器日志(标准输出/文件):使用CRD自定义资源配置日志采集规则,方便模板化,生产集群优先选择,支持CI/CD自动化的场景。
采集Kubernetes监控数据(Metric):本文介绍如何在Kubernetes上部署Prometheus,将监控数据采集到日志服务MetricStore中,并将日志服务MetricStore对接到Grafana实现监控数据可视化展示。
Trace接入方案:根据应用代码语言类型选择接入Trace方式,支持Java,Golang,Python,Node.js,C#,Rust,Ruby,Android,iOS,C++,Flutter,PHP等多种语言。
采集Kubernetes事件:日志服务支持使用eventer将Kubernetes中的事件采集到日志服务。
主机/服务器中数据采集方案
当企业应用部署在阿里云ECS,自建服务器或其他云服务器等主机环境下,使用阿里云日志服务进行采集时请参考如下内容:
主机文本日志采集:对于应用日志支持多种解析格式,如Nginx,JSON,Apache,IIS,分隔符等,需要重点注意不同服务器与日志服务Project的关系,会影响日志服务采集器的安装方式。
采集主机监控数据(Metric):支持采集主机CPU、内存、负载、磁盘、网络等监控数据。
Trace接入方案:根据应用代码语言类型选择接入Trace方式,支持Java,Golang,Python,Node.js,C#,Rust,Ruby,Android,iOS,C++,Flutter,PHP等多种语言。
采集Windows事件日志:Windows事件日志采用发布订阅的模式,应用程序或者内核将事件日志发布到指定的通道,日志服务调用Windows API订阅这些通道,从而持续获取相关事件日志。
Docker数据采集方案
采集Docker容器日志(标准输出/文件):采集 Docker 容器的标准输出(stdout/stderr)和容器内文本日志文件。
Trace接入方案:根据应用代码语言类型选择接入Trace方式,支持Java,Golang,Python,Node.js,C#,Rust,Ruby,Android,iOS,C++,Flutter,PHP等多种语言。
采集Docker事件:采集Docker事件信息,其中包含容器、镜像、插件、网络、存储等交互事件。
阿里云云产品数据采集方案
云产品日志采集:日志服务支持采集弹性计算、存储服务、安全、数据库等多种阿里云云产品的日志数据,包括云产品的操作信息、运行状况、业务动态等信息。
中间件数据采集方案
采集SQL查询结果:支持采集SQL Server,MySQL,PostgreSQL的查询结果。
使用WebTracking采集前端日志:WebTracking是一种通过向前端页面添加特定代码段,来跟踪用户行为的技术。能够在浏览器、小程序和移动端中采集用户行为数据。
采集HTTP数据:定期请求指定的URL,将请求返回的Body内容作为数据源上传到日志服务。
采集Unity3D日志:支持使用Web Tracking采集Unity3D日志。
与现有三方生态集成
集成其他开源Agent与协议采集日志:支持如下方式。
使用Loggie的Sink配置,将采集到的日志上传到日志服务。
使用Log4j2 Appender将日志采集到日志服务。
使用Syslog-ng采集日志并通过Syslog协议上传。
使用Kafka Producer SDK、Beats系列软件、Collectd、Fluentd、Logstash、Telegraf、Vector等采集工具采集日志,并通过Kafka协议上传到日志服务。
接入Trace数据:日志服务支持OpenTelemetry Trace数据的原生接入,还支持通过其他Trace系统接入Trace数据。
接入Telegraf监控:日志服务支持将Telegraf采集的监控数据(MySQL监控数据、Redis监控数据、Elasticsearch监控数据、Clickhouse监控数据、Kafka监控数据、Tomcat监控数据等)通过InfluxDB协议写入LoongCollector(原Logtail),再将监控数据上传到日志服务。
采集Open-Falcon监控数据:配置Transfer将Open-Falcon数据上传至日志服务,Open-Falcon版本需包含Influxdb support功能。
通过Remote Write协议接入Prometheus监控数据:日志服务支持Prometheus的Remote Write协议,只需要在Prometheus中启动Remote Write功能即可采集数据到日志服务。
SDK采集
SDK采集:日志服务支持Java、Python、PHP、Node.js、C、Go、iOS、Android、C++等语言的SDK采集。不仅可以写入日志数据,也可以通过SDK写入时序数据。
数据导入
支持将已有的其他数据导入到日志服务进行分析,包括其他应用数据与历史文件数据。
日志服务仅采集增量日志。采集历史日志需要导入历史日志文件。
数据脱敏/传输加密能力
数据传输加密:日志服务支持通过密钥管理服务KMS对数据进行加密存储,同时支持基于SSL/TLS的HTTPS加密传输。
数据处理:对日志数据进行格式化处理,根据数据传输流程阶段有以下三种数据处理方式。
数据采集时处理(处理插件):需要基于日志服务自研采集器LoongCollector(原Logtail),数据在从本地服务器往日志服务传输前脱敏,消耗本地服务器资源处理解析。
数据写入时处理(写入处理器):在数据传输至日志服务但进行存储前处理,可进行脱敏规则的配置,消耗日志服务端资源,处理完成后进行数据存储。
数据写入后处理(数据加工):对存储于日志服务的数据进行处理,可进行脱敏规则的配置,在往其他Logstore或第三方系统输出前脱敏。
采集相关文档
跨地域采集日志:应用部署在地域A,日志服务Project部署在地域B。该方案解决如何将地域A的ECS实例中的日志数据发送到地域B的Project中。
跨阿里云账号采集日志:应用A使用账号A的日志服务,应用B使用账号B的日志服务,现计划将应用A与B的日志集中采集到账号A下管理。
采集-IoT/嵌入式日志:智能路由器、各种电视棒、天猫精灵、扫地机器人等IoT设备应用数目多、分布广,难以调试且硬件受限,该方案解决如何处理IoT设备日志的问题。
采集客户端数据的高可用方案:针对单集群故障风险,提供双写方案和数据加工复制+写入切换方案两种异地多活的客户端数据采集方案。
采集企业内网服务器日志:服务器部署在企业内网中且没有公网访问权限,可通过代理模式将这些服务器的日志采集到日志服务。
更多方案可参考最佳实践。
常见问题
专线方式接入应如何选择网络?
请选择阿里云内网(经典网络或专有网络VPC)。
如何选择网络类型和接入点(Endpoint)?
网络类型:LoongCollector网络传输类型。
采集公网数据时能否采集公网IP地址?
采集问题如何排查?
更多问题可查看数据采集常见问题。