LogicMonitor + Catchpoint: 自律型ITの新時代へ

さらに詳しく

UDM Pro のメモリ使用量: パフォーマンスの急上昇を監視して修正する方法

UDM Pro のメモリや CPU の使用率が高くなって困っていませんか? 使用状況を監視し、問題を早期に発見して、予期せぬ速度低下を回避する方法をご紹介します。
所要時間
2018 年 12 月 18 日

UDM Pro の応答が遅くなったり、通常よりも頻繁に再起動する必要がある場合は、メモリまたは CPU の使用率が高いことが根本的な原因である可能性があります。

どうして?

UniFi の組み込みツールでは、提供される可視性が限られているためです。 

コントローラー ダッシュボードにはいくつかの基本的な統計情報が提供されますが、履歴データの保持やアラートの生成は行われず、速度低下が一時的なものか、それとも大きなパターンの一部なのかを判断するのにも役立ちません。

また、複数のサイトや顧客ネットワークをサポートしている場合、一元的な可視性やアラートがないと小さな問題が急速に拡大する可能性があるため、そのレベルの不確実性は管理できません。

この記事では、UDM Pro の CPU とメモリの使用状況をリアルタイムで監視し、それらのメトリックを解釈し、継続的な可視性とトラブルシューティングの迅速化のために外部監視を設定する方法について説明します。

TL; DR

UDM ProのCPUとメモリのスパイクは、UniFi Protect、DPI、IDS/IPSなどのリソースを大量に消費するサービスによって発生することが多い。
UniFiの組み込みダッシュボードは、履歴の追跡や実際のアラート機能がなく、限られた洞察しか提供しません。
SSHスクリプトまたはLogicMonitorモジュールを使用した回避策により、UniFiデバイス全体の完全な監視機能が提供されます。
UDM SEまたはPro Maxにアップグレードすると、リソース負荷の処理が改善され、頻繁なトラブルシューティングの必要性が軽減される可能性があります。

UDM ProでCPUメモリを監視する理由

メモリとCPUの使用率を監視せずにUDM Proを実行するのは、燃料計のない飛行機を飛ばすようなものです。燃料計は正常に動作しているように見えますが、それが故障するまでは正常に動作しません。これらの指標は、パフォーマンスの低下や完全な失速など、何か問題が発生した際に早期の兆候を示します。

メモリがいっぱいになったりCPU使用率が急上昇したりすると、 ディープパケットインスペクション(DPI)、IDS/IPS、またはUniFi Protectは、フリーズ、クラッシュ、または異常な動作をすることがあります。ユーザーから苦情が出たり、ネットワークが切断されたりするまで、すぐには気づかないかもしれません。

一般的な症状には次のようなものがあります:

  • 明らかな理由もなくメモリが90%以上を推移
  • トラフィックが少ない時間帯にCPU使用率が最大になる
  • 頻繁に手動で再起動する必要があるシステム

UniFiの内蔵ダッシュボードにはこれらの機能の一部が表示されますが、機能には限界があります。履歴データもアラートも機能せず、時間の経過に伴う変化を簡単に追跡する方法もありません。

UDM Proの監視オプション

UniFiダッシュボードは基本的なCPUとメモリの使用状況を表示しますが、パフォーマンスインシデント発生時にはあまり役に立ちません。単一の時点のスナップショットを提供するだけです。そのため、一部のユーザーはUniFi APIを使用して可視性を拡張しようとします。 

このアプローチはより詳細なデータを返すことができますが、大きなオーバーヘッドが発生します。各API呼び出しはUniFiコントローラーに直接アクセスするため、複数のデバイスを監視したり、頻繁にポーリングしたりするとパフォーマンスに影響する可能性があります。また、単一障害点(SPO)も発生し、コントローラーがオフラインになると監視が完全に停止します。

中には試す人もいる SNMPしかし、UDM ProのSNMPサポートは一貫性がありません。Ubiquitiの実装では、信頼性の高いメモリメトリクスを公開できないことが多く、CPUデータが断続的になったり、完全に欠落したりすることがあります。

タイムラインではなくスナップショットが表示されます。そのため、速度低下が偶然なのか、それともより大きな問題の始まりなのか、判断できません。

LogicMonitor で高度な監視を設定する

UDM Proに組み込まれている監視オプションは、一見すると十分です。しかし、履歴データ、プロアクティブなアラート、あるいはインフラ全体の一元的な可視性を求めるなら、それ以上の機能が必要になります。

そして、LogicMonitor はそれを実現します。 

