はじめに
クラウド学習捗っていますか?今回は、AzureのWindows仮想マシン(VM)の作成と監視設定を行うための基礎知識を学びます。この記事では、Terraformを使用してAzure環境にWindows VMをデプロイし、CPU使用率が高くなった場合に通知を受け取るためのアラートを設定する方法について説明します。
なぜアラートを学習する必要があるのか
クラウド環境での運用において、リソースの監視とアラート設定は非常に重要です。以下の理由から、アラート設定を学習することは欠かせません。
-
問題の早期発見 アラートを設定することで、リソースの異常を早期に検知し、迅速に対応することができます。例えば、CPU使用率が異常に高くなった場合、即座に通知を受け取ることで、パフォーマンスの低下やダウンタイムを未然に防ぐことができます。
-
運用効率の向上 手動でリソースの状態を監視するのは手間がかかります。アラートを自動化することで、運用チームの負担を軽減し、より効率的なリソース管理が可能になります。
-
信頼性の確保 クラウド環境では、複数のリソースが連携して動作します。各リソースの状態を適切に監視し、問題が発生した際に即座に対応することで、システム全体の信頼性を高めることができます。
-
コスト管理 リソースの異常な使用を検知し、迅速に対処することで、不要なコストの発生を防ぐことができます。例えば、不要に高いCPU使用率が続くと、無駄なリソース消費によるコスト増加を招く可能性があります。
アラート設定を学習し、適切に活用することで、クラウド環境の運用を最適化し、システムの信頼性と効率性を向上させることができます。
環境設定
Terraformのインストール
Terraformは、インフラストラクチャをコードとして管理するためのツールです。公式サイトからTerraformをダウンロードし、インストール手順に従ってください。以下のコマンドを使用してインストールを確認できます。
terraform -v
Azure CLIのインストールと設定
Azure CLIは、Azureリソースを管理するためのコマンドラインツールです。公式サイトからAzure CLIをダウンロードし、インストール手順に従ってください。
インストール後、以下のコマンドでAzureにログインします。
az login
上記のコマンドを実行すると、デフォルトのブラウザが起動し、Azureのログインページが表示されます。ここでAzureアカウントの認証情報を入力してください。認証が成功すると、ターミナルに以下のようなメッセージが表示されます。
[
{
"cloudName": "AzureCloud",
"homeTenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"isDefault": true,
"managedByTenants": [],
"name": "Your Subscription Name",
"state": "Enabled",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"user": {
"name": "your-email@example.com",
"type": "user"
}
}
]
このメッセージが表示されたら、Azure CLIのセットアップが完了し、Azureアカウントにログインできています。
リソースグループとネットワークの作成
まずはAzureにリソースグループと仮想ネットワークを作成します。これらはVMをデプロイするための基本的なリソースです。
main.tf
以下のコードは、Terraformを使用してリソースグループと仮想ネットワーク、およびサブネットを作成する方法を示しています。
provider "azurerm" {
features {}
subscription_id = var.subscription_id # AzureサブスクリプションIDを指定
}
provider "random" { }
resource "random_string" "suffix" {
length = 6
special = false
upper = false
}
resource "azurerm_resource_group" "example" {
name = "example-resources" # リソースグループの名前
location = "Japan East" # リージョン
}
resource "azurerm_virtual_network" "example" {
name = "example-vnet" # 仮想ネットワークの名前
address_space = ["10.0.0.0/16"] # アドレス空間
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
}
resource "azurerm_subnet" "example" {
name = "example-subnet" # サブネットの名前
resource_group_name = azurerm_resource_group.example.name
virtual_network_name = azurerm_virtual_network.example.name
address_prefixes = ["10.0.2.0/24"] # サブネットのアドレスプレフィックス
}
# Log Analyticsワークスペースの作成
resource "azurerm_log_analytics_workspace" "example" {
name = "example-law"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
sku = "PerGB2018"
retention_in_days = 30
}
変数ファイルの作成
Terraformの設定を簡単に管理するために、変数ファイルを作成します。これにより、設定の再利用性と可読性が向上します。
variables.tf
variable "subscription_id" {
description = "The subscription ID to use for this deployment"
type = string
}
variable "admin_username" {
description = "Admin username for the Windows VM"
type = string
default = "adminuser"
}
variable "admin_password" {
description = "Admin password for the Windows VM"
type = string
default = "Password1234!"
}
terraform.tfvars
以下のファイルに実際の変数の値を指定します。これにより、コード内で値をハードコードする必要がなくなります。
subscription_id = "your_subscription_id"
admin_username = "your_admin_username"
admin_password = "your_admin_password"
これらのコードを使って、Terraformでリソースグループとネットワークを作成する準備が整いました。次のステップでは、これらのリソースを使用してWindows VMを作成します。
Windows VMの作成
次に、AzureにWindows仮想マシン(VM)を作成します。まず、ネットワークインターフェースを作成し、これをWindows VMに接続します。ネットワークインターフェースは、仮想ネットワーク内でVMが通信を行うために必要です。
vm.tf
以下のコードは、Terraformを使用してネットワークインターフェースとWindows VMを作成する方法を示しています。
# ネットワークインターフェースの作成
resource "azurerm_network_interface" "example" {
name = "example-nic"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
ip_configuration {
name = "internal"
subnet_id = azurerm_subnet.example.id
private_ip_address_allocation = "Dynamic"
}
}
# Windows VMの作成
resource "azurerm_windows_virtual_machine" "example" {
name = "example-vm"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
size = "Standard_B1ms"
admin_username = var.admin_username # 管理者ユーザー名
admin_password = var.admin_password # 管理者パスワード
network_interface_ids = [azurerm_network_interface.example.id]
os_disk {
caching = "ReadWrite" # キャッシング設定
storage_account_type = "Standard_LRS" # ストレージアカウントの種類
}
source_image_reference {
publisher = "MicrosoftWindowsServer" # イメージの発行者
offer = "WindowsServer" # イメージのオファー
sku = "2019-Datacenter" # SKU
version = "latest" # 最新バージョン
}
tags = {
environment = "testing" # タグの設定
}
}
診断設定の作成
Windows VMの診断設定を行います。診断設定とは、Azureリソースのパフォーマンスや操作に関するデータを収集するための設定です。これにより、リソースの状態を監視し、異常を検知することができます。例えば、車のダッシュボードにある警告灯のように、システムの状態をリアルタイムで把握することができるのです。
diagnostics.tf
以下のコードは、Terraformを使用してWindows VMの診断設定を作成する方法を示しています。
# 診断設定の作成
resource "azurerm_monitor_diagnostic_setting" "example" {
name = "example-diagnostics"
target_resource_id = azurerm_windows_virtual_machine.example.id
log_analytics_workspace_id = azurerm_log_analytics_workspace.example.id
metric {
category = "AllMetrics" # すべてのメトリックの収集
enabled = true
}
}
storage_policy.tf
以下のコードを storage_policy.tf
ファイルに追加します。
# ストレージアカウントの作成
resource "azurerm_storage_account" "example" {
name = "examplestorageacc"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
account_tier = "Standard"
account_replication_type = "LRS"
blob_properties {
delete_retention_policy {
days = 30
}
}
}
# ストレージ管理ポリシーの作成
resource "azurerm_storage_management_policy" "example" {
storage_account_id = azurerm_storage_account.example.id
rule {
name = "logRetention"
enabled = true
filters {
blob_types = ["blockBlob"]
}
actions {
base_blob {
delete_after_days_since_modification_greater_than = 30
}
}
}
}
診断設定を行うことで、VMのパフォーマンスや操作に関するデータをリアルタイムで収集し、問題が発生した際に迅速に対応することが可能になります。ストレージ管理ポリシーを使用することで、不要なデータを自動的に削除し、ストレージの効率的な利用が可能になります。
CPU使用率アラートの作成
最後に、Windows VMのCPU使用率が高くなった場合に通知を受け取るためのアラートを設定します。これにより、システムの負荷が高くなった場合に即座に対応することができます。
alerts.tf
以下のコードは、Terraformを使用してCPU使用率アラートを作成する方法を示しています。
# アクショングループの作成
resource "azurerm_monitor_action_group" "example" {
name = "example-action-group"
resource_group_name = azurerm_resource_group.example.name
short_name = "example"
email_receiver {
name = "example-email"
email_address = "your-email@example.com" # 通知を受け取るメールアドレス
}
}
# CPU使用率アラートの作成
resource "azurerm_monitor_metric_alert" "cpu_alert" {
name = "example-cpu-alert"
resource_group_name = azurerm_resource_group.example.name
scopes = [azurerm_windows_virtual_machine.example.id]
description = "Alert for CPU usage over 80%"
severity = 3
frequency = "PT1M" # アラートの評価頻度を1分に設定
window_size = "PT5M" # 5分間の平均を評価
criteria {
metric_namespace = "Microsoft.Compute/virtualMachines"
metric_name = "Percentage CPU" # 監視するメトリック
aggregation = "Average"
operator = "GreaterThan"
threshold = 80 # しきい値を80%に設定
}
action {
action_group_id = azurerm_monitor_action_group.example.id # アクショングループを指定
}
}
このアラートを設定することで、Windows VMのCPU使用率が80%を超えた場合に通知を受け取ることができます。これにより、システムの負荷が高くなった場合に迅速に対応することができます。
ここまでできたら、terraform apply
コマンドを実行してリソースを作成します。
まとめ
この記事では、Terraformを使用してAzureにWindows VMを作成し、CPU使用率アラートを設定する方法について学びました。以下の手順を通じて、Azure環境の基本的な構築と監視を行いました。
-
環境設定
- TerraformとAzure CLIのインストールと設定方法を学びました。
-
リソースグループとネットワークの作成
- Terraformを使用してAzureにリソースグループと仮想ネットワークを作成しました。
-
Windows VMの作成
- ネットワークインターフェースを作成し、それを使用してWindows VMをデプロイしました。
-
診断設定の作成
- Windows VMのパフォーマンスデータとイベントログを収集するための診断設定を行いました。
-
CPU使用率アラートの作成
- Windows VMのCPU使用率が80%を超えた場合に通知を受け取るためのアラートを設定しました。
Azure環境での基本的なリソース作成と監視設定が完了しました。この設定を通じて、システムのパフォーマンスを監視し、異常が発生した場合に迅速に対応することができます。次の記事では、メモリ使用率、ディスク使用率、特定のプロセスの監視など、さらに詳細なアラート設定について解説します。
参考資料
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.06.21
クラウド初心者向け AzureでVMを作成し、動作確認をしてみよう
このガイドを読み終えると、無料アカウントの作成、Azureポータルの操作、仮想マシンの作成、接続、そして簡単なウェブページを表示する方法が理解できるようになります。
- Azure
2023.11.30
Azure API Gatewayを活用したWebアプリ開発
API Gatewayを使用することで、開発者はAPIの作成・公開・保守・監視を簡単に行うことができ、さらにセキュリティの強化やトラフィック管理も可能になります。
- Azure
2024.02.27
AWS ALBとAzure Application Gatewayの違い
この記事では、クラウドコンピューティングの二大巨頭、Amazon Web Services (AWS) の Application Load Balancer (ALB) と Microsoft Azure の Application Gateway (アプリケーションゲートウェイ)の間で、Web アプリケーション向けのロードバランサーサービスを比較します。
- AWS
- Azure