Terraformはオープンソースのツールで、クラウドのインフラストラクチャとリソースを安全かつ効率的にプレビュー、設定、管理できます。 このトピックでは、TerraformとそのCLIを使用してLogtail設定を作成する方法について説明します。
前提条件
Terraformがインストールされています。
Cloud ShellでTerraformを使用する: デフォルトでは、TerraformはCloud Shellにインストールおよび設定されます。 Alibaba CloudアカウントもCloud Shell用に設定されています。 詳細については、「Cloud ShellでのTerraformの使用」をご参照ください。
オンプレミスのマシンにTerraformをインストールして構成する:
registry.terraform.io/aliyun/alicloud
のバージョンが1.219.0以降であることを確認します。 詳細については、「ローカルPCでのTerraformのインストールと設定」をご参照ください。
手順
Cloud ShellでのTerraformの使用
手順1: 中央のSimple Log Serviceプロジェクトのリージョンを設定する
# Region ID
export ALICLOUD_REGION="cn-shanghai"
Cloud Shellを使用するときは、ID情報を設定する必要はありません。 Alibaba Cloud管理コンソールにログインするには、RAM (Resource Access Management) ユーザーを使用することを推奨します。 これにより、AccessKeyペアのリークによるセキュリティリスクを軽減できます。
パラメーター | 説明 |
ALICLOUD_地域 | Simple Log Serviceプロジェクトが存在するリージョン。 詳細については、「サポートされているリージョン」をご参照ください。 |
ステップ2: Simple Log Serviceプロジェクトの作成
次のコマンドを実行して、
sls
という名前のTerraform作業ディレクトリを作成します。mkdir sls
次のコマンドを実行してslsディレクトリに切り替えます。
cd sls
次のコマンドを実行して、slsディレクトリに
terraform.tf
という名前のファイルを作成します。touch terraform.tf
次の内容を
terraform.tf
ファイルに追加します。resource "alicloud_log_project" "project_example" { project_name = "terraform-example" description = "terraform-example" }
alicloud_log_project
はリソースタイプを示します。 次の表に、その他のパラメーターについて説明します。 プロジェクトに関連するすべてのパラメーターの詳細については、「Terraform-Alicloud Log project」をご参照ください。パラメーター
必須 / 任意
説明
project_example
可
リソースの名前です。
project_name
可
Simple Log Serviceプロジェクトの名前。 名前は一意にする必要があります。
説明
不可
プロジェクトの説明。
Escキーを押して挿入モードを終了し、
:wq
と入力してファイルを保存して閉じます。sls
ディレクトリで次のコマンドを実行し、ディレクトリを初期化します。terraform init
次の出力が返された場合、初期化は成功です。
Terraform has been successfully initialized!
sls
ディレクトリで次のコマンドを実行し、Simple Log Serviceプロジェクトを作成します。terraform apply
次の出力が返されると、プロジェクトが作成されます。
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.
ステップ3: Logstoreの作成
次の内容を
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
はリソースタイプを示します。 次の表に、その他のパラメーターについて説明します。 Logstoreに関連するすべてのパラメーターの詳細については、「Terraform-Alicloud Log Store」をご参照ください。パラメーター
必須 / 任意
説明
logstore_例
可
リソースの名前です。
project_name
可
Logstoreが属するプロジェクトの名前。 この例では、alicloud_log_project型のproject_exampleリソースに指定されたproject_nameパラメーターの値が使用されます。
logstore_name
可
ログストアの名前
retention_period
不可
データ保持期間。 単位:日 デフォルト値:30。
sls
ディレクトリで次のコマンドを実行し、Logstore
を作成します。terraform apply
次の出力が返されると、Logstoreが作成されます。
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.
ステップ4: Logtail設定の作成
次の内容を
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
はリソースタイプを示します。 次の表に、その他のパラメーターについて説明します。 Logtail設定に関連するすべてのパラメーターの詳細については、「Terraform-Alicloud Logtail Config」をご参照ください。パラメーター
必須 / 任意
説明
config_test
可
リソースの名前です。
project
可
Logtail設定が属するプロジェクトの名前。
logstore
可
Logtail設定が属するLogstoreの名前。
name
可
Logtail設定の名前。 名前は、Logtail構成が属するプロジェクト内で一意である必要があります。 Logtail設定の作成後、Logtail設定の名前を変更することはできません。
名前の条件は以下の通りです。
名前には、小文字、数字、ハイフン ( - )、アンダースコア ( _ ) のみ使用できます。
名前の先頭と末尾は、小文字または数字である必要があります。
名前の長さは 2 ~ 128 文字である必要があります。
input_type
可
ログの収集方法。 有効な値:
plugin: Logtailプラグインを使用してログを収集します。
file: テキストログは、完全正規表現モードや区切り文字モードなどの既存のモードを使用して収集されます。
output_type
可
収集されたログのアップロード先。 値をLogServiceに設定します。 収集したログは、Simple Log Serviceにのみアップロードできます。
input_detail
可
データソースの設定。 詳細は、「Logtail設定」をご参照ください。
sls
ディレクトリで次のコマンドを実行し、Logtail設定を作成します。terraform apply
次の出力が返されると、Logtail設定が作成されます。
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.
ステップ5: マシングループを作成する
次の内容を
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_例
可
リソースの名前です。 カスタム名を指定できます。
project
可
マシングループが属するプロジェクトの名前。
name
可
マシングループの名前。 名前はプロジェクト内で一意である必要があります。
_typeを識別
不可
マシングループ識別子のタイプ。 有効な値: IPおよびuserdefined。 デフォルト値: IP。
トピック
不可
マシングループのトピック。 このパラメーターはデフォルトで空となります。
identify_list
可
マシングループ識別子のリスト。 値は、IPアドレスまたはカスタム識別子です。
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.
ステップ6: マシングループにLogtail設定を適用する
次の内容を
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
はリソースタイプを示します。 次の表に、その他のパラメーターについて説明します。 Logtail設定の適用に関連するすべてのパラメーターの詳細については、「Terraform-Alicloud Logtail添付ファイル」をご参照ください。パラメーター
必須 / 任意
説明
example
可
リソースの名前です。 カスタム名を指定できます。
project
可
プロジェクトの名前。
logtail_config_name
可
Logtail設定の名前。
machine_group_name
可
マシングループの名前。
sls
ディレクトリで次のコマンドを実行し、マシングループにLogtail設定を適用します。terraform apply
次の出力が返されると、Logtail設定がマシングループに適用されます。
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を使用
手順1: AccessKeyペアと中央のSimple Log Serviceプロジェクトのリージョンを設定する
# alicloud AK
export ALICLOUD_ACCESS_KEY="AccessKey ID"
export ALICLOUD_SECRET_KEY="AccessKey Secret"
# Region ID
export ALICLOUD_REGION="cn-shanghai"
パラメーター | 説明 |
ALICLOUD_ACCESS_KEY | Alibaba Cloud アカウントの AccessKey ID。 詳細は、「AccessKeyペア」をご参照ください。 重要 RAMユーザーのAccessKey IDとAccessKey secretを使用することを推奨します。 これにより、AccessKeyペアのリークによるセキュリティリスクを軽減できます。 |
ALICLOUD_SECRET_KEY | Alibaba Cloud アカウントの AccessKey シークレット。 詳細は、「AccessKeyペア」をご参照ください。 |
ALICLOUD_地域 | Simple Log Serviceプロジェクトが存在するリージョン。 詳細については、「サポートされているリージョン」をご参照ください。 |
ステップ2: Simple Log Serviceプロジェクトの作成
次のコマンドを実行して、
sls
という名前のTerraform作業ディレクトリを作成します。mkdir sls
次のコマンドを実行してslsディレクトリに切り替えます。
cd sls
次のコマンドを実行して、slsディレクトリに
terraform.tf
という名前のファイルを作成します。touch terraform.tf
次の内容を
terraform.tf
ファイルに追加します。resource "alicloud_log_project" "project_example" { project_name = "terraform-example" description = "terraform-example" }
alicloud_log_project
はリソースタイプを示します。 次の表に、その他のパラメーターについて説明します。 プロジェクトに関連するすべてのパラメーターの詳細については、「Terraform-Alicloud Log project」をご参照ください。パラメーター
必須 / 任意
説明
project_example
可
リソースの名前です。
project_name
可
Simple Log Serviceプロジェクトの名前。 名前は一意にする必要があります。
説明
不可
プロジェクトの説明。
Escキーを押して挿入モードを終了し、
:wq
と入力してファイルを保存して閉じます。sls
ディレクトリで次のコマンドを実行し、ディレクトリを初期化します。terraform init
次の出力が返された場合、初期化は成功です。
Terraform has been successfully initialized!
sls
ディレクトリで次のコマンドを実行し、Simple Log Serviceプロジェクトを作成します。terraform apply
次の出力が返されると、プロジェクトが作成されます。
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.
ステップ3: Logstoreの作成
次の内容を
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
はリソースタイプを示します。 次の表に、その他のパラメーターについて説明します。 Logstoreに関連するすべてのパラメーターの詳細については、「Terraform-Alicloud Log Store」をご参照ください。パラメーター
必須 / 任意
説明
logstore_例
可
リソースの名前です。
project_name
可
Logstoreが属するプロジェクトの名前。 この例では、alicloud_log_project型のproject_exampleリソースに指定されたproject_nameパラメーターの値が使用されます。
logstore_name
可
ログストアの名前
retention_period
不可
データ保持期間。 単位:日 デフォルト値:30。
sls
ディレクトリで次のコマンドを実行し、Logstore
を作成します。terraform apply
次の出力が返されると、Logstoreが作成されます。
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.
ステップ4: Logtail設定の作成
次の内容を
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
はリソースタイプを示します。 次の表に、その他のパラメーターについて説明します。 Logtail設定に関連するすべてのパラメーターの詳細については、「Terraform-Alicloud Logtail Config」をご参照ください。パラメーター
必須 / 任意
説明
config_test
可
リソースの名前です。
project
可
Logtail設定が属するプロジェクトの名前。
logstore
可
Logtail設定が属するLogstoreの名前。
name
可
Logtail設定の名前。 名前は、Logtail構成が属するプロジェクト内で一意である必要があります。 Logtail設定の作成後、Logtail設定の名前を変更することはできません。
名前の条件は以下の通りです。
名前には、小文字、数字、ハイフン ( - )、アンダースコア ( _ ) のみ使用できます。
名前の先頭と末尾は、小文字または数字である必要があります。
名前の長さは 2 ~ 128 文字である必要があります。
input_type
可
ログの収集方法。 有効な値:
plugin: Logtailプラグインを使用してログを収集します。
file: テキストログは、完全正規表現モードや区切り文字モードなどの既存のモードを使用して収集されます。
output_type
可
収集されたログのアップロード先。 値をLogServiceに設定します。 収集したログは、Simple Log Serviceにのみアップロードできます。
input_detail
可
データソースの設定。 詳細は、「Logtail設定」をご参照ください。
sls
ディレクトリで次のコマンドを実行し、Logtail設定を作成します。terraform apply
次の出力が返されると、Logtail設定が作成されます。
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.
ステップ5: マシングループを作成する
次の内容を
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_例
可
リソースの名前です。 カスタム名を指定できます。
project
可
マシングループが属するプロジェクトの名前。
name
可
マシングループの名前。 名前はプロジェクト内で一意である必要があります。
_typeを識別
不可
マシングループ識別子のタイプ。 有効な値: IPおよびuserdefined。 デフォルト値: IP。
トピック
不可
マシングループのトピック。 このパラメーターはデフォルトで空となります。
identify_list
可
マシングループ識別子のリスト。 値は、IPアドレスまたはカスタム識別子です。
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.
ステップ6: マシングループにLogtail設定を適用する
次の内容を
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
はリソースタイプを示します。 次の表に、その他のパラメーターについて説明します。 Logtail設定の適用に関連するすべてのパラメーターの詳細については、「Terraform-Alicloud Logtail添付ファイル」をご参照ください。パラメーター
必須 / 任意
説明
example
可
リソースの名前です。 カスタム名を指定できます。
project
可
プロジェクトの名前。
logtail_config_name
可
Logtail設定の名前。
machine_group_name
可
マシングループの名前。
sls
ディレクトリで次のコマンドを実行し、マシングループにLogtail設定を適用します。terraform apply
次の出力が返されると、Logtail設定がマシングループに適用されます。
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.
ROSでTerraformを使用
Terraformは、自動リソースオーケストレーション用のオープンソースツールです。 Resource Orchestration Service (ROS) では、Terraformを使用してリソースを管理できます。 Terraformテンプレートとスタックを作成して、Alibaba Cloud、Amazon Web Services (AWS) 、およびMicrosoft Azureのリソースを調整できます。 TerraformはROS APIと互換性があります。 Terraformテンプレートを作成した後、ROS API操作を呼び出すことができます。
左側のナビゲーションウィンドウで、[テンプレート] > [マイテンプレート] を選択します。 [マイテンプレート] ページで、[テンプレートの作成] をクリックします。
Terraformテンプレートを作成します。 [Template Type] パラメーターを [Terraform Template] に設定し、テンプレートに次の内容を入力して、ページ下部の [Save template] をクリックします。 Terraformテンプレートのパラメーターの詳細については、このトピックの「オンプレミスマシンでTerraformを使用する」タブを参照してください。
[スタック] ページで、[スタックの作成] をクリックし、ドロップダウンリストから [Terraformを使用] を選択します。
[スタックの作成] ページで、[テンプレートの指定] パラメーターを [既存のテンプレートの選択] に設定し、[テンプレートのインポート方法] パラメーターを [マイテンプレート] に設定し、[マイテンプレート] ドロップダウンリストから作成したテンプレートを選択します。 次に、設定ウィザードを完了します。
完全な設定テンプレート
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
}