OSコマンド・コレクションの設定
管理エージェント・ホストでOSコマンド・スクリプトを実行し、Oracle Log Analyticsのログ形式でコマンドの連続出力を収集する場合は、独自のスクリプトを作成するか、管理エージェント用のOracle Log Analyticsプラグインで使用可能なOracle定義スクリプトのいずれかを使用します。
トピック:
OSコマンド出力の収集を設定するための前提条件
ログ収集を設定する前に、次の前提条件タスクを完了します。
-
OSコマンドで構成されるカスタム・スクリプトを作成します。その出力は、Oracle Log Analyticsでログとして収集できます。スクリプトのSTDOUTおよびSTDERRの出力は、エージェントによってペイロードとしてクラウドに送信されます。STDOUTおよびSTDERRペイロードには、1つのログ・エントリまたは複数のログ・エントリを指定できます。Oracle Log Analyticsソースで使用されているパーサーで解析できることを確認します。さらに、スクリプトはエラー状態を処理し、前提条件を確認できる必要があります。
カスタム・スクリプトを
logan/scripts/os_cmdフォルダに格納します。したがって、スクリプトを格納するための絶対パスは次のとおりです。- Oracle Management Agentの場合:
/opt/oracle/mgmt_agent/usercontent/logan/scripts/os_cmd - Oracle Cloud Agent- 管理エージェント・プラグインの場合:
/var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/usercontent/logan/scripts/os_cmd
または、Oracle定義スクリプトの使用を検討する場合は、それぞれのOracle定義ソースにすでに含まれています。使用可能なOracle定義スクリプトおよびそれぞれのOracle定義ソースについては、「Oracle定義OSコマンド・スクリプト」を参照してください。
Oracle定義のOSコマンド・スクリプトをカスタマイズするステップは、「Oracle定義のOSコマンド・スクリプトのカスタマイズ」を参照してください。
- Oracle Management Agentの場合:
-
スクリプト内の特定のコマンドを実行するには、特殊なファイルアクセス権が必要になる場合があります。このような権限をエージェント・ホストに手動で構成します。スクリプトおよびスクリプトが実行するその他のコマンド/スクリプトには、管理エージェント・ユーザーに対する実行権限が必要です。
- 一部のOSコマンド・スクリプトでは、管理エージェント・ホストでコマンドを実行するために
sudoが必要です。ステップは、OSコマンド・スクリプトのパスワードなしsudoの構成を参照してください。
OSコマンド・ログを収集するための全体的なフロー
OSコマンド・スクリプトの出力を収集するための大まかなタスクを次に示します。
-
OSコマンド・スクリプトを実行するホストに管理エージェントをインストールし、Oracle Log Analyticsで収集する必要がある出力を生成します。管理エージェントを使用した連続ログ収集の設定を参照してください。
-
Oracle Log Analyticsでエージェント・ホストを識別するエンティティを作成します。エンティティは、スクリプトが実行される管理エージェントと同じホスト上にある必要があります。リモートOSコマンドの実行はサポートされていません。通常、エンティティは管理エージェントのインストール時に自動的に作成されます。「ログ出力リソースを表すエンティティの作成」を参照してください。
- スクリプトの出力を解析できるパーサーを作成します。このパーサーは、次のステップで識別されるソースで使用する必要があります。パーサーの作成を参照してください。
コレクションにOracle定義スクリプトを使用することを検討する場合は、パーサーも含まれているそれぞれのOracle定義ソースにすでに含まれています。使用可能なOracle定義スクリプトおよびそれぞれのOracle定義ソースについては、「Oracle定義OSコマンド・スクリプト」を参照してください。
Oracle定義のOSコマンド・スクリプトをカスタマイズするステップは、「Oracle定義のOSコマンド・スクリプトのカスタマイズ」を参照してください。
- 既存のソースを識別するか、OSコマンド・タイプのログ・ソースを作成します。OSコマンド・ソースの作成を参照してください。
収集にOracle定義スクリプトを使用することを検討する場合は、それぞれのOracle定義ソースにすでに含まれています。使用可能なOracle定義スクリプトおよびそれぞれのOracle定義ソースについては、「Oracle定義OSコマンド・スクリプト」を参照してください。
Oracle定義のOSコマンド・スクリプトをカスタマイズするステップは、「Oracle定義のOSコマンド・スクリプトのカスタマイズ」を参照してください。
- OSコマンド収集の収集間隔を設定するようにエージェント収集プロパティcustomized_scheduleを構成するかどうかを確認します。デフォルト値は
30 secondsです。エージェント・コレクション・プロパティを使用して、エージェント・レベル、ソース・レベル、エンティティ・レベルまたは関連レベルでスケジュールを更新できます。「変更できるエージェント・プロパティ」および「エージェント・プロパティの変更」を参照してください。 -
以前に作成または選択したソースにエンティティを関連付けます。新しいソースとエンティティのアソシエーションの構成を参照してください。
アソシエーションが完了すると、エージェントはOSコマンドの実行を定期的に開始し、コマンドのSTDOUTおよびSTDERRがログ・データとして収集され、そのログ・データがOracle Log Analyticsへのフローを開始します。
-
前に作成したOSコマンド・ソースを選択して、ログ・エクスプローラでログ・データを表示します。ソース属性によるログのフィルタを参照してください。
設定の完了後にログ・データがログ・エクスプローラに表示されない場合は、エージェント収集の警告に問題がないかチェックできます。次の警告は、特にOSコマンドの出力収集に関連しています。
-
外部アプリケーション実行の失敗: スクリプトの実行中にエラーが発生しました。または、OSコマンドはサポートされていません。
-
外部アプリケーションが見つかりません: スクリプトが見つかりません。スクリプトに対する読取り/実行権限がありません。
「エージェント収集警告の表示」を参照してください。
OSコマンド・コレクションの設定時に考慮する重要な要素
-
スクリプトでコマンドの完全なパスを使用します。たとえば、
sudoのかわりに/bin/sudoを使用します。 -
スクリプトは、管理エージェントが実行しているのと同じユーザーとして実行されます。これは、スクリプト内のファイルの読取りまたは書込み中に重要です。
-
標準出力(STDOUT)および標準エラー(STDERR)でスクリプトによって生成された出力は、ログ・エントリを抽出するためのテキストとして収集されます。
-
次の単語または接頭辞は、OSコマンドまたはスクリプト名ではサポートされていません:
sh、bash、csh、zsh、ksh、dash、cmd -
OSコマンドまたはスクリプト名では、次の文字はサポートされていません:
|、&、;、>、< -
次の親ディレクトリ・トラバーサル順序は、OSコマンドまたはスクリプト名(
/../または\..\)ではサポートされていません。また、OSコマンドは/..または\..で終了できません。 -
次の環境変数がエージェントからスクリプトに渡されます。この変数は、スクリプトで使用できます。
-
LA_SOURCE_COMMAND_ID: これは、ログ・ソース内のコマンドの内部生成されたパターンIDです。同じスクリプトが複数のコマンドで指定されている場合は、スクリプト・インスタンスを区別するために使用できます。
-
OSコマンド・ソースの作成
このタイプのソースを作成して、エージェント・ホストでOSコマンド・スクリプトをログの形式で実行することで、出力の継続的な収集を設定します。
-
ナビゲーション・メニューを開き、「オブザーバビリティおよび管理」をクリックします。「Log Analytics」で、「管理」をクリックします。
-
管理リソースが、左側のナビゲーション・ペインにある「管理」の下にリストされます。「ソース」をクリックします。
「ソース」ページが開きます。「ソースの作成」をクリックします。
-
「名前」フィールドに、ソースの名前を入力します。
オプションで、説明を追加します。
-
「ソース・タイプ」リストから、「OSコマンド」を選択します。
-
「エンティティ・タイプ」フィールドをクリックして、このログ・ソースに対するエンティティのタイプを選択します。後で、このソースをエンティティに関連付けて管理エージェントを介したログ収集を有効にする場合、このタイプのエンティティのみがアソシエーションに使用されます。1つのソースは、1つ以上のエンティティ・タイプを持つことができます。エンティティは、スクリプトを実行する管理エージェントと同じホスト上にある必要があることに注意してください。リモートOSコマンドの実行はサポートされていません。
-
「パーサー」フィールドをクリックし、ログのフィールドを最も適切に取得するパーサー名を選択します。
次のパーサー関数はサポートされていません。
- JSONまたはXMLブロック・サイズが1MBを超え、ヘッダーがブロックの最後またはヘッダーが本文をラップする場合、ヘッダー詳細関数はサポートされません。
- 時間オフセット
-
「コマンド」タブを使用して、OSコマンド・スクリプトと、ログ形式で出力を収集するためにエージェント・ホストで実行する必要がある詳細を含めます。
-
コマンド: エージェント・ホストに格納されているOSコマンド・スクリプトのパスを指定します。カスタム・スクリプトの場合、パスはカスタム・スクリプト・フォルダに対する相対パスである必要があります。「コマンド」フィールドには、親ディレクトリ・トラバーサル順序
/../または\..\を含めることはできません。コマンドの最後に/..または\..を指定することはできません。パス例:
カスタム・スクリプトの絶対パスが
/opt/oracle/mgmt_agent/usercontent/logan/scripts/os_cmd/my_script1.shの場合は、このフィールドにパスmy_script1.shを指定します。OSコマンド・カスタム・スクリプトおよびエージェント・ホストに格納する場所の詳細は、OSコマンド出力の収集を設定するための前提条件を参照してください。
-
引数: オプションで、スクリプトの引数を指定し、各引数を空白文字で区切ることができます。
-
説明: オプションで、このコマンドおよび引数のセットについてわかりやすい説明を指定します。
OSコマンド・スクリプトの詳細を指定した後、その行に対応するチェック・ボックスを有効にして、設定を有効にします。
-
-
データ・フィルタを追加します。ソースでのデータ・フィルタの使用を参照してください。
-
拡張フィールドを追加します。ソースでの拡張フィールドの使用を参照してください。
-
フィールド・エンリッチメント・オプションを構成します。フィールド・エンリッチメント・オプションの構成を参照してください。
-
ラベルを追加します。ソースでのラベルの使用を参照してください。
-
「保存」をクリックします。
Oracle定義のOSコマンド・スクリプトのカスタマイズ
Oracle定義のOSコマンド・スクリプトは、Oracleによって提供および保守されます。これらのスクリプトは、Oracle Log Analyticsプラグイン・ディレクトリ内の場所では変更しないでください。
変更が必要な場合は、スクリプトをユーザー定義のOSコマンド・スクリプト・ディレクトリにコピーし、コピーしたスクリプトをカスタマイズして、保持できるログ収集用のカスタム・スクリプトとして使用します。
スクリプト・フォルダの場所:
| エージェント・タイプ | Oracle定義のスクリプト・フォルダ | ユーザー定義のOSコマンド・スクリプト・ディレクトリ |
|---|---|---|
| Oracle Management Agent | /opt/oracle/mgmt_agent/agent_inst/config/destinations/OCI/services/logan/<version>/scripts/os_cmd |
/opt/oracle/mgmt_agent/usercontent/logan/scripts/os_cmd |
| 管理エージェント・プラグインを使用したOracle Cloud Agent | /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/config/destinations/OCI/services/logan/<version>/scripts/os_cmd |
/var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/usercontent/logan/scripts/os_cmd |
スクリプトのカスタマイズ:
Oracle定義スクリプトをカスタマイズするには:
-
OSコマンド・ソースで、カスタマイズするOracle定義スクリプトを特定します。
-
管理エージェント・ホストで、Oracle定義のスクリプト・フォルダに移動します。
-
scripts/os_cmdフォルダで、スクリプトを探し、そのフォルダ・パスをメモします。 -
ユーザー定義のOSコマンド・スクリプト・ディレクトリで、Oracle定義のスクリプトと同じフォルダ構造を作成します。
-
Oracle定義スクリプトを、ユーザー定義のOSコマンド・スクリプト・ディレクトリ内の一致するフォルダにコピーします。
-
コピーしたスクリプトを編集します。
-
スクリプトで
linux_script_helper.shなどのヘルパー・スクリプトを使用する場合は、ヘルパー・スクリプトをユーザー定義のOSコマンド・スクリプト・ディレクトリにコピーし、必要に応じて更新します。 -
コピーしたスクリプトおよびヘルパー・スクリプトに、管理エージェント・ユーザーのexecute権限を付与します。
カスタマイズ後の処理:
ユーザー定義のOSコマンド・スクリプト・ディレクトリに同じフォルダ構造およびスクリプト名を保持する場合は、OSコマンド・ソースを更新する必要はありません。エージェントは、コピーされた顧客管理スクリプトを使用してログを収集します。
別のフォルダ構造またはスクリプト名を使用する場合は、新しい相対パスを使用するようにOSコマンド・ソースの「コマンド」フィールドを更新します。
OSコマンド・スクリプト用のパスワードなしのsudoの構成
一部のOSコマンド・スクリプトでは、管理エージェント・ホストでコマンドを実行するためにsudoが必要です。スクリプトにsudoが必要な場合は、ログ収集にスクリプトを使用する前に、エージェント・ユーザーにパスワードなしのsudoを構成します。
組織のセキュリティ・ポリシーに従って、パスワードなしのsudoを構成します。
sudoersエントリを追加します:
次の手順に従ってください。これは、エージェント・ユーザーがすべてのコマンドに対してパスワードsudoを使用できるようにする方法の1つです。sudo visudoを使用してsudoersファイルを編集します。
エージェント・タイプのエントリを追加します。
| エージェント・タイプ | 入力 |
|---|---|
| スタンドアロン管理エージェント | mgmt_agent ALL=(ALL) NOPASSWD: ALL |
| 管理エージェント・プラグインを使用したOracle Cloud Agent | oracle-cloud-agent ALL=(ALL) NOPASSWD: ALL |
設定を確認します:
エージェント・タイプの検証コマンドを実行します。
スタンドアロンの管理エージェント:
sudo -u mgmt_agent /bin/bash -lc 'sudo -n true && echo "sudo setup OK"'管理エージェント・プラグインを使用するOracle Cloud Agentの場合:
sudo -u oracle-cloud-agent /bin/bash -lc 'sudo -n true && echo "sudo setup OK"'予想される出力:
sudo setup OKコマンドが予期した出力を返す場合、パスワードなしのsudoがエージェント・ユーザーに対して構成されます。