赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 日志服务
  4. 操作指南
  5. 数据采集
  6. Logtail采集
  7. Logtail最佳实践
  8. 使用Terraform配置Logtail采集配置

使用Terraform配置Logtail采集配置

  • Logtail最佳实践
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

Terraform是一种开源工具,用于安全高效地预览、配置和管理云基础架构和资源。本文介绍如何使用Terraform调用接口创建Logtail采集配置。

前提条件

已安装Terraform。

  • 在Cloud Shell中使用Terraform:Cloud Shell默认安装配置了Terraform和阿里云账号信息,无需任何额外配置。更多信息,请参见在Cloud Shell中使用Terraform。

  • 在本地安装和配置Terraform:操作步骤请参见在本地安装和配置Terraform,在第4步中确保registry.terraform.io/aliyun/alicloud版本为1.219.0及以上。

配置步骤

步骤一:配置AccessKey和日志服务的中心化地域

在环境变量中配置阿里云账号AccessKey和日志服务中心Project所在的地域。

在Cloud Shell中使用Terraform

# Region ID
export ALICLOUD_REGION="cn-shanghai"
重要

使用Cloud Shell无需配置身份信息,建议使用RAM用户登录阿里云控制台,降低密钥泄露造成的安全风险。

参数

说明

ALICLOUD_REGION

日志服务Project所在地域,更多信息,请参考开服地域。

在本地使用Terraform

# alicloud AK
export ALICLOUD_ACCESS_KEY="AccessKey ID"
export ALICLOUD_SECRET_KEY="AccessKey Secret"
# Region ID
export ALICLOUD_REGION="cn-shanghai"

参数

说明

ALICLOUD_ACCESS_KEY

阿里云账号的访问密钥AccessKey ID。更多信息,请参见访问密钥。

重要

建议使用RAM用户的AccessKey ID和AccessKey Secret,降低密钥泄露造成的安全风险。

ALICLOUD_SECRET_KEY

阿里云账号的访问密钥AccessKey Secret。更多信息,请参见访问密钥。

ALICLOUD_REGION

日志服务Project所在地域,更多信息,请参考开服地域。

步骤二:创建日志服务Project

  1. 执行以下命令,创建一个Terraform工作目录,名称例如sls。

    mkdir sls
  2. 执行以下命令,切换到刚创建的目录下。

    cd sls
  3. 在该目录下创建一个文件,名称例如terraform.tf。

    touch terraform.tf
  4. 在terraform.tf文件中,添加如下内容。

    resource "alicloud_log_project" "project_example" {
      project_name = "terraform-example"
      description = "terraform-example"
    }

    alicloud_log_project为资源类型,相关参数说明如下。完整参数说明,请参见Terraform-Alicloud Log Project。

    参数

    是否必填

    说明

    project_example

    是

    Resource名称。

    project_name

    是

    SLS日志服务project 名称,需要保证唯一性。

    description

    否

    project的描述。

  5. 按下键盘上的Esc键退出编辑模式,然后输入:wq保存并退出文件。

  6. 在工作目录sls下,执行如下命令,初始化Terraform工作目录。

    terraform init

    返回如下结果,表示初始化成功。

    Terraform has been successfully initialized!
  7. 在工作目录sls下,执行如下命令,创建日志服务Project。

    terraform apply

    返回如下信息,表示成功创建Project。

    alicloud_log_project.project_example: Creating...
    alicloud_log_project.project_example: Creation complete after 2s [id=terraform-example]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

步骤三:创建Logstore

  1. 在terraform.tf文件中,新增如下内容。

    resource "alicloud_log_store" "logstore_example" {
      project_name = alicloud_log_project.project_example.project_name
      logstore_name = "logstore_example"
      retention_period = 3
    }

    其中alicloud_log_store为资源类型,相关参数说明如下,完整参数说明,请参见Terraform-Alicloud Log Store。

    参数

    是否必填

    说明

    logstore_example

    是

    Resource名称。

    project_name

    是

    LogStore所属的Project名,此处例子引用的是alicloud_log_project类型资源下的project_example Resource的project_name属性值。

    logstore_name

    是

    LogStore的名称。

    retention_period

    否

    数据保留时间(以天为单位),默认30天。

  2. 在您所创建的工作目录sls下,执行如下命令,创建Logstore。

    terraform apply

    返回如下结果,表示初始化成功。

    alicloud_log_project.project_example: Creating...
    alicloud_log_project.project_example: Creation complete after 2s [id=terraform-example]
    alicloud_log_store.logstore_example: Creating...
    alicloud_log_store.logstore_example: Creation complete after 1s [id=terraform-example:logstore_example]
    
    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