Ubiquiti が SNMP 経由でネイティブにデータを公開していなくても、UniFi デバイスの CPU とメモリの使用状況を追跡できます。 

では、ここで LogicMonitor をどのように活用できるでしょうか? 

拡張性を活用することで、セキュアシェル(SSH)経由で安全かつ軽量なスクリプトを実行できます。そのためには、以下の2つの方法があります。

スクリプトをスキップしてすぐに監視を開始したい場合は、 ロジックモニター交換 これを実行するための既製のモジュールが用意されています。必要な手順は次のとおりです。

  • コードを検索する 6H7TE3 および J9NFZJ LM Exchange で。
  • ポータルにインポートします。 

これらのモジュールは、安全なSSH認証を使用して、UniFiデバイスからCPUとメモリのメトリクスを直接収集します。テスト済みでコミュニティによるサポートも受けており、ゼロから構築するよりもはるかに高速です。

PowerShell と SSH 経由でカスタム スクリプトを実行する

DIYアプローチを好む場合や、データの収集方法をカスタマイズする必要がある場合は、Patrik Nordlundが開発したPowerShellベースの方法を使用できます。 リチューンAB.

Retune ABは、さまざまな ユビキタス 企業やブロードバンド環境向けの無線データ通信製品を含む、様々なデバイスが存在します。当然のことながら、チームはこれらのデバイスを監視スタックに組み込みたいと考えていました。 

しかし、Ubiquiti の SNMP 実装では、デバイスの健全性を確認するための 2 つの重要な値である信頼性の高いリアルタイムの CPU またはメモリ メトリックが提供されないことがわかりました。

Retune ABのチームは、CPUとメモリの使用量が急上昇し、無期限に高い状態が続くというインシデントを複数回経験しました。リソースを解放するには、手動で再起動するしかありませんでした。

LogicMonitor アラートを構成することで、これらの状況を早期に検出し、ユーザーに影響が出る前に対処できるようになりました。

テスト中に、チームは他のUbiquitiユーザーがCPU使用率の平均(1分、5分、15分間隔)を示す非公式OIDを公開していることも発見しました。しかし、これらの値はRetune ABのデバイス間で一貫して動作しませんでした。メモリの可視性はさらに制限されており、公式のUBNT-Unifi-MIBにはCPUやメモリデータへの参照が全くありませんでした。

LogicMonitor の拡張性のおかげで、チームはコレクターから実行される PowerShell スクリプトを使用した実用的な回避策を見つけました。 

あなたもこれを次のように実行できます:

  • PowerShell で SSH を使用できるように、コレクターに POSH モジュール (posh-ssh) をインストールします。
  • アクセス ポイントに接続します。
    • 認証はSSHキーペアで行われます。公開鍵はUnifiコントローラー経由でAPにアップロードされ、秘密鍵は強力なパスフレーズで保護された状態でコレクターに保存されます。
    • スクリプトで$ keyFileを編集するか、次の場所にあるコレクターのインストールディレクトリに秘密鍵を配置できます。 LogicMonitor \ Agent \ bin \ Local_Disk_On_Collector \ privatekey_LM.key
    • パスフレーズとユーザー名は、LogicMonitor にプロパティ unifi.sshuser と unifi.sshpassphrase.key として追加されるため、スクリプト内で直接公開されることはありません。
  • ネイティブ Linux コマンドを使用して、CPU とメモリのメトリックを取得します。
  • 収集されたデータはパーセンテージ値を計算するためにフォーマットされ、LogicMonitor に返されます。

CPU使用率のスクリプト

$ username = "## unifi.sshuser ##" $ passwd = "## unifi.sshpassphrase.key ##" $ secpasswd = ConvertTo-SecureString $ passwd -AsPlainText -Force $ device = "## system.ips ##" $ keyFile = "Local_Disk_On_Collector \ privatekey_LM.key" $ creds = New-Object System.Management.Automation.PSCredential($ username、$ secpasswd)#デバイスへのSSHセッションNew-SSHSession -ComputerName $ device -Credential $ creds -Keyfile $ keyFile -AcceptKey | Out-Null#CPU統計を取得$ cpuAll = Invoke-SSHCommand -index(Get-SSHSession -host $ device).sessionid -Command "cat / proc / stat | grep '^ cpu'"#セッションを削除Remove-SSHSession(Get- SSHSession -host $ device)| Out-Null#CPU使用量を計算$ cpuArray = $ cpuAll.Output -split "+" $ cpuTotal =([int] $ cpuArray [1])+([int] $ cpuArray [2])+([int] $ cpuArray [3])+([int] $ cpuArray [4])+([int] $ cpuArray [5])+([int] $ cpuArray [6])+([int] $ cpuArray [7])+( [int] $ cpuArray [8])+([int] $ cpuArray [9])+([int] $ cpuArray [10])$ cpuIdle =([int] $ cpuArray [4])$ cpuUsage =($ cpuTotal -$ cpuIdle)/ $ cpuTotal $ cpuUsedPercent = $ cpuUsage * 100 $ cpuPercent =([int] $ cpuUsedPercent)書き込みホスト "CPUUsage = $ {cpuPercent}" Exit 0

