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.
É 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": "*" } ] }
Alguns recursos utilizados neste tutorial geram custos. Libere-os quando não forem mais necessários para evitar cobranças inesperadas.
Recursos
alicloud_log_project: um projeto.
alicloud_log_machine_group: um grupo de máquinas.
alicloud_log_store: um Logstore.
alicloud_logtail_config: uma configuração do Logtail.
alicloud_logtail_attachment: um anexo do Logtail.
Etapa 1: Criar um projeto
-
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" } -
Execute o comando a seguir para inicializar o ambiente de execução do Terraform.
terraform initA 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. -
Execute o comando seguinte para aplicar a configuração.
terraform applyQuando solicitado, insira
yese 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. -
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
-
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 } -
Crie um plano de execução para visualizar previamente as alterações.
terraform plan -
Execute o comando abaixo para aplicar a configuração.
terraform applyQuando solicitado, insira
yese 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. -
Valide o resultado obtido.
Terraform show
No diretório de trabalho, execute o comando a seguir para ver os detalhes dos recursos:
terraform showshell@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
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.
Ainda no painel de navegação à esquerda, selecione para verificar o grupo de máquinas.
Etapa 3: Configurar a coleta do Logtail
-
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 } -
Gere um plano de execução para revisar as mudanças antes de aplicá-las.
terraform plan -
Execute o comando a seguir para efetivar a configuração.
terraform applyAo receber o prompt, insira
yese pressione Enter. O retorno abaixo sinaliza que a operação foi concluída corretamente.Apply complete! Resources: 2 added, 0 changed, 0 destroyed. -
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
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.
-
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
Você tem a opção de executar o código de exemplo deste tutorial com apenas um clique. Executar agora.
Código de exemplo
Para explorar outros cenários, acesse Mais exemplos completos.
Referências
Para saber mais sobre o Terraform, leia O que é o Alibaba Cloud Terraform?.