步骤四:创建Logtail采集配置

  1. 在terraform.tf文件中,新增如下内容。

    resource "alicloud_logtail_config" "config_test" {
      project     = alicloud_log_store.logstore_example.project_name
      logstore    = alicloud_log_store.logstore_example.logstore_name
      name        = "config-sample"
      input_type  = "file"
      output_type = "LogService"
      input_detail = jsonencode(
      	{
    		"logPath": "/logPath",
    		"filePattern": "access.log",
    		"logType": "json_log",
    		"topicFormat": "default",
    		"discardUnmatch": false,
    		"enableRawLog": true,
    		"fileEncoding": "gbk",
    		"maxDepth": 10
    	}
      )
    }

    其中alicloud_logtail_config为资源类型,相关参数说明如下,完整参数说明,请参见Terraform-Alicloud Logtail Config。

    参数

    是否必填

    说明

    config_test

    是

    Resource名称。

    project

    是

    config所属的Project名称。

    logstore

    是

    config所属的Logstore名称。

    name

    是

    Logtail配置的名称,在其所属Project内必须唯一。创建Logtail配置成功后,无法修改其名称。

    命名规则如下:

    • 只能包括小写字母、数字、短划线(-)和下划线(_)。

    • 必须以小写字母或数字开头和结尾。

    • 长度必须在2~128个字符之间。

    input_type

    是

    日志输入的方式。可选值如下:

    • plugin:通过Logtail插件采集日志。

    • file:通过固定模式(正则模式、分隔符模式等)采集文本文件中的日志。

    output_type

    是

    日志输出的方式,只支持LogService,即只支持将数据上传到日志服务。

    input_detail

    是

    日志输入的相关配置。更多信息,请参见Logtail配置。

  2. 在您所创建的工作目录sls下,执行如下命令,创建Logtail配置。

    terraform apply

    返回如下结果,表示创建成功。

    alicloud_logtail_config.config_test: Creating...
    alicloud_logtail_config.config_test: Creation complete after 0s [id=terraform-example-yangfei:logstore_example:config-sample]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

步骤五:创建机器组

  1. 在terraform.tf文件中,新增如下内容。

    resource "alicloud_log_machine_group" "machine_group_example" {
      project     = alicloud_log_store.logstore_example.project_name
      name          = "terraform-example"
      identify_type = "ip"
      topic         = "terraform"
      identify_list = ["10.0.0.1", "10.0.0.2"]
    }

    其中alicloud_log_machine_group为资源类型,相关参数说明如下,完整参数说明,请参见Terraform-Alicloud Log Machine Group。

    参数

    是否必填

    说明

    machine_group_example

    是

    Resource名称。自定义配置。

    project

    是

    机器组所属的project名

    name

    是

    机器组名称,Project下唯一

    identify_type

    否

    机器标识类型,分为IP和userdefined两种,默认为IP

    topic

    否

    机器组Topic,默认为空。

    identify_list

    是

    具体的机器标识,可以是IP或userdefined-id。

  2. 在您所创建的工作目录sls下,执行如下命令,创建机器组。

    terraform apply

    返回如下结果,表示初始化成功。

    alicloud_log_machine_group.machine_group_example: Creating...
    alicloud_log_machine_group.machine_group_example: Creation complete after 0s [id=terraform-example:terraform-example]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

步骤六:应用Logtail采集配置到机器组

  1. 在terraform.tf文件中,添加如下内容。

    resource "alicloud_logtail_attachment" "example" {
      project     = alicloud_log_store.logstore_example.project_name
      logtail_config_name = alicloud_logtail_config.config_test.name
      machine_group_name  = alicloud_log_machine_group.machine_group_example.name
    }

    其中alicloud_logtail_attachment为资源类型,相关参数说明如下,完整参数说明,请参见Terraform-Alicloud Logtail Attachment。

    参数

    是否必填

    说明

    example

    是

    Resource名称。自定义配置。

    project

    是

    project名

    logtail_config_name

    是

    Logtail配置名

    machine_group_name

    是

    机器组名

  2. 在您所创建的工作目录sls下,执行如下命令,将Logtail配置应用到机器组。

    terraform apply

    返回如下结果,表示初始化成功。

    alicloud_logtail_attachment.example: Creating...
    alicloud_logtail_attachment.example: Creation complete after 0s [id=terraform-example:config-sample:terraform-example]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

完整配置模板

Terraform模板

resource "alicloud_log_project" "project_example" {
  project_name = "terraform-example"
  description = "terraform-example"
}

resource "alicloud_log_store" "logstore_example" {
  project_name = alicloud_log_project.project_example.project_name
  logstore_name = "logstore_example"
  retention_period = 3
}

