Terraform は、クラウドインフラストラクチャをプロビジョニングおよび管理するためのオープンソースツールです。Terraform を使用して、Simple Log Service (SLS) の Logtail 収集を構成できます。
このチュートリアルのサンプルコードは、ワンクリックで実行できます。今すぐ実行。
前提条件
-
Simple Log Service (SLS) が有効になっている必要があります。詳細については、「ストレージリソース階層」をご参照ください。
-
セキュリティのため、必要最小限の権限を持つ RAM ユーザーを使用してください。詳細については、「RAMユーザーの作成」および「RAMユーザー権限の管理」をご参照ください。以下のポリシーで必要な権限が付与されます。
{ "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": "*" } ] } -
Terraform ランタイム環境を準備します。Terraform を使用するには、次のいずれかの方法を使用できます。
Terraform Explorer で Terraform を使用する:Alibaba Cloud は Terraform のオンラインランタイム環境を提供しています。インストールすることなく、オンラインで Terraform にログインして使用できます。この方法は、追加費用なしで迅速かつ便利に Terraform を使用およびデバッグしたいシナリオに適しています。
Cloud Shell:Cloud Shell には Terraform がプリインストールされており、認証情報が設定されています。Cloud Shell で Terraform コマンドを実行できます。この方法は、低コストで効率的かつ便利に Terraform を使用およびアクセスする必要があるシナリオに適しています。
ローカルで Terraform をインストールして設定する:この方法は、ネットワーク接続が悪い場合や、カスタム開発環境が必要なシナリオに適しています。
このチュートリアルの一部のリソースには料金が発生します。不要になったリソースは解放し、予期しない課金を回避してください。
リソース
-
alicloud_log_project:プロジェクト。
-
alicloud_log_machine_group:マシングループ。
-
alicloud_log_store:Logstore。
-
alicloud_logtail_config:Logtail 構成。
-
alicloud_logtail_attachment:Logtail アタッチメント。
ステップ 1:プロジェクトの作成
-
作業ディレクトリを作成し、その中にmain.tf という名前の構成ファイルを作成します。以下のコードをmain.tf にコピーします。
variable "region" { default = "cn-hangzhou" } variable "identify_list" { type = list(string) description = "マシングループ内のマシンの IP アドレス" default = ["10.0.0.1", "10.0.0.2"] } provider "alicloud" { region = var.region } resource "random_integer" "default" { min = 10000 max = 99999 } # プロジェクト resource "alicloud_log_project" "example" { project_name = "project-name-${random_integer.default.result}" description = "tf actiontrail example" } -
以下のコマンドを実行して、Terraform ランタイム環境を初期化します。
terraform init以下の出力が表示されれば、初期化は成功です。
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. -
以下のコマンドを実行して、構成を適用します。
terraform applyプロンプトが表示されたら、
yesと入力して[Enter] キーを押します。以下の出力が表示されれば、実行は成功です。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. -
結果を確認します。
Terraform show
作業ディレクトリで、以下のコマンドを実行してリソースの詳細を表示します。
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 }コンソール
Simple Log Service コンソールにログインして、プロジェクトを確認します。
ステップ 2:マシングループと Logstore の作成
-
以下のコードを
main.tfファイルに追加します。# マシングループ 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 } # 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 } -
実行計画を作成して、変更をプレビューします。
terraform plan -
以下のコマンドを実行して、構成を適用します。
terraform applyプロンプトが表示されたら、
yesと入力して[Enter] キーを押します。以下の出力が表示されれば、実行は成功です。Apply complete! Resources: 2 added, 0 changed, 0 destroyed. -
結果を確認します。
Terraform show
作業ディレクトリで、以下のコマンドを実行してリソースの詳細を表示します。
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 }コンソール
-
Simple Log Service コンソールにログインします。[プロジェクト] セクションで、プロジェクト名をクリックします。左側のナビゲーションペインで、[ログストレージ] を選択して Logstore を表示します。
-
左側のナビゲーションペインで、 を選択し、マシン グループを表示します。
-
ステップ 3:Logtail 収集の構成
-
以下のコードを
main.tfファイルに追加します。# Logtail 構成 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 } ) } # Logtail アタッチメント 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 } -
実行計画を作成して、変更をプレビューします。
terraform plan -
以下のコマンドを実行して、構成を適用します。
terraform applyプロンプトが表示されたら、
yesと入力して[Enter] キーを押します。以下の出力が表示されれば、実行は成功です。Apply complete! Resources: 2 added, 0 changed, 0 destroyed. -
結果を確認します。
Terraform show
作業ディレクトリで、以下のコマンドを実行してリソースの詳細を表示します。
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" }コンソール
-
Simple Log Service コンソールにログオンします。[プロジェクト] セクションで、プロジェクト名をクリックします。左側のナビゲーションペインで、[ログストレージ] > [Logtail 設定] を選択して Logtail 設定を表示します。
-
[Logtail 設定] 名をクリックし、[マシン グループ管理] タブに移動して、関連付けられたマシン グループを表示します。
[適用済みマシングループ] パネルで、
terraform-example-で始まる名前のマシングループを見つけます。これにより、マシングループが Logtail 構成に関連付けられていることが確認できます。
-
リソースの解放
このチュートリアルで作成したリソースが不要になった場合は、以下のコマンドを実行してリソースを解放します。terraform destroy コマンドの詳細については、「一般的なコマンド」をご参照ください。
terraform destroy
完全な例
このチュートリアルのサンプルコードは、ワンクリックで実行できます。今すぐ実行。
サンプルコード
その他の例については、「その他の完全な例」で目的の製品フォルダーに移動してください。
関連ドキュメント
-
Terraform の詳細については、「Alibaba Cloud Terraformとは」をご参照ください。