日志采集与加工为阿里云Elasticsearch(ES)提供托管的服务端写入能力,解决自建 ELK 方案中日志高并发写入的性能瓶颈和运维复杂度问题。创建任务后,平台自动生成写入 Endpoint,只需在采集端(如 Filebeat、OpenTelemetry Collector)中配置该 Endpoint,即可将日志数据写入 Elasticsearch。
使用限制
支持 ES 7.10 和 8.17.0 版本。
OpenTelemetry 采集方式仅支持 8.17.0 版本,Filebeat 采集方式支持 7.10 和 8.17.0 版本。
步骤一:创建日志写入任务
单击目标实例ID进入基本信息,在左侧导航栏单击离线数据处理。
在离线数据处理页面,找到日志采集与加工服务卡片,单击立即使用
在日志采集与加工服务页面,单击创建,配置以下参数:
参数
说明
任务名称
自定义任务名称,用于标识该写入任务。
API Key
在下拉菜单中选择可用的 API Key。如暂无可用 API Key,请提前前往 OpenSearch-AI 搜索开放平台完成创建。
用户名
目标 Elasticsearch 实例的用户名,用于写入鉴权。
密码
目标 Elasticsearch 实例的密码。
专有网络
选择日志源端所在的 VPC,默认为 Elasticsearch 实例所在的 VPC。每个写入任务绑定一个 VPC,请确保日志源端与所绑定的 VPC 网络互通。
交换机
在下拉菜单中选择 VSwitch,默认为 Elasticsearch 实例所在的 VSwitch。不满足可用区要求的 VSwitch 将置灰显示,不可选择。
确认各参数配置无误,单击完成,等待任务创建完成。
任务创建完成后,系统自动生成一个写入 Endpoint(格式为
http://t-**********.private.-hangzhou.es-log.aliyuncs.com),用于接收日志数据。
步骤二:获取写入 Endpoint
任务创建完成后,在任务详情页面获取写入 Endpoint,后续采集端将通过该地址发送日志数据。
在日志采集与加工服务页面的任务列表中,找到目标任务,单击查看。
在任务详情页面,获取写入 Endpoint:
VPC私网地址:默认启用,适用于同 VPC 内的采集端。
公网地址:默认关闭。如需从公网采集日志,开启公网域名并配置公网访问白名单。
在任务详情页面下方,根据 Elasticsearch 实例版本和采集方式,查看对应的配置文件模板:
8.17.0 版本:支持 OpenTelemetry Collector 和 Filebeat。
7.10 版本:仅支持 Filebeat。
单击复制即可获取已填入 Endpoint 和鉴权信息的完整配置文件。
步骤三:部署 OpenTelemetry 采集端
OpenTelemetry(OTel)采集方式仅支持 8.17.0 版本。如使用 Filebeat 采集方式,将步骤二中复制的 Filebeat 配置文件应用到 Filebeat 即可,无需执行本步骤。
以下以在 ACK 集群中部署 Elastic Agent(OTel 兼容模式)为例,说明如何将容器日志通过托管写入 Endpoint 采集到 Elasticsearch。
1. 了解 OTel 配置文件
步骤二中复制的 OTel 配置文件已自动填入写入 Endpoint 和鉴权信息,核心结构如下:
receivers:
# 日志接收器:采集指定路径下的日志文件
filelog:
include: [/path/to/logs/*.log] # 日志文件路径,根据实际路径修改
exclude: [ ]
start_at: end # 从文件末尾开始读取,仅采集新增日志
multiline:
line_start_pattern: ^2025- # 多行日志的起始标志,根据实际日志格式修改
exporters:
# 日志导出器:将日志发送到托管写入 Endpoint
elasticsearch/logs:
endpoints: ["http://es-cn-xxxxxxpxi00xxxxxx.elasticsearch.aliyuncs.com:9200"] # 任务详情页中的写入 Endpoint
user: "elastic"
password: "your_password"
tls:
insecure_skip_verify: false
retry:
enabled: true
initial_interval: 5s
max_interval: 30s
service:
pipelines:
logs:
receivers: [filelog]
exporters: [elasticsearch/logs]配置项 | 说明 |
| 日志文件采集路径,支持通配符。需与业务容器的实际日志输出路径一致。 |
| 设为 |
| 多行日志识别规则。例如 Java 异常栈跨越多行,需配置起始行的正则匹配模式。 |
| 写入 Endpoint 地址,从任务详情页自动填入。 |
| Elasticsearch 实例的用户名。 |
| Elasticsearch 实例的密码。 |
| 失败重试策略,按 5s → 30s 递增间隔重试,避免数据丢失。 |
根据实际环境修改 receivers.filelog.include 中的日志路径和 multiline.line_start_pattern 中的日志格式。详细配置项说明参见 OpenTelemetry Collector Receivers。
2. 在 ACK 中创建 ConfigMap
将 OTel 配置文件以 ConfigMap 的形式部署到 ACK 集群。
登录容器服务 ACK 控制台,选择目标集群。
在左侧导航栏,单击配置管理 > 配置项。
单击创建,创建一个名为
otel-config的配置项,添加键值对:键:
otel.yml值:粘贴步骤二中复制的 OTel 配置文件内容。
3. 部署 Sidecar 容器
在业务应用的 Deployment 或 StatefulSet 中,以 Sidecar 模式添加 Elastic Agent 容器,与业务容器共享日志卷。
在 ACK 控制台的工作负载 > 无状态(或有状态)中,找到目标工作负载,单击编辑。
添加共享日志卷:在数据卷区域,单击增加本地存储,添加一个
emptyDir类型的卷(如命名为app-log),并挂载到业务容器的日志输出路径。单击添加容器,配置 Sidecar 容器:
镜像名称:
elastic/elastic-agent:9.1.5(建议预先推送到阿里云容器镜像服务 ACR)环境变量:添加
ELASTIC_AGENT_OTEL,值为true,启用 OpenTelemetry 采集模式
为 Sidecar 容器配置两个卷挂载:
挂载项
卷名称
容器路径
说明
共享日志卷
app-log/path/to/logs与业务容器的日志路径一致
OTel 配置
otel-config(ConfigMap)/usr/share/elastic-agent/otel.yml(子路径:otel.yml)挂载单个文件,避免覆盖目录
单击更新提交变更。Kubernetes 自动滚动重启 Pod,新 Pod 将包含业务容器和 Sidecar 容器。
4. 验证日志采集
在 ACK 控制台查看 Sidecar 容器的日志,确认其已正常启动。
登录 Kibana 控制台,执行以下查询验证日志是否成功写入:
GET /logs-filelog-default/_search { "query": { "match_all": {} } }查询返回业务日志记录,表示采集链路已建立。
管理日志写入任务
在日志采集与加工服务页面的任务列表中,可对已有任务执行以下操作:
操作 | 说明 |
查看 | 查看任务详情,包括创建信息、写入 Endpoint、采集端配置 |
停止 | 暂停运行中的写入任务,暂停后采集端将无法通过该 Endpoint 写入数据 |
删除 | 删除写入任务,删除后该任务的 Endpoint 将永久失效 |
常见问题
如果 Elasticsearch 中没有写入预期的日志数据,可按以下步骤排查:
确认任务状态
登录阿里云Elasticsearch控制台,在写入任务列表页面,确认任务状态是否为运行中。若任务状态异常,请检查 VPC 专有网络及交换机配置是否正确,确保日志源端与所绑定的 VPC 网络互通。
查看任务错误日志
在任务列表单击
进入任务详情页面查看错误日志。若错误日志中存在异常记录,请根据错误信息进行针对性排查。例如,日志中出现以下报错,表示 Elasticsearch 用户认证失败,请检查账号密码或 API Key 是否正确配置:
reason: unable to authenticate user [elastic] for REST request [/_bulk] type: security_exception status: 401提交工单
若通过以上步骤仍无法定位问题,请提交工单寻求技术支持,并在工单中附上详细的问题描述及相关错误日志,以便技术人员快速定位问题。