resource "alicloud_logtail_config" "config_test" {
  project     = alicloud_log_store.logstore_example.project_name
  logstore    = alicloud_log_store.logstore_example.logstore_name
  name        = "config-sample"
  input_type  = "file"
  output_type = "LogService"
  input_detail = jsonencode(
  	{
		"logPath": "/logPath",
		"filePattern": "access.log",
		"logType": "json_log",
		"topicFormat": "default",
		"discardUnmatch": false,
		"enableRawLog": true,
		"fileEncoding": "gbk",
		"maxDepth": 10
	}
  )
}
resource "alicloud_log_machine_group" "machine_group_example" {
  project     = alicloud_log_store.logstore_example.project_name
  name          = "terraform-example"
  identify_type = "ip"
  topic         = "terraform"
  identify_list = ["10.0.0.1", "10.0.0.2"]
}

resource "alicloud_logtail_attachment" "example" {
  project     = alicloud_log_store.logstore_example.project_name
  logtail_config_name = alicloud_logtail_config.config_test.name
  machine_group_name  = alicloud_log_machine_group.machine_group_example.name
}

配置效果

创建的Project、Logstore和Logtail采集配置

image

Logtail采集配置

image

机器组配置

image

相关操作

更新Terraform目录

terraform init --upgrade

导入已有配置

如果您在SLS已创建Project、Logstore等资源,您可以在本地配置好terraform.tf文件后使用terraform import命令导入。

terraform import alicloud_log_project.project_example terraform-example
terraform import alicloud_log_store.logstore_example terraform-example:logstore_example
terraform import alicloud_logtail_config.config_test terraform-example:logstore_example:config-sample
terraform import alicloud_log_machine_group.machine_group_example terraform-example:terraform-example
terraform import alicloud_logtail_attachment.example terraform-example:config-sample:terraform-example

执行完毕后,您可以查看terraform工作目录下的terraform.tfstate文件内容。terraform.tfstate文件内容即为导入的采集配置。

重要

如果需要将导入的采集配置迁移到terraform.tf文件中,需要手动拷贝,并对格式做适当调整,满足terraform.tf文件的格式要求。

如果您已经在当前的terraform工作目录执行过terraform apply或者terraform import命令,则此时再次执行terraform import命令会失败。您需要删除当前目录下的terraform.tfstate文件后再重新执行terraform import命令。

查看当前配置。

terraform show

查看当前terraform.tf文件与已生效的采集配置的差异。

terraform plan

常见问题

为什么出现预期外的Diff情况?

如果在执行terraform plan或terraform apply时,出现预期外的diff情况,例如:discardUnmatch在未修改的情况下也出现了diff情况。

请您升级registry.terraform.io/hashicorp/alicloud到1.219.0及以上版本,该问题会在您升级到最新版本且成功terraform apply一次该配置后解决。

相关文档

  • Logtail采集配置参数说明

  • 使用Terraform的步骤

    • 在Cloud Shell中使用Terraform

    • 在本地安装和配置Terraform

  • Terraform参数说明

    • Terraform-Alicloud Log Project

    • Terraform-Alicloud Log Store

    • Terraform-Alicloud Logtail Config

    • Terraform-Alicloud Log Machine Group

    • Terraform-Alicloud Logtail Attachment

相关文章

导入历史日志文件 2025-04-22 11:04

Logtail只采集增量日志。如果下发Logtail配置后,日志文件无更新,则Logtail不会采集该文件中的日志。如果您需要采集历史日志,可使用Logtail自带的导入历史日志文件功能。 前提条件

采集配置生成器 2025-04-22 11:04

若您计划通过CRD-AliyunPipelineConfig或API接口来配置Logtail采集任务,本文向您介绍如何利用采集配置生成器来自动构建所需的CRD定义和API参数脚本。该工具可帮您快速完成配置,减少手动操作。 操作步骤

使用CR实例管理采集配置 2025-04-22 11:04

CRD(CustomResourceDefinition)允许用户定义自定义资源类型,日志服务利用CRD定义了自己的资源类型,您可以通过创建CR(CustomResource)实例来管理采集配置。本文主要介绍日志服务的两类CRD(AliyunPipelineConfig和AliyunLogConfi

【推荐】使用AliyunPipelineConfig管理采集配置 2025-04-22 11:04

AliyunPipelineConfig是日志服务自定义的一类CRD,您可以通过配置YAML文件创建对应的CR,从而管理iLogtail采集配置。本文主要介绍通过AliyunPipelineConfig管理iLogtail采集配置的操作步骤。 前提条件

使用AliyunLogConfig管理采集配置 2025-04-22 11:04

AliyunLogConfig是日志服务自定义的一类CRD,您可以通过配置YAML文件创建对应的CR,从而管理iLogtail采集配置。本文主要介绍通过AliyunLogConfig管理iLogtail采集配置的操作步骤。 前提条件 已安

内置CRD模板工具 2025-04-22 11:04

内置CRD(custom resource definition)模板工具内置了一系列采集能力,通过此工具,可以快速集成标准化采集能力并通过CRD管理采集配置的生命周期,避免控制台配置繁琐步骤。 前提条件 采集Kubernetes集群内Logs、Metrics、Trace数据,需要先安装Logtai

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号