当記事は、2021年11月5日にリリースされたばかりのLogStare Collecetorv2.1.3にて新しく追加された機能である「CloudWatch監視」で弊社のログ分析基盤デモ環境を監視してみた時の記録です。
初めまして。Outisと申します。まず、自社製品とAWS、CloudWatchについて簡単に説明します。
目次
自社製品「LogStare Collector」について
LogStare Collectorは弊社が開発したNW監視・ログ収集ソフトウェアです。このソフトウェアは主にオンプレミス環境の監視やログ収集を実施するための主要なプロトコルに対応しています。
もちろん、クラウドであっても、プロトコルに対応していれば監視・ログ収集を実施出来ます。
しかしながら、クラウド、特にAWSサービスの監視を考えた時、従来利用されてきたプロトコル(主にSNMP)では監視できないサービスがあります。
それはSNMP監視がどのように実施されているかを踏まえるとよく分かるかと思います。
SNMPとAWSについてざっくりと
SNMPは、監視対象側でSNMPエージェントをインストール・有効化してSNMPマネージャからの取得要求に対してエージェントから応答を返すことで監視を実現しています。
サーバやNW機器ではSNMP設定を有効化すればエージェントも有効化されることになります。これによって、SNMPマネージャからの取得要求に対して応答出来ます。
AWSの場合、EC2であればエージェントのインストール・有効化は可能ですが、RDSやLambdaといったサービスではエージェントのインストールも何もありません。
つまり、SNMPを利用出来ません。それではSNMPで監視できないAWSサービスをどのように監視するのでしょうか。
CloudWatchとは
餅は餅屋という事でAWSには専用の監視サービスが用意されています。それがCloudWatchです。詳細は公式を確認するのが一番です。
実際にやってみた
AWSサービスの監視にはCloudWatchを利用するに限ります。
そこでLogStare Collectorではaws cliを利用してCloudWatchが収集した各種データを取り込む事でCloudWatch監視を実現しました。
機能のご紹介並びに利用方法含め、弊社のログ分析基盤LogStare Quintのデモ環境がEC2上で構築されているので、それを監視するまでの一連の記録を下記にまとめました。
監視準備①~CloudWatchから必要な情報を取得するための権限を用意する~
今回はオンプレミス環境にあるLogStare CollectorでCloudWatch監視を行います。
まず、CloudWatchから各種データを取得するための権限だけを有したユーザをIAMにて作成します。
なお、オンプレミス環境のLogStare CollectorでCloudWatch監視を実施する場合、AWS非推奨のアクセスキー/シークレットキー方式でアクセスする権限を付与する必要があります。
EC2インスタンス上に構築したLogStare Collectorであれば、必要な権限を備えたIAMロールを割り当てることで対応出来ますので、実際にはEC2インスタンス上から監視することを推奨します。
LogStare CollectorのAMIもありますのでそちらも是非ご利用いただければと思います。
※関連記事
【AWSマーケットプレイス上から無償版のLogStare Collectorを試す】
IAMにてCloudWatch監視用のポリシーを作成します。本記事ではポリシー名として「lsc-CloudWatch」と設定しました。
サービス「CloudWatch」からアクセスレベル>リストの「ListMetrics」、アクセスレベル>読み取りの「GetMetricStatistics」の2つを選択して次に進みます。
ポリシーのタグを設定して次に進みます。
ポリシーの名前と説明を入力してポリシーを作成します。
IAMにてCloudWatch監視用のユーザを作成します。本記事ではユーザ名として「lsc-CloudWatch」と設定しています。
ユーザ名を設定して、AWS 認証情報タイプの選択より「アクセスキー - プログラムによるアクセス」を選択して次に進みます。
アクセス許可の設定より「既存のポリシーを直接アタッチ」を選択し先程作成したポリシーを設定して次に進みます。
ユーザのタグを設定して次に進みます。
内容を確認して問題なければ「ユーザの作成」を押下します。
作成されたアクセスキー・シークレットキーをダウンロードします。
監視準備②~aws cliをインストールする~
次に、LogStare Collectorサーバにaws cliをインストールします。インストール方法は別途手順を作成しているので下記を参照してください。
【Linux系OSにaws cliバージョン2をインストールする方法について】
【AmazonLinux2において、aws cliのバージョンを1から2へ変更する方法について】
【WindowsServerにaws cliバージョン2をインストールする方法について】
監視準備③~アクセスキー・シークレットキーの登録~
次に、aws configureを利用してLogStare Collectorサーバでのaws cliセットアップを進めます。
aws configureを実行します。アクセスキーとシークレットキー、標準リージョン、標準出力を設定します。
[root@xyz ~]# aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
アクセスキー:先程取得した情報を設定します。
シークレットキー:先程取得した情報を設定します。
標準リージョン:監視対象のAWSサービスを利用しているリージョンを設定します。複数ある場合でも一旦は利用頻度の高いリージョンを設定してください。
標準出力:jsonを設定します。
※くどいかと思われますが、オンプレ版では上記方法で権限を付与していますが、あくまでAWS公式では非推奨となっています。実際に当機能を利用される場合、EC2にLogStare Collectorを構築し、IAMロールを付与する方法を採用していただければと思います。
監視準備④~準備完了と思ったら…~
ここまででCloudWatch監視の準備は完了です。
実際にLogStare Collectorで設定して監視を始めますと行きたかったのですが、想定外の事象が発生してしまいました…。
LogStare Collectorはaws cliのコマンドを実行してリソースを取得しているのですが、その際にsudoを併用しています。
そのためsudoersのsecure_pathにawsのパスを追記する必要があります。
which awsにてパスを確認する
[root@xyz ~]# which aws /usr/local/bin/aws
visudoにてsecure_pathに先程確認したパスを追記する
【変更前】
[root@xyz ~]# visudo ~省略~ # Defaults env_keep += "HOME" Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin #Defaults env_keep +="PATH
【変更後】
[root@xyz ~]# visudo ~省略~ # Defaults env_keep += "HOME" Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin/ #追記箇所 #Defaults env_keep +="PATH
監視設定①~グループ・デバイス登録~
aws cliにてCloudWatchからリソースを取得できる状態になったので、LogStare Collectorにアクセスし監視設定を行っていきます。
グループを追加します。手順は下記を参照してください。
今回は最上位グループとして「AWS」を作成しそのグループ配下にグループ「ap-northeast-1」を作成しました。
次にデバイスを登録します。手順は下記を参照してください。今回は先程作成したグループ「ap-northeast-1」にデバイス「LogStare Quint」を登録しました。
ちなみに、デバイス登録では色々と設定出来ますがCloudWatch監視で重要なのは監視間隔になります。というのも、設定された監視間隔毎にcliを実行するのですが、CloudWatchメトリクスの仕様上、ある程度監視間隔は決められた値しか設定できません。
今回は監視間隔として「300」を設定します。
※監視対象とするメトリクス毎にある程度弊社で確認した最適な監視間隔は下記より確認出来る監視対応メトリクス一覧より確認出来るので、そちらも是非ご参照いただければと思います。
下記リンクよりAWSサービス毎のメトリクスと推奨設定となる監視間隔をまとめた記事があります。どんどん対応サービスを増やしていきますのでお待ちください。
監視設定②~CloudWatch監視設定~
それでは、登録したデバイスにCloudWatch監視を設定していきます。
画面赤枠の「監視・収集」を押下します。
画面右側の「+」ボタンを押下します。
リストより先程追加したデバイス「LogStare Quint」を選択、監視リストから「CloudWatch監視」を選択します。
監視設定を行います。手順は下記を参照してください。設定が終了したら画面右下の「追加」を押下します。ここの設定で重要なのはディメンションです。
ディメンションという要素で、監視対象を特定します。ディメンションはインスタンスIDやボリュームID等で表示されますので、AWSコンソールを適宜参照しながら設定を行ってください。
必要な監視項目を追加し終えるまでCloudWatch監視を追加していきます。
監視設定③~ダッシュボードの追加~
LogStare Collectorではダッシュボードを追加することも出来ます。手順は下記を参照してください。
【ダッシュボードについて(LogStare Collector v2.1.0)】
CloudWatch監視設定、一通りの設定を終えて
ここまでで、LogStare CollectorでのCloudWatch監視設定の一連の流れは終了となります。実際にAWS上のログ分析基盤の監視設定を追加していきました。
ディメンション周りの設定や対応サービス・メトリクスが増えた時のUIをどうするかなどは今後検討していく必要がありますが、流れさえ覚えてしまえば現在の仕様でもそこまで煩雑さはないのではと思います。
(企画・検証を担当したので評価の目が曇っている可能性もありますが…)
現在、対応しているのはEC2とEBSのみですが、今後様々なAWSサービス・メトリクスに対応していきたいと思います。
もし、このサービスを対応して欲しいといった要望がありましたら是非お問い合わせいただければと思います。
ここまで閲覧いただき誠にありがとうございました。
記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。
当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。