OCIに作成したインスタンスのシスログを確認してみます。

みなさま、こんにちは。Oracle Cloud使ってますか?
インスタンスの監視ってどうしようか迷いませんか?

今回は、OCI上に作成したインスタンスのログの確認・通知「OCIの標準機能で」行う方法を試してみます。

また、同様の設定を弊社で取り扱っておりますHinemosでも行ってみようと思います。
↑こちらは次回ご紹介します。

今回の目標です

目標

  • OCI上に作成したLinuxインスタンスの/var/log/messagesをOCIから確認する
  • 特定の文字列を含んだログを検出したときにメール発報する

前提

  • 監視対象のインスタンスのホスト名は「client-dekirumon」です。
  • インスタンスのOSはOracle Linux8です。
  • インスタンスにはSSHログインできることとします。
  • OCI上のVCN、パブリックサブネット、インスタンスは作成済みとします。
  • OCIの操作は、Administratorsグループに所属しているユーザーで行うものとします。
  • 通知用のトピックは作成済みとします。

トピックの作成は以下を参考にしてみてね
クラウド・ガードを設定してみました①~セキュリティリスクの検知~
OCIのモニタリング機能 ~メトリック監視~

ロギングを使ってみます。

まずはロギングを使用して、ログの確認をしてみます。
参考:OCIチュートリアル

エージェントを有効化します

作成済みインスタンスでOS管理を有効にします。
OCI管理画面にログインし、インスタンスの詳細画面を開きます。
「Oracle Cloudエージェント」タブで、カスタム・ログのモニタリングが有効になっていることを確認してください。無効の場合は有効にします。

動的グループを作成します。

動的グループを作成します。あらかじめ監視対象のインスタンスのOCIDを確認してください。
名前:任意
説明:任意
一致ルール:下で定義したいずれかのルールに一致
ルール:instance.compartment.id = ‘<コンパートメントOCID>’

ポリシーの設定をします。

ポリシーを作成します。
名前:任意
説明:任意
コンパートメント:インスタンスが配置されているコンパートメントを選択します。
ルール:Allow dynamic-group <上記で作成した動的グループ名> to use log-content in compartment <コンパート名>

カスタムログを作成します。

まずログの保存先となるログ・グループを作成します。
「ロギング」-「ログ・グループ」を選択します。
「ログ・グループの作成」します。
名前などは任意で入力してください。

カスタム・ログを作成します。
「ロギング」-「ログ」を選択し、「カスタム・ログの作成」をクリックします。

カスタム・ログの作成です。
カスタム・ログ名:任意
コンパートメント:任意
ログ・グループ:上記で作成したログ・グループを選択
入力したら「カスタム・ログの作成」をクリックします。

エージェント構成の作成画面に遷移します。
構成名:任意
説明:任意
コンパートメント:任意

ホストグループでは、「グループ・タイプ:動的グループ」を選択し、
先程作成した動的グループを指定します。

エージェント構成では、次の通りに入力します。
入力タイプ:ログ・パス
名前の入力:任意
ファイル・パス:/var/log/messages

入力が終わったら、「エージェント構成の作成」をクリックします。

ログの確認をしてみます。

作成したログを選択します。
しばらく待つと、ログが表示されます。

クライアントマシンにログインして、以下のコマンドを実行します。

# logger "test"

OCIの管理画面から、ログが確認できます。

ログに書かれたすべての内容が表示されるんだね!

ログ・アナリティクスを使ってみます

もう少しログを確認しやすくするために、ログ・アナリティクスを使ってみます。
ログ・アナリティクスはあらかじめ有効化されているものとして進めます。
参考:OCIチュートリアル

IAMポリシーと動的グループを編集します

動的グループ、ポリシーともにログ・アナリティクスを有効にしたときに作成されるリソースを変更することとします。
動的グループを以下の通り編集します。
一致ルール:下で定義したいずれかのルールに一致
ルール:resource.type=’managementagent’
resource.compartment.id = ‘<コンパートメントOCID>’

IAMポリシーを以下の通り編集します。
ALLOW DYNAMIC-GROUP (DRG名) TO USE METRICS IN TENANCY
ALLOW DYNAMIC-GROUP (DRG名) TO {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} IN TENANCY

エージェントを有効化します

OCI管理画面にログインし、インスタンスの詳細画面を開きます。
「Oracle Cloudエージェント」タブで、カスタム・ログのモニタリングが有効になっていることを確認してください。無効の場合は有効にします。

OCIコンソールのメニューから「監視および管理」-「管理エージェント」-「エージェント」を選択します。
エージェントのメニューから、「プラグインのデプロイ」を選択します。

「Logging Analytics」にチェックが入っていない場合は、チェックをいれ「更新」をクリックします。

インスタンスにログインし、管理エージェントがログファイルを読み取れるように権限を付与します。
例)

 # sudo setfacl -m u:oracle-cloud-agent:r /var/log/*

ログ・アナリティクスの設定をします

「監視および管理」-「ログ・アナリティクス」-「管理」を選択します。
「リソース」-「エンティティ」をクリックします。

エンティティができています。

管理画面に戻り、「データの追加」をクリックします。

「Linuxコア・ログ」を選択します。

該当のエンティティ名にチェックを入れ「次」をクリックします。

ログ収集用のソースは、任意で選択してください。
ログ・グループは、「新規作成」をクリックすると新しく作成することができます。
「ログ収集の検証と構成」をクリックします。

しばらく待つと結果が表示され、設定が完了します。
「ログ・エクスプローラに移動」をクリックします。

しばらく待つと、ログが収集されグラフが表示されます。
「Log Source」をクリックし、「ドリル・ダウン」を選択すると、ログの内容を確認することができます。

グラフが表示されないときはポリシーの設定を見直してみてね!

通知設定してみます

サービスコネクタハブを作成します。

「ロギング」-「サービスコネクタ」を選択します。
「サービスコネクタの作成」をクリックします。

設定を行います。
コネクタ名:任意
説明:任意
リソース・コンパートメント:任意
ソース:ロギング
ターゲット:通知

「ソースの構成」で、上で作成したログ・グループとログを選択します。
「拡張モードに切り替え」をクリックします。

後ろに以下を追記します。
| data.message =’test’

※’test’と一致したメッセージがあった時にメール発報されます。

「ターゲットの構成」で、トピックを選択します。
メッセージの書式でポリシーを作成する旨のメッセージが表示された場合は「作成」をクリックします。
全て入力が終わったら「作成」をクリックします。

作成できました!

サービスコネクタについては、こちらも参考にしてみてね

 

 

インスタンスにログインし、以下のコマンドを実行します。

# logger "test"

メールが届きます。

最後に

今回はOCIのロギングおよびログ・アナリティクスを使用して、インスタンスの/var/log/messagesを確認する方法をご紹介しました。
またサービスコネクタを利用した通知方法についてご紹介しました。

次回は、Hinemosを使ってログ監視する方法についてご紹介します。お楽しみに!

当社ではOCIHinemos両方とも取り扱っております。
もしOCIHinemosについて興味がありましたが、ぜひこちらからお問い合わせください!