LoginSignup
1
0

Windowsサービスを監視するスクリプトはこちらです。

Posted at

初めに

こんにちは、山田です。
今回はWindowsサービスを監視するスクリプトを作成したので記載していきます。

スクリプト

早速ですが今回作成したスクリプトは以下になります。

# 配列を定義
$arr = "サービス名","サービス名"

# AWSインスタンスメタデータ取得
Write-Output "Fetching instance ID..."
$instanceid = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id
Write-Output "Instance ID: $instanceid"

# 配列の要素数だけループ
for ($i = 0; $i -lt $arr.Count; $i++){
    # サービス稼働確認
    Write-Output "Checking service status for: $($arr[$i])"
    $serviceStatus = Get-Service -Name $arr[$i] -ErrorAction SilentlyContinue
    if ($serviceStatus -ne $null -and $serviceStatus.Status -eq 'Running') {
        $Processes = 1
    } else {
        $Processes = 0
    }
    Write-Output "Processes=$Processes"

    #Putコマンドを利用し、CloudWatchに送信
    Write-Output "Sending metric to CloudWatch..."
    try {
        & "C:\Program Files\Amazon\AWSCLIV2\aws.exe" cloudwatch put-metric-data --metric-name $arr[$i] --namespace "CWAgent" --region ap-northeast-1 --value $Processes  --unit "Count" --dimensions "InstanceId=$instanceid"
        Write-Output "Metric sent successfully."
    } catch {
        Write-Output "Failed to send metric: $_"
    }
}

処理内容

今回作成したスクリプトの処理内容を以下に記載します。
このスクリプトは、特定のWindowsサービスが稼働しているかどうかを確認し、その結果をAWS CloudWatchにメトリクスとして送信するものです。以下に各部分の詳細な説明を記載します。

  1. 配列の定義$arrという配列に、確認したいWindowsサービスの名前を列挙します。

  2. AWSインスタンスメタデータの取得Invoke-RestMethodを使用して、現在のEC2インスタンスのIDを取得します。このIDは後のステップでCloudWatchにメトリクスを送信する際に使用されます。

  3. 配列の要素数だけループ:配列$arrの各要素(サービス名)に対して以下の処理を行います。

    • サービス稼働確認Get-Serviceコマンドを使用して、指定した名前のWindowsサービスのステータスを取得します。サービスが存在し、そのステータスが'Running'であれば、$Processesに1を設定します。それ以外の場合は、$Processesに0を設定します。

    • CloudWatchにメトリクスを送信:AWS CLIのput-metric-dataコマンドを使用して、サービスの稼働状態($Processesの値)をCloudWatchに送信します。メトリクスの名前はサービス名と同じにし、インスタンスIDを次元として指定します。

このスクリプトを実行すると、指定したWindowsサービスが稼働しているかどうかの情報がCloudWatchに送信されます。これにより、CloudWatchのダッシュボードやアラームを使用して、サービスの稼働状態を監視することが可能になります。

動作確認

CloudWatchメトリクスを確認し、対象のサービスが監視されていることが確認できればOkです。
image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0