4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windowsサーバーのプロセス監視を無理やりCloudWatchLogsで実装してみた

Last updated at Posted at 2016-02-23

どうも、タクローです。
初投稿となりドキドキしています。今後ちょくちょくアウトプットしていきたいと思います。

#はじめに
 cloudwatchで簡単に監視できるものが増え、あとはプロセス監視ぐらいできれば社内サーバーのほぼすべてをcloudwatchに入れ替えれそう・・・でもプロセス監視のカスタムメトリクスも見当たらない(Windows)。ということで無理やりやってみました。
今回は「メモ帳が起動していなかったら、アラームを上げる」仕組みを作ってみます。

#実行環境
 OS:Windows 2012
 インスタンスタイプ:t2.micro
 IAMrole:CloudWatch-FullAccess, CloudWatchLogs-FullAccess, EC2-FullAccess 
 ※対象のec2インスタンスにロールを紐付けています。

#プロセス監視バッチの生成
 「タスクリストを確認して落ちていたら通報をあげる」だけのシンプルなバッチを作成。

process_chek.bat
@ECHO OFF

TASKLIST | FIND "notepad.exe" > NUL
IF NOT ERRORLEVEL 1  (
	GOTO END
) ELSE (
	GOTO NOTENG
)

:NOTENG
    set yyyy=%date:~0,4%
    set mm=%date:~5,2%
    set dd=%date:~8,2%
    set filename=%yyyy%%mm%%dd%
	ECHO %DATE% %TIME% notepadが起動していません >> "C:\Program Files\Amazon\cloudwatch\error\error_%filename%.log"
	GOTO END
:END
EXIT

上記のバッチファイルを適当な場所に格納し、タスクスケジューラで常駐化させます。
(お手軽監視なので、タスクスケジューラ自体がコケるケースなどは検討しません)
image

トリガーを時間起動(5分に1回無制限に変更)
image

操作は先ほど作ったバッチを選択
image

今回はテストということで管理者権限で実行。

#CloudWatch-Logsの設定
##基本設定
 次はいよいよCloudWatch-Logsの設定です。
 Windows2012サーバーにデフォルトで入っているec2configのバージョンは2.2.8となります。
 詳細を設定ファイル(json形式)で編集できるのがver.2.2.10以降なので、ec2configをダウンロードする。
 ZIPファイルダウンロード>解凍・展開>インストール

##CloudWatchLogsの有効化
「C:\Program Files\Amazon\Ec2ConfigService」の中にEc2ConfigServiveSettingが入っていますので、これを起動。
image

起動し、CloudWatch Logsにチェックを入れて、OKボタンを押下。
image

##JSONファイルの編集
細かいCloudWatchLogsの設定については設定ファイル(JSON形式)を編集します。
  ■場所 C:\Program Files\Amazon\Ec2ConfigService\Settings
  ■ファイル名 AWS.EC2.Windows.CloudWatch.json

今回の変更箇所は3箇所

カスタムログの設定
           {
                "Id": "Processes",
                "FullName": "AWS.EC2.Windows.CloudWatch.CustomLog.CustomLogInputComponent,AWS.EC2.Windows.CloudWatch",
                "Parameters": {
                    "LogDirectoryPath": "C:\\Program Files\\Amazon\\cloudwatch\\error\\",
                    "TimestampFormat": "HH:mm:ss yyyy/MM/dd",
                    "Encoding": "shift_jis",
                    "Filter": "",
                    "CultureName": "ja-JP",
                    "TimeZoneKind": "Local"
                }
            }

もともとはId:Customlogになっていたと思います。
わかりやすい【ID】に変更し、【LogDirectoryPath】に通報が上がってくるファイルのパスを、【TimestampFormat】を変更し、【Encoding】をshift_jisにします。(日本語が入らない場合はUTF-8でも可)
【CultureName】も日本に変更し、【TimeZoneKind】もUTCではなく、localに変更します。

cloudwatchlogsの設定
  {
                "Id": "CloudWatchLogs",
                "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch",
                "Parameters": {
                    "AccessKey": "",
                    "SecretKey": "",
                    "Region": "ap-northeast-1",
                    "LogGroup": "test",
                    "LogStream": "test-process"
                }
            }

ここは【Region】を希望のリージョンに変更
インスタンスにロールを紐付けていない場合は【AccessKey】と【SecretKey】を記入の必要がありますが、
今回はロールを紐付けているため、空白のまま。
【LogGroup】と【LogStream】にはそれぞれの名前を記入します。(CloudWatchLogsの画面で表示される名前となります)

Flowsの設定
        "Flows": {
           "Flows":
            [
                "(Processes),CloudWatchLogs"
            ]
        }

ここでは収集したデータの流れを設定します。
今回はID:Processesで取得したデータをCloudWatchLogsで設定したとおりに転送しますので、
上記のような内容となります。

##ec2configの再起動
ここで注意
Ec2Configサービスを再起動させて初めて変更が適用されるので、再起動を実施。
image

#結果とアラート設定
メモ帳が動いていない状態でバッチを稼働すると、無事にCloudWatchLogsに新しい【LogGroup】と【LogStream】ができていることが確認できました。
image

あとは、LogGroupの「メトリックスの作成」ボタンをからメトリックスフィルタを作成します。
image
【フィルタパターン】には検知したい文言を設定します。システムログなどを監視するなら「error」などを入れてもいいかもしれません。
”テストするログデータの選択”に監視したい【LogStream】を選択し、パターンのテストを実施すると結果として意図した内容になっているかを確認できます。

あとはメトリックス名などを設定すれば、一つのカスタムメトリクスとして登録できます。
対象のメトリクスにアラーム設定を入れれば完了です。

#終わりに
 タスクスケジューラで監視するなら、メールの検知もタスクスケジューラでいいんじゃない?という話もあるかもしれませんが、CloudWatchのアラームに検知を一本化したいなどの要望には答えられるかと。
どなたかもっといい方法をご存知の方がおられれば、ぜひご教示ください!w

#参考にしたサイト
 AWSドキュメント
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/ec2-configuration-cwl.html#create_json_file)
 WindowsサーバーのCloudWatch-Logs設定について
 (http://iga-ninja.hatenablog.com/entry/2014/10/22/205350)
 タスクスケジューラによるプロセス監視の方法
 (http://takaq1.plala.jp/contents/windows/proces_test/)

4
6
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
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?