Todos os produtos
Search
Central de documentação

Simple Log Service:Configure a coleta do Logtail com o Terraform

Última atualização: Jul 05, 2026

O Terraform é uma ferramenta de código aberto para provisionamento e gerenciamento de infraestrutura em nuvem. Neste tutorial, você utiliza o Terraform para criar um projeto, um grupo de máquinas, um Logstore e uma configuração do Logtail no Simple Log Service.

Nota

É possível executar o código de exemplo deste tutorial com um único clique. Executar agora.

Pré-requisitos

  • O Simple Log Service (SLS) deve estar ativado. Para mais informações, consulte Hierarquia de recursos de armazenamento.

  • Por questões de segurança, utilize um usuário RAM com as permissões mínimas necessárias. Para mais detalhes, veja Criar um usuário RAM e Gerenciar permissões de usuário RAM. A política a seguir concede as permissões exigidas:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "log:GetProject",
            "log:ListProject",
            "log:CreateProject",
            "log:DeleteProject",
            "log:UpdateProject",
            "log:GetAppliedMachineGroups",
            "log:GetMachineGroup",
            "log:ListMachineGroup",
            "log:CreateMachineGroup",
            "log:GetLogStore",
            "log:GetLogStoreLogs",
            "log:GetLogStoreMeteringMode",
            "log:ListLogStores",
            "log:CreateLogStore",
            "log:PostLogStoreLogs",
            "log:UpdateLogStore",
            "log:GetLogtailPipelineConfig",
            "log:UpdateLogtailPipelineConfig",
            "log:ListTagResources",
            "log:ListShards",
            "log:ListSavedSearch",
            "log:GetIndex",
            "log:ListDashboard",
            "log:ListConfig",
            "log:CreateConfig",
            "log:GetConfig",
            "log:ApplyConfigToGroup",
            "log:DeleteConfig",
            "log:DeleteMachineGroup",
            "log:GetProjectPolicy",
            "log:DeleteLogStore"
          ],
          "Resource": "*"
        }
      ]
    }
Nota

Alguns recursos utilizados neste tutorial geram custos. Libere-os quando não forem mais necessários para evitar cobranças inesperadas.

Recursos

Etapa 1: Criar um projeto

  1. Crie um diretório de trabalho e adicione a ele um arquivo de configuração chamado main.tf. Copie o código abaixo para dentro do arquivo main.tf.

    variable "region" {
      default = "cn-hangzhou"
    }
    variable "identify_list" {
      type        = list(string)
      description = "The IP addresses of machines in the machine group"
      default     = ["10.0.0.1", "10.0.0.2"]
    }
    provider "alicloud" {
      region = var.region
    }
    resource "random_integer" "default" {
      min = 10000
      max = 99999
    }
    # A project
    resource "alicloud_log_project" "example" {
      project_name = "project-name-${random_integer.default.result}"
      description  = "tf actiontrail example"
    }
  2. Execute o comando a seguir para inicializar o ambiente de execução do Terraform.

    terraform init

    A saída abaixo indica que a inicialização foi bem-sucedida.

    Terraform has been successfully initialized!
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
  3. Execute o comando seguinte para aplicar a configuração.

    terraform apply

    Quando solicitado, insira yes e pressione Enter. A mensagem a seguir confirma a execução bem-sucedida.

    You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
      Enter a value: yes
    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
  4. Verifique o resultado.

    Terraform show

    No diretório de trabalho, execute o comando abaixo para visualizar os detalhes do recurso:

    terraform show
    # alicloud_log_project.example:
    resource "alicloud_log_project" "example" {
        create_time       = "2024-11-25 14:23:17"
        description       = "tf actiontrail example"
        id                = "project-name-xxx"
        name              = "project-name-xxx"
        project_name      = "project-name-xxx"
        resource_group_id = "rg-xxx"
        status            = "Normal"
    }
    # random_integer.default:
    resource "random_integer" "default" {
        id     = "xxx"
        max    = 99999
        min    = 10000
        result = xxx
    }

    Console

    Faça login no console do Simple Log Service para visualizar o projeto.

Etapa 2: Criar um grupo de máquinas e um Logstore

  1. Adicione o código a seguir ao arquivo main.tf.

    # A machine group
    resource "alicloud_log_machine_group" "example" {
      project     = alicloud_log_project.example.project_name
      name          = "terraform-example-${random_integer.default.result}"
      identify_type = "ip"
      topic         = "terraform"
      identify_list = var.identify_list
    }
    # A Logstore
    resource "alicloud_log_store" "example" {
      project_name = alicloud_log_project.example.project_name
      logstore_name = "logstore_example_${random_integer.default.result}"
      retention_period = 3
    }
  2. Crie um plano de execução para visualizar previamente as alterações.

    terraform plan
  3. Execute o comando abaixo para aplicar a configuração.

    terraform apply

    Quando solicitado, insira yes e pressione Enter. A saída a seguir indica que a execução foi concluída com sucesso.

    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
  4. Valide o resultado obtido.

    Terraform show

    No diretório de trabalho, execute o comando a seguir para ver os detalhes dos recursos:

    terraform show
    shell@Alicloud:~/log/1log$ terraform show
    # alicloud_log_machine_group.example:
    resource "alicloud_log_machine_group" "example" {
        id             = "project-name-xxx:terraform-example-xxx"
        identify_list  = [
            "10.0.0.1",
            "10.0.0.2",
        ]
        identify_type  = "ip"
        name           = "terraform-example-xxx"
        project        = "project-name-xxx"
        topic          = "terraform"
    }
    # alicloud_log_project.example:
    resource "alicloud_log_project" "example" {
        create_time       = "2024-11-25 14:23:17"
        description       = "tf actiontrail example"
        id                = "project-name-xxx"
        name              = "project-name-xxx"
        project_name      = "project-name-xxx"
        resource_group_id = "rg-xxx"
        status            = "Normal"
        tags              = {}
    }
    # alicloud_log_store.example:
    resource "alicloud_log_store" "example" {
        append_meta          = true
        auto_split           = false
        create_time          = 1732516271
        enable_web_tracking  = false
        id                   = "project-name-xxx:logstore_example_xxx"
        logstore_name        = "logstore_example_xxx"
        max_split_shard_count = 0
        metering_mode        = "ChargeByDataIngest"
        mode                 = "standard"
        name                 = "logstore_example_xxx"
        project              = "project-name-xxx"
        project_name         = "project-name-xxx"
        retention_period     = 3
        shard_count          = 2
    }

    Console

    1. Acesse o console do Simple Log Service. Na seção Projects, clique em nome do projeto. No painel de navegação à esquerda, escolha Log Storage para visualizar o Logstore.

    2. Ainda no painel de navegação à esquerda, selecione Resources > Machine Groups para verificar o grupo de máquinas.

