LogicMonitorは、SSHプロトコルを利用したLinuxシステムの監視機能を提供します。SSHは、CPU、メモリ、ファイルシステムの使用率、稼働時間、スループットなど、さまざまなメトリックを収集します。

注意: SSH監視機能は、SNMPが設定されていないシステム専用に設計されています。SNMPはより堅牢な監視機能をネイティブに提供するため、このLinux SSHパッケージが提供するSSH監視機能を設定する必要はありません。

LinuxインスタンスをSSH用に設定するには、以下の手順が必要です。

  • Linuxホストを監視対象に追加する。
    監視にリソースを追加する方法の詳細については、を参照してください。 リソースの追加.
  • データソースを適用するために、Linuxホスト上でSSHを設定します。
    コレクターがリソースにアクセスする際には、パスワードではなくSSHの公開鍵と秘密鍵のペアを使用して認証を行う必要があります。 
  • SSHキーペアを生成し、公開鍵をLogicMonitorでリソースに割り当てられているコレクターのホストとリソースにコピーします。
    SSH キー ペアを使用するには、次のものが必要です。

注意: ssh-keygen -m PEM 従来のOpenSSH形式で鍵ペアを生成するコマンド

SSHを使用してLinuxリソースを監視するための要件

SSHを使用してLinuxリソースを監視するには、次の手順を実行します。

  • すべてのLinux SSHロジックモジュールの最新バージョンをインポートしてください。SSHモジュールのデータソースは、インストール後自動的にデータ収集を開始します。
    詳細については、を参照してください。 モジュールのインストール.
  • LogicMonitor内のLinuxリソースにSSH認証情報をプロパティとして割り当てることで、Linuxホスト上で認証を行います。
    詳細については、を参照してください。 認証資格情報の定義.
  • Linuxカーネルがバージョン2.6.24以降にアップデートされていることを確認し、以下のいずれかのLinuxディストリビューションを使用してください。
    • CentOSの
    • Debianの
    • Oracle Linux
    • RHEL
    • Ubuntu

推奨事項: 認証資格情報を定義する際は、アクセス権限のないユーザーアカウントを使用してください。このパッケージに含まれるLogicModuleは、SSHを使用してLinuxを監視するために特別な権限を必要としません。

他の監視パッケージのLogicModulesでは、追加の権限が必要になる場合があります。これは、Debian、Ubuntu Server、CentOSのクリーンインストール環境でのテストで確認済みですが、システムに適用される追加のセキュリティ強化策は考慮されていません。

Linux SSH コントロールグループとサービスステータスインスタンスのデータソース

Linux環境を監視するには、コントロールグループとサービスステータスのデータソースをLogicMonitorにリソースとして追加する必要があります。これは、以下のいずれかの方法で実行できます。

  • インスタンスを手動で追加する場合:リソースツリーを使用して、コントロールグループとサービスインスタンスを追加します。
  • Active Discovery の使用—コントロール グループとサービス インスタンス データ ソースの Active Discovery を有効にして、それらを自動的に検出して追加します。詳細については、以下を参照してください。 アクティブディスカバリー.

推奨事項: コントロールグループとサービスステータスのデータソースには、デフォルトではActive Discoveryスクリプトは含まれていません。LogicMonitorでは、監視したいコントロールグループとサービスのみを手動で追加することをお勧めします。

ホスト上のすべてのコントロールグループとサービスに対してActive Discoveryを自動的に有効にすると、監視対象インスタンスが大量に生成される可能性があります。これにより、アラートが過剰に生成され、インスタンス管理が困難になる場合があります。

環境内に管理可能な数のコントロール グループとサービスが含まれている場合は、データ ソース定義から Active Discovery を有効にし、対応する Groovy スクリプトをディスカバリ メソッド ドロップダウンの「SCRIPT」パラメーターとして埋め込むことができます。

詳細については、「Linux_SSH_Cgroups データソース定義のアクティブ検出スクリプト」および「Linux_SSH_ServiceStatus データソース定義のアクティブ検出スクリプト」を参照してください。

コントロールグループを見つけて手動でインスタンスとして追加する

注意: 以下の手順では、監視対象のコントロールグループの例としてDockerコンテナを使用します。Linuxコントロールグループを手動で監視するには、まず監視対象ホスト上のコントロールグループ名を特定する必要があります。このタスクでは、Linuxのsystemd-cgtopユーティリティを使用して、既存のコントロールグループatd.serviceを検索します。この値を、監視対象のコントロールグループ名に置き換えてください。

  1. 監視対象のLinuxホストでターミナルを開き、以下のコマンドを実行します。 systemd-cgtop -n1 -b
    このコマンドは、最も多くのリソースを使用しているコントロール グループを表示します。 -n1 フラグ(略して --iterations=1) は、実行するコマンドの 1 回のみの反復を表します。 -b フラグ(略して --batch) コマンドをバッチモードで実行するように強制します。
  2. コマンド出力から、監視したいコントロールグループを特定し、親コンテナのパスを除いてその名前をコピーします。
    例えば、出力に以下のような内容が表示された場合:
    system.slice/atd.service
    次に、次のコマンドを使用します。
    atd.サービス
    Dockerコンテナコマンド

