OCI Log AnalyticsでOracleDBのログを分析する


前回の記事では、Database ManagementでOracle Databaseを監視するように設定しましたが、今回はアラートや監査ログ、トレースログといったOracle Databaseの監視に必要な各種ログをLog Analyticsに取り込んで分析できる環境を構築します。

IAMポリシーの設定

こちらを参考にLog Analyticsの動作に必要な動的グループ、ポリシーの作成

Management Agent のインストール

管理エージェントはこちらを参考にインストール

※今回は、管理エージェントのmgmt_agentユーザーがOracleのファイルにアクセスするので、パーミッションを割り当てておく

例) アラートログにsetfaclでmgmt_agentにread権限を割り当てる
sudo setfacl -R -m u:mgmt_agent:rx /u01/app/oracle/diag/rdbms/oo4oci/oo4oci/trace

#File Readできるか確認しておく
sudo -u mgmt_agent head -5 /u01/app/oracle/diag/rdbms/oo4oci/oo4oci/trace/alert_xxxx.log

Log AnalyticsにOracle Databaseのアラートログを取りこむ

  • まず、Oracle Databaseのエンティティを作成する。ログ・アナリティクス -> 管理 -> エンティティの作成をクリック

  • エンティティの作成項目。赤字の部分は必須入力項目

    • エンティティ・タイプはOracle Databaes Instanceを指定する
    • Host/Port/ServiceNameは、Unified Auditのアクセスの際に必要になるので間違えないように
  • ログ・グループを作成する。管理 -> ログ・グループ -> 作成

  • ソースにエンティティを追加する。管理 -> ソース -> Database Audit Logsのソースを見つけてクリックする

  • 編集をクリック

  • アラートログへのパスが正しい確認しておく。直接絶対パスで追加しても可。確認後、前の画面に戻る

  • Unassociated Entitiesに作成したエンテイティが表示されているのでAdd associationをクリック

  • 正しく設定できていれば、アラートログがログ・エクスプローラに表示されている

Oracle Databaseの監査ログ(Unified Audit)を取りこむ

  • Unified Auditは、データベース内にある監査表のため、まずクレデンシャルを準備する必要がある
#agent_dbcreds.jsonというファイル名で以下の情報を含むJSONファイルを作成
エンティティ名は前述で作成した名前、DBユーザーはUnified Auditビューにアクセスできるユーザーを指定
SYSTEMユーザなどでもOK

{
    "source": "lacollector.la_database_sql",
    "name": "LCAgentDBCreds.エンティティ名",
      "type": "DBCreds",
    "usage": "LOGANALYTICS",
    "disabled": "false",
    "properties": [
        {
            "name": "DBUserName",
            "value": "CLEAR[DBユーザ]"
        },
        {
            "name": "DBPassword",
            "value": "CLEAR[パスワード]"
        },
        {
            "name": "DBRole",
            "value": "CLEAR[normal]"
        }
    ]
}

#管理エージェントをインストールしたサーバーで作成したJSONファイルを使って実行
cat agent_dbcreds.json | sudo -u mgmt_agent /opt/oracle/mgmt_agent/agent_inst/bin/credential_mgmt.sh -o upsertCredentials -s logan

    Effect Credential         Source
---------- ------------------ -------------------------------------------------
     ADDED LCAgentDBCreds.OracleDB1 lacollector.la_database_sql
             Type: DBCreds [DBUserName, DBPassword, DBRole]
1 credential(s) added to the logan service.
  • OracleDB 18c以上の場合は、ソースの修正が必要。Unified DBのソースを検索し、Unified DB Audit 12.2"の複製をクリック -> "はい、ソースを複製"のメッセージを選択

  • SQL問い合わせを編集。FROM以降の部分が、SYS.UNIFIED_AUDIT_TRAILになっているので、AUDSYS.UNIFIED_AUDIT_TRAILに変更して、構成をクリックする

  • 順序列をEVENT_TIMESTAMPに変更して完了 -> ソースの作成

  • Copyした12.2のソースをクリックし、先ほどと同じ手順でUnassociated EntitiesからAdd associationを実行する

  • 正しく設定できていれば、Unified Auditのログ・エクスプローラに表示されている

ログ・エクスプローラーの使い方についてはこちらを参考にしてみて下さい。