ApacheとTomcatプロセス監視

はじめに

コンソールからApacheとTomcatのプロセス監視が出来なかったので、CloudWatchAgentを用いた監視を行うための検証を行いました。
その手順を初心者の方にもわかるように記事にしてみたいと思います。

プロセス監視とは

プロセス監視とは、コンピュータ上で実行されるプログラム(プロセス)の状態や動作を定期的に監視することです。監視することで、プロセスの異常終了や停止、リソース使用量の増加などを検知し、適切な対策を講じることができます。

前提

◆EC2用のIAMロールが作成済みであること
 (CloudWatchAgentServerPolicy,AmazonSSMFullAccessのポリシーをアタッチ)

◆EC2インスタンス(Amazon Linux2)が作成済みであること

◆SNS アラーム発生時のメール送信先トピックを作成済みであること

大まかな手順

大まかな流れとしては

  1. EC2インスタンスにCloudWatchエージェント,Apache,Tomcatのインストール
  2. サービス監視用のCloudWatch Agentの設定ファイルを作成する
  3. 設定ファイルをSSMで(RunCommand)反映する
  4. CloudWatch上でhttpdとtomcatのプロセスが取れているか確認する
  5. httpdとtomcatのプロセス監視用のCloudWatchアラームを作成する
  6. ApacheとTomcatを停止させアラームが発砲されているか確認する

構成図

構成手順

EC2インスタンスにCloudWatchエージェント,Apache,Tomcatのインストール

※SSHでEC2インスタンスにアクセスしています。

1.こちらのコマンドを実行して、CludWatchエージェントをインストールします。"Complete!" と表示されればOKです。

$ sudo yum install amazon-cloudwatch-agent

↓ 2.ApacheとTomcatのインストール

$ sudo yum install -y httpd
$ sudo yum install -y tomcat

↓どちらもコマンド結果の最下部に "Complete!" と表示されればOKです。

↓こちらのコマンドでそれぞれ起動させ、

$ sudo systemctl start httpd
$ sudo systemctl start tomcat

↓こちらのコマンドでApacheのステータス確認をします。

$ sudo systemctl status httpd


↓こちらのコマンドでTomcatのステータス確認をします。

$ sudo systemctl status tomcat

AWS Systems Managerでパラメータ作成

↓ 1.サービスから"Systems Manager"選択

↓ 2.左ペインから"パラメータストア"を選択、そして右上の"パラメータの作成"を選択。

①"名前" は "AmazonCloudWatch" から始まるものにする。

②"利用枠" は "標準" を選択

③"タイプ" は "文字列" を選択

④"データ型" は "text" を選択

⑤"値" 以下を入力

{
  "metrics": {
    "metrics_collected": {
      "procstat": [
        {
          "exe": "httpd",
          "measurement": [
            "pid_count"
          ],
          "metrics_collection_interval": 60
        },
        {
          "pattern": "org.apache.catalina.startup.Bootstrap start",
          "measurement": [
            "pid_count"
          ],
          "metrics_collection_interval": 60
        }
      ]
    }
  }
}

⑥"タグ" は任意でつける

⑦"パラメータを作成" をクリック。

AWS Systems Manager(Run Command)で設定ファイルを反映する

↓ 1.サービスから"Systems Manager"選択

↓ 2.左ペインから "Run Command" を選択、そして右上の "パラメータの作成" を選択。

①検索窓に "AmazonCloudWatch-ManageAgent" と入力し、チェックを入れる。

② "ドキュメントのバージョン" デフォルトのまま

③ "Action" configure (append)

④ "Model" ec2

⑤ "Optional Configuration Source" ssm

⑥ "Optional Configuration Location" AmazonCloudWatch-Agent-tomoya

⑦ "Optional Restart" yes

⑧ "インスタンスを手動で選択する" にチェックを入れる。

⑨ターゲットとするインスタンスにチェックを入れる。

⑩ "実行" をクリック

↓ 実行後にステータスが成功になっていればOKです。

CloudWatch上でhttpdとtomcatのプロセスが取れているか確認する

↓ 1.サービスから”CloudWatch”選択

  1. "すべてのメトリクス" を選択し "CWAgent"を選択。

  1. "exe,host,pid_finder" と "host,pattern,pid_finder"が表示されるようになっています。

  1. “exe,host,pid_finder” と “host,pattern,pid_finder” それぞれを選択しプロセス監視対象にチェックを入れる。


↓このようにグラフ化したメトリクスが表示されればOKです。

ApacheとTomcatのプロセス監視用のCloudWatchアラームを作成する

↓ 1. "アクション" のベルマークを選択してそれぞれのアラームを作成していきます。

↓ Apache のプロセスがしきい値を下回った場合に通知を行います。

↓ "Alarm状態" を選択し、"既存のSNSトピックを選択" にチェックを入れる。その他はデフォルトで問題ありません。

↓ Tomcat のプロセスがしきい値を下回った場合に通知を行います。

↓ “Alarm状態” を選択し、”既存のSNSトピックを選択” にチェックを入れる。その他はデフォルトで問題ありません。

↓このようにApache用のアラームとTomcat用のアラームが作成されていればOKです。

実際にアラーム発報させて監視できているか確認

CloudWatchのアラームが正常に動いているか確認するために意図的にアラートを起こさせます。

↓ 1.コマンドラインで以下のApacheとTomcatを停止させるコマンドを実行

$ sudo systemctl stop httpd
$ sudo systemctl stop tomcat

↓ このコマンドでどちらも停止されていることを確認

$ sudo systemctl status httpd
$ sudo systemctl status tomcat

↓ Apacheの停止状態を確認

↓ Tomcatの停止状態を確認

↓ CloudWatchのグラフからプロセスが停止したことを確認できます。

↓ ApacheとTomcatのプロセスが停止したためSNSの通知メールが届きました。

まとめ

わざとApacheとTomcatを停止させアラーム状態にさせた結果、
SNSの通知が指定のEメールアドレスに届きましたので、
しっかりプロセス監視が出来ているという事を確認できましたね。
今回はプロセス監視設定を行い、それが正しく機能しているかの確認でした。
少しでも誰かの参考になれば幸いです。
最後までこの記事を読んでいただきありがとうございました。

Last modified: 2023-05-10

Author