Etapa 3: Configurar a coleta do Logtail

  1. Acrescente o código abaixo ao arquivo main.tf.

    # A Logtail configuration
    resource "alicloud_logtail_config" "example" {
      project     = alicloud_log_project.example.project_name
      logstore    = alicloud_log_store.example.logstore_name
      name        = "config-sample-${random_integer.default.result}"
      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
    	}
      )
    }
    # A Logtail attachment
    resource "alicloud_logtail_attachment" "example" {
      project     = alicloud_log_project.example.project_name
      logtail_config_name = alicloud_logtail_config.example.name
      machine_group_name  = alicloud_log_machine_group.example.name
    }
  2. Gere um plano de execução para revisar as mudanças antes de aplicá-las.

    terraform plan
  3. Execute o comando a seguir para efetivar a configuração.

    terraform apply

    Ao receber o prompt, insira yes e pressione Enter. O retorno abaixo sinaliza que a operação foi concluída corretamente.

    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
  4. Confirme se tudo ocorreu conforme esperado.

    Terraform show

    Dentro do diretório de trabalho, utilize o comando seguinte para inspecionar os detalhes do recurso:

    terraform show
    # alicloud_logtail_attachment.example:
    resource "alicloud_logtail_attachment" "example" {
        id                 = "project-name-xxx:config-sample-xxx:terraform-example-xxx"
        logtail_config_name = "config-sample-xxx"
        machine_group_name = "terraform-example-xxx"
        project            = "project-name-xxx"
    }
    # alicloud_logtail_config.example:
    resource "alicloud_logtail_config" "example" {
        id             = "project-name-xxx:logstore_example_xxx:config-sample-xxx"
        input_detail   = jsonencode(
            {
                discardUnmatch = false
                enableRawLog   = true
                fileEncoding   = "gbk"
                filePattern    = "access.log"
                logPath        = "/logPath"
                logType        = "json_log"
                maxDepth       = 10
                topicFormat    = "default"
            }
        )
        input_type       = "file"
        last_modify_time = "1732519340"
        logstore         = "logstore_example_xxx"
        name             = "config-sample-xxx"
        output_type      = "LogService"
        project          = "project-name-xxx"
    }

    Console

    1. Acesse o console do Simple Log Service. Localize a seção Projects e clique em nome do projeto desejado. Em seguida, no painel de navegação à esquerda, navegue até Log Storage > Logtail Configurations para encontrar a configuração do Logtail.

    2. Clique em nome da Logtail configuration e acesse a aba Machine Group Management para checar o grupo de máquinas associado.

      No painel Applied Machine Groups, localize o grupo cujo nome começa com terraform-example-. Isso confirma que o vínculo entre o grupo de máquinas e a configuração do Logtail está ativo.

Liberar recursos

Caso não precise mais dos recursos provisionados durante este tutorial, execute o comando abaixo para removê-los. Para entender melhor como funciona o comando terraform destroy, consulte Comandos comuns.

terraform destroy

Exemplo completo

Nota

Você tem a opção de executar o código de exemplo deste tutorial com apenas um clique. Executar agora.

Código de exemplo

variable "region" {
  default = "cn-hangzhou"
}
variable "identify_list" {
  type        = list(string)
  description = "The IP addresses of machines in the machine group"
  default     = ["10.0.0.1", "10.0.0.2"]
}
provider "alicloud" {
  region = var.region
}
resource "random_integer" "default" {
  min = 10000
  max = 99999
}
# A project
resource "alicloud_log_project" "example" {
  project_name = "project-name-${random_integer.default.result}"
  description  = "tf actiontrail example"
}
# A machine group
resource "alicloud_log_machine_group" "example" {
  project     = alicloud_log_project.example.project_name
  name          = "terraform-example-${random_integer.default.result}"
  identify_type = "ip"
  topic         = "terraform"
  identify_list = var.identify_list
}
# A Logstore
resource "alicloud_log_store" "example" {
  project_name = alicloud_log_project.example.project_name
  logstore_name = "logstore_example_${random_integer.default.result}"
  retention_period = 3
}
# A Logtail configuration
resource "alicloud_logtail_config" "example" {
  project     = alicloud_log_project.example.project_name
  logstore    = alicloud_log_store.example.logstore_name
  name        = "config-sample-${random_integer.default.result}"
  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
	}
  )
}
# A Logtail attachment
resource "alicloud_logtail_attachment" "example" {
  project     = alicloud_log_project.example.project_name
  logtail_config_name = alicloud_logtail_config.example.name
  machine_group_name  = alicloud_log_machine_group.example.name
}

Para explorar outros cenários, acesse Mais exemplos completos.

Referências