メモリ使用量のスクリプト

$ username = "## unifi.sshuser ##" $ passwd = "## unifi.sshpassphrase.key ##" $ secpasswd = ConvertTo-SecureString $ passwd -AsPlainText -Force $ device = "## system.ips ##" $ keyFile = "Local_Disk_On_Collector \ privatekey_LM.key" $ creds = New-Object System.Management.Automation.PSCredential($ username、$ secpasswd)#デバイスへのSSHセッションNew-SSHSession -ComputerName $ device -Credential $ creds -Keyfile $ keyFile -AcceptKey | Out-Null#メモリ統計の取得$ memAll = Invoke-SSHCommand -index(Get-SSHSession -host $ device).sessionid -Command "free | grep'Mem: '"#セッションの削除Remove-SSHSession(Get-SSHSession -host $デバイス)| Out-Null#メモリ使用量を計算します$ memArray = $ memAll.Output -split "+" $ memTotal = $ memArray [1] $ memUsed = $ memArray [2] if($ memTotal -eq "Mem:"){$ memTotal = $ memArray [2] $ memUsed = $ memArray [3]} $ memUsedPercent = [int](($ memUsed / $ memTotal)* 100)書き込みホスト "MemoryUsed = $ {memUsedPercent}" Exit 0

彼らのチームは、 Linux コマンドが機能しない場合は、特定のデバイスに合わせてスクリプトを調整する必要があるかもしれません。

これらのメトリクスは、UnifiコントローラーからAPI経由で取得できます。ただし、この場合、各デバイスがコントローラーに対してクエリを生成するため、データが大量に流入し、ネットワーク監視において単一障害点が発生します。 

LogicMonitor のおかげで、Retune AB チームはビジネスに不可欠なものを監視できるようになり、Ubiquiti デバイスに関して受信するメトリクスに自信を持てるようになりました。

UDM Pro のメモリと CPU 使用率が高い場合のトラブルシューティング

UDM Proが過熱し、CPUやメモリを常に消費している場合、それはあなただけではありません。これはUniFiフォーラムで最も話題になる問題の一つであり、当然のことです。放置すると、リソースの急増によってネットワークがスローダウンしたり、IDS/IPSやUniFi Protectなどのサービスが停止したりする可能性があります。

では、この急増の原因は何でしょうか?

多くの場合、メモリとCPUの使用率の高さはUniFi Protectに関連しています。UDM ProをネットワークゲートウェイとNVRの両方として使用している場合、特に高解像度のカメラフィードを使用すると、メモリ消費が急速に増加する可能性があります。

その他の一般的な要因は次のとおりです。

  • ディープパケットインスペクション(DPI)と脅威検出機能
  • 継続的に実行されるトラフィック分析ツール
  • 最近のアップデートで導入されたファームウェアのバグにより、リソースの漏洩やプロセスの暴走が引き起こされる

正常なものとそうでないもの

使用量には多少の変動が予想されます。一般的な目安は次のとおりです。

  • メモリ使用率が 80% を超えても、回復できずに高いままでない限り、通常は問題にはなりません。
  • ファームウェアのアップグレード中やトラフィックの急増中に CPU 使用率が急上昇するのは正常です。
  • メモリの使用率が 90% を超えたり、CPU の使用率が 70% を超えたりするなど、一貫して高い使用率の場合は、プロセスが停止しているか、サービスが過負荷になっている可能性があります。

パフォーマンスを安定させるための手順

デバイスを再起動する前に、次の手順を試してください。

  1. UniFi Protectを一時的に無効にして、使用量が減るかどうかを確認します
  2. 使用していないDPIまたはIDS/IPS機能をオフにする
  3. 最新の安定したファームウェアを使用していることを確認してください(一部のバージョンではメモリリークが知られています) 
  4. 可能であれば、デバイス全体ではなく、コマンドラインから個々のサービスを再起動します。