注意: 対象のサービスに対して「CPUAccounting=1」と「MemoryAccounting=1」が有効になっていない限り、リソースアカウンティングは表示されず、systemd-cgtopによって表示されるデータは不完全になります。

  1. LogicMonitorで、 リソースツリー そしてLinuxホストを選択します。
  2. 「監視対象インスタンスの追加」を選択します。 管理 ドロップダウンメニュー。
    インスタンスを手動で追加する方法の詳細については、以下を参照してください。 インスタンスの追加.
    1. In 監視対象インスタンスの追加「コントロールグループ」と入力してください。 データソース フィールドに入力し、「atd.service」と入力します。 ワイルドカード値 フィールド。
    2. 入力します 名前 あなたの場合について。
  3. (オプション) 追加する  詳細説明 あなたの場合について。
  4. 選択 Save.
    成功した場合、インスタンスはリソースページのデータソースの下に表示されます。
    監視対象のコントロールグループインスタンスを持つSSHリソース
  1. データ収集を確認するには、 Rawデータ インスタンスのタブを選択し、 今すぐ投票.

LogicMonitorはデータを収集し、ポーリングが完了すると表示される結果を更新します。

インスタンスとしてのサービスの検索と手動追加

  1. コマンドラインで、次のコマンドを実行します。 
    systemctl list-units -a --type=service
    このコマンドは、システムの現在の状態に関係なく、systemdがロードした、またはロードを試みたすべてのユニットを表示します。 ザ・ -a フラグ(の省略形 --all)非アクティブなユニットを含むすべてのユニットがリストされていることを確認します。 ザ・ --type=service フラグはサービスユニットのみを返します。
  2. 結果として得られた出力から、監視したいサービスの名前をコピーします。 UNIT コラム。
    サービスインスタンスコマンド
  1. LogicMonitorで、 リソースツリー そしてLinuxホストを選択します。
  2. 「監視対象インスタンスの追加」を選択します。 管理 ドロップダウンメニュー。
    インスタンスを手動で追加する方法の詳細については、以下を参照してください。 インスタンスの追加.
  3. In 監視対象インスタンスの追加「サービスステータス」と入力してください。 データソース フィールドとコピーされたサービス名 ワイルドカード値 フィールド。
  4. 入力します 名前 あなたの場合について。
  5. (オプション) 追加する  詳細説明 あなたの場合について。
  6. 選択 Save.
    成功した場合、インスタンスはリソースページのデータソースの下に表示されます。
  7. データ収集を確認するには、 Rawデータ インスタンスのタブを選択し、 今すぐ投票.

注意: サービスを手動で追加するには、 linux.ssh.services リソースのプロパティ。

Linux_SSH_Cgroupsデータソース定義のアクティブディスカバリスクリプト

コントロールグループのデータソース定義でアクティブディスカバリを有効にするには、次のスクリプトを使用してください。

/*******************************************************************************
© 2007-2024 - LogicMonitor, Inc. All rights reserved.
 ******************************************************************************/
import com.santaba.agent.groovy.utils.GroovyScriptHelper as GSH
import com.logicmonitor.mod.Snippets
def azureHost = hostProps.get("auto.network.resolves") == "false" ? hostProps.get("system.azure.privateIpAddress") 
 : null
def loader = GSH.getInstance(GroovySystem.version).getScript("Snippets", Snippets.getLoader())
def remote = loader.load("lm.remote", "0").create(hostProps)
 .withHost(azureHost ?: hostProps.get("system.hostname"))
 .withKey(hostProps.get("ssh.pass") ? "" : hostProps.get("ssh.cert", "~/.ssh/id_rsa"))
 .withTimeout(15000)