それでも問題が解決しない場合は、再起動すると通常は問題が解決します。ただし、これは症状を治療するものであり、原因を治療するものではありません。

状況が安定したら、可視性を維持することが重要です。LogicMonitorの履歴監視とアラート機能は、UniFiにはないコンテキストを提供します。継続的なデータ収集により、以下のことが可能になります。

  • 問題が増加傾向にあるかどうかを確認する
  • 使用量のしきい値を超える前に警告を受け取る
  • 急増を特定のサービスや変更と相関させる

これにより、同じ問題が再びネットワークに影響を及ぼすのを防ぐことができます。

UDM Pro vs. UDM SE vs. UDM Pro Max: 監視に関する考慮事項

UDM ProのメモリやCPU使用率が高いと感じているのは、あなただけではありません。しかし、スクリプトを実行したりアラートを設定したりする前に、ネットワークのワークロードに適したハードウェアを使用しているかどうかを検討してみる価値があります。

UniFi は、Dream Machine ラインナップのいくつかのバリエーションを提供しています。 

  1. UDMプロ
  2. UDM SE(スペシャルエディション)
  3. UDMプロマックス

似ているように見えるかもしれませんが、違います。それぞれに、高トラフィック、DPI、保護、全体的なリソース負荷の処理方法に影響を与える重要な違いがあります。 

これらの違いが何であるかを見てみましょう。 

重要なハードウェアの違い

UDM SE は、より多くのストレージやより高速なイーサネット ポートなど、内部がアップグレードされており、UDM Pro Max は、より優れた熱設計とより多くの RAM により、さらに性能が向上しています。 

これらの違いは、各デバイスが負荷のかかる状況で監視、記録、およびパケット検査のタスクを処理する方法に直接影響を与える可能性があります。

標準の UDM Pro で CPU またはメモリを最大限に活用している場合は、SE または Max にアップグレードすると、パフォーマンスが向上し、スムーズに動作するために必要なアクティブ モニタリングの量が軽減される可能性があります。

あなたの環境に最適なのはどれでしょうか?

どれがあなたにぴったりか見てみましょう:

  • UDMプロ 小規模ネットワークや負荷の軽い環境であれば安定して動作します。しかし、UniFi Protectや高度なセキュリティスキャンなどの機能を有効にすると、処理能力が限界に達する可能性があります。
  • UDM SE 数台のカメラと軽い IDS/IPS を使用する中小企業に適しています。
  • UDMプロマックス 多数のデバイス、複数のカメラ ストリーム、大量のトラフィック分析が行われるオフィスなどの忙しい環境向けに構築されています。

リソース制限のトラブルシューティングを頻繁に行う場合は、設定の問題ではなく、ハードウェアの不一致が原因かもしれません。

UDM Pro のメモリ使用率が常に 90% になる場合は、セットアップの問題ではなく、ハードウェアを再検討する時期かもしれません。

クイック比較: UDM Pro vs. UDM SE vs. UDM Pro Max 

機能UDMプロUDM SEUDMプロマックス
RAM4 GB4 GB8 GB
CPUクアッドコアARMクアッドコアARMクアッドコアARM(より高速なクロック)
Storageなし(ユーザー追加)128 GB SSD(内蔵)128 GB SSD(内蔵)
電源内蔵電源ユニット内部電源 + PoEより高ワット数のPSU
SFP +ポート1 x 10G1 x 10G2 x 10G
熱設計基本的な冷却冷却の改善空気の流れと熱処理の強化
理想的な使用例自宅/小規模オフィス軽いビジネス用途交通渋滞とカメラの負荷

しきい値を設定し、早期にアラートを取得し、時間の経過に伴う使用状況を追跡します

UDM Proを再起動してようやく動作を確認できた経験があるなら、何も見ずに操作するのがいかに面倒かお分かりでしょう。ダッシュボードが不完全だったり、指標が欠けていたり、一貫性がなかったりと、 SNMP サポートが不足していると、常に追いつくのに追われているように感じてしまうことがあります。

だからこそ、多くのチームがLogicMonitorに注目しています。スクリプト、スクリーンショット、そして直感を駆使して作業する代わりに、UniFiデバイスとその他のインフラストラクチャを統合的に把握できます。 

1 つの UDM Pro を実行している場合でも、クライアント サイト全体で数十を管理する場合でも、LogicMonitor は事後対応的な修正から事前対応的な可視性への移行を支援します。

14日間フルアクセス LogicMonitor プラットフォーム