// Expected output pattern capturing cgroup name, tasks, CPU, memory, input, output.
// Unless "CPUAccounting=1" and "MemoryAccounting=1" are enabled for the services in question, 
// no resource accounting will be available and the data shown by systemd-cgtop will be incomplete.
def line_pattern = ~/^\/?([^\/]+)\/(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*$/
def command_output = remote.exec('systemd-cgtop -n1 -b --cpu=percentage')
command_output.eachLine { line ->
 def matcher = line_pattern.matcher(line) ?: [:]
 // Process lines that contain a match except cgroups in user.slice
 if (matcher.size() > 0 && matcher[0][1] != "user.slice" && matcher[0][1] != "docker") {
 // Replace invalid wildvalue characters with underscores
 def wildvalue = matcher[0][2].replaceAll(/[:|\\|\s|=]+/,"_")
 def cgroupPath = matcher[0][1].replaceAll(/[:|\\|\s|=]+/,"_")
 println "${wildvalue}##${wildvalue}######auto.cgroup.path=${cgroupPath}"
 }
}
return 0
Groovy

Linux_SSH_ServiceStatusデータソース定義のアクティブディスカバリスクリプト

サービスステータスデータソースには、すべてのサービスを監視する際に調整が必要となるデフォルトのアラートが設定されています。サービスステータスデータソースの定義でアクティブディスカバリを有効にするには、次のスクリプトを使用してください。

/*******************************************************************************
© 2007-2024 - LogicMonitor, Inc. All rights reserved.
 ******************************************************************************/
import com.santaba.agent.groovy.utils.GroovyScriptHelper as GSH
import com.logicmonitor.mod.Snippets
def azureHost = hostProps.get("auto.network.resolves") == "false" ? hostProps.get("system.azure.privateIpAddress") 
 : null
def loader = GSH.getInstance(GroovySystem.version).getScript("Snippets", Snippets.getLoader())
def remote = loader.load("lm.remote", "0").create(hostProps)
 .withHost(azureHost ?: hostProps.get("system.hostname"))
 .withKey(hostProps.get("ssh.pass") ? "" : hostProps.get("ssh.cert", "~/.ssh/id_rsa"))
 .withTimeout(15000)
// Expected output pattern capturing cgroup name, tasks, CPU, memory, input, output.
// Unless "CPUAccounting=1" and "MemoryAccounting=1" are enabled for the services in question, 
// no resource accounting will be available and the data shown by systemd-cgtop will be incomplete.
def line_pattern = ~/^\/?([^\/]+)\/(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*$/
def command_output = remote.exec('systemd-cgtop -n1 -b --cpu=percentage')
command_output.eachLine { line ->
 def matcher = line_pattern.matcher(line) ?: [:]
 // Process lines that contain a match except cgroups in user.slice
 if (matcher.size() > 0 && matcher[0][1] != "user.slice" && matcher[0][1] != "docker") {
 // Replace invalid wildvalue characters with underscores
 def wildvalue = matcher[0][2].replaceAll(/[:|\\|\s|=]+/,"_")
 def cgroupPath = matcher[0][1].replaceAll(/[:|\\|\s|=]+/,"_")
 println "${wildvalue}##${wildvalue}######auto.cgroup.path=${cgroupPath}"
 }
}
return 0
Groovy

パッケージ内のLogicModules

LogicMonitorのLinux SSH監視パッケージは、以下のLogicModulesで構成されています。完全な監視を実現するには、これらのLogicModulesすべてがLogicMonitorプラットフォームにインポートされていることを確認してください。

表示名タイプ 詳細説明
addCategory_Linux_SSHプロパティソース「Linux_SSH」の値を system.categories SNMPが構成されていないため、Linuxホスト(AWSおよびAzureを除く)のプロパティが正しく識別されず、リソース/コレクターに設定されたプロパティを使用してSSH経由で接続しようとします。
Linux_SSH_情報プロパティソースカーネル名、カーネルリリース、カーネルバージョン、ハードウェア名、ハードウェアプラットフォーム、ノード名、プロセッサタイプ、オペレーティングシステムなどのLinuxシステム情報を収集します。
デバイスパフォーマンスのブロックデータソースSSHを使用してLinuxシステムのディスクとパーティションのI/Oを監視します。
コントロールグループデータソースLinux コントロール グループのリソースとタスクの使用状況を監視します。 systemd-cgtop 
CPUコアデータソースSSHを使用して、コアごとのCPU使用率を監視します。
CPU /メモリデータソースSSHを使用してLinuxのCPUとメモリの使用率を監視します。
ファイルシステムデータソースLinuxファイルシステムの使用率メト​​リックを監視します。
ネットワークインターフェイスデータソーススループット、パケット送信、エラー、パケット損失、衝突、動作状態など、Linuxネットワークインターフェースのメトリックを監視します。
サービスステータスデータソースLinux systemdサービスを監視します systemctl 
TCP / UDP統計データソースnetstatからTCPおよびUDP統計を取得します。
稼働時間データソースSSHを使用してLinuxホストの稼働状況を監視します。

LogicMonitorは、このパッケージのデータソースによって追跡されるさまざまなメトリックに対して静的なデータポイントのしきい値を設定する際に、テクノロジーオーナーのベストプラクティスKPI推奨事項に従います。

注意: 環境に合わせて、あらかじめ定義されたしきい値を必要に応じて調整してください。

データポイントのしきい値の調整に関する詳細については、以下を参照してください。 データポイントの静的しきい値。