Merakiネットワークパフォーマンス監視とアラート
Meraki Network Monitor
Cisco Merakiネットワークの遅延とパケットロス率を自動で監視し、パフォーマンスがしきい値を超えた際にTeams経由でアラートを送信します。また、Redisを使用して重複通知を防止します。
ワークフロー概要
この n8n ワークフローは、Cisco Meraki ネットワーク監視・アラートシステムであり、ネットワークのパフォーマンス指標(遅延とパケットロス率)を自動的に監視し、問題を検出した際にアラート通知を送信します。ワークフローは Meraki API を介して組織、ネットワーク、アップリンク統計データを取得し、平均パフォーマンス指標を計算した上で問題のあるサイトをフィルタリングし、Microsoft Teams でアラートメッセージを送信します。同時に Redis データベースを使用して重複アラートを防止します。
ワークフロー構成
1. トリガーノード
ノード名:
When clicking "Execute Workflow"(手動トリガー)Schedule Trigger(スケジュールトリガー)
機能説明: このワークフローは以下の2種類のトリガー方式をサポートしています:
- 手動実行:「ワークフローを実行」ボタンをクリックして手動でトリガー
- スケジュール実行:事前に設定された時間スケジュールに従って自動実行(継続的な監視用)
2. データ収集フェーズ
2.1 Meraki 組織情報の取得
ノード名: Get Meraki Organizations
機能説明:
- HTTP リクエストにより Meraki API (
https://api.meraki.com/api/v1/organizations) を呼び出し - Header 認証方式を使用(Meraki API キーの設定が必要)
- アカウントがアクセス権を持つすべての組織リストを取得
技術詳細:
- リクエストタイプ:GET
- 認証方式:HTTP Header Auth
- 必須ヘッダー:
Authorization: 認証用Accept: application/json: JSON 形式でのレスポンスを指定
2.2 組織データの整形
ノード名: Get Org Name & ID
機能説明:
- Set ノードを使用して重要なフィールドを抽出・リネーム
- 元データから以下の情報を抽出:
CompanyName: 組織名OrgID: 組織 ID
2.3 ネットワーク ID の取得
ノード名: Get Network IDs
機能説明:
- 各組織 ID に対して API を呼び出し、その配下の全ネットワークを取得
- 動的 URL 使用:
https://api.meraki.com/api/v1/organizations/{{ $json.OrgID }}/networks - 後続のネットワーク監視のためにネットワークリストを提供
2.4 ネットワーク変数の整形
ノード名: Sets Network Variables
機能説明:
- ネットワーク情報を抽出・整形
- ネットワーク名、ネットワーク ID、ネットワーク URL などの主要フィールドを含む
2.5 アップリンク統計データの取得
ノード名: Get Uplink Loss and Latency
機能説明:
- ネットワークデバイスのアップリンクパフォーマンス統計を取得
- 以下を含む:
- パケットロス率(Loss Percent)
- 遅延(Latency Ms)
- 時系列データ(直近5時点分のデータ)
3. データ処理・分析フェーズ
3.1 データ結合
ノード名: Combine latency to its respective Network
機能説明:
- Merge ノードを使用してネットワーク情報とパフォーマンス統計データを結合
- 照合フィールド:
NetworkIDとnetworkId - 結合モード:enrichInput1(入力1のデータを拡張)
3.2 データ再構成
ノード名: Makes Latency and Loss Filterable
機能説明:
- データ構造を再編成し、遅延およびパケットロスデータをフィルタリング・分析しやすくする
- 5つの時系列データポイントを抽出:
TS0-Loss~TS4-Loss:5時点のパケットロス率TS0-Latency~TS4-Latency:5時点の遅延
- ネットワーク名、シリアル番号、URL などのメタデータを保持
3.3 平均値の計算
ノード名: Average Latency & Loss over 5m
機能説明:
- JavaScript コードを使用して直近5時点の平均値を計算
- 以下の2つの主要指標を算出:
AverageLoss:平均パケットロス率AverageLatency:平均遅延(ミリ秒)
- これらの平均値を用いてパフォーマンス問題をより正確に特定
コードロジック:
// 5時点の総パケットロス率と総遅延を計算
// 5で割って平均値を算出
// 結果をデータ項目に追加
3.4 問題のあるサイトのフィルタリング
ノード名: Filters Problematic sites
機能説明:
- JavaScript コードを使用して閾値を超えるサイトをフィルタリング
- 閾値基準:
- 平均遅延 > 300 ミリ秒
- または 平均パケットロス率 > 2%
- いずれかの条件を満たすサイトのみが次のステップに渡される
フィルタリングロジック:
// AverageLatency > 300 または AverageLoss > 2 の場合
// そのサイトは問題ありとマークされる
4. アラート重複防止・通知フェーズ
4.1 アラートの存在確認
ノード名: Check if Alert Exists
機能説明:
- Redis データベースを照会し、該当ネットワークへのアラートが既に送信済みかどうかを確認
- ネットワーク名をキーとして使用
- キーが存在する場合、TTL 期間内に既にアラートが送信済みであることを意味する
4.2 レスポンスデータの作成
ノード名: Create Response
機能説明:
- JavaScript を使用して Redis の照会結果を処理
- 結果を利用可能な真偽値または識別子に変換
- 新しいアラートを送信すべきかを判定
4.3 重複除去のマージ
ノード名: Merge
機能説明:
- 問題のあるサイトと既存アラートのデータをマージ
- 照合フィールド:
NetworkName - マージモード:不一致項目をすべて保持
- 重要なロジック:ネットワーク名が一致する場合、アラートは既に存在しているため送信しない。一致しないもの(=新規問題)のみが後続処理に進む
4.4 Teams メッセージの送信
ノード名: Message Techs
機能説明:
- Microsoft Teams Webhook を通じてアラートメッセージを送信
- メッセージ内容:
- ネットワーク名
- 平均遅延およびパケットロス率データ
- ネットワーク URL(ハイパーリンク形式で問題サイトに直接ジャンプ可能)
- 技術チームにパフォーマンス閾値超過のサイトを通知
4.5 アラートログの記録
ノード名: Log the Alert
機能説明:
- アラートを Redis データベースに記録
- TTL(生存時間)を3時間に設定
- 重複防止ロジック:同一サイトの問題が3時間以内に解決されない場合、3時間後に再度アラートを送信
5. 補足説明ノード
ワークフローには複数の Sticky Note(付箋)ノードが含まれており、詳細な使用方法を説明しています:
- Sticky Note3:Meraki API 認証の設定方法を解説
- Sticky Note4:データ結合および統計計算のロジックを説明
- Sticky Note5:アラート重複防止メカニズムと通知フローを詳細に説明
- Sticky Note6:他の活用シーン(例:PSA ツールとの連携によるチケット自動作成)を提案
ワークフロー図
[トリガー] → [組織取得] → [組織データ整形] → [ネットワークID取得] → [ネットワークデータ整形]
↓ ↓
[アップリンクデータ取得] --------------------------------→ [データ結合]
↓
[遅延・ロスデータ再構成]
↓
[5分間の平均値計算]
↓
[問題のあるサイトをフィルタリング]
↓
[アラート存在確認] ← → [重複除去マージ]
↓ ↓
[レスポンス作成] ------------→ [Teamsメッセージ送信]
↓
[アラートログ記録]
主要技術ポイント
1. API 認証
- Meraki Dashboard で API キーを生成する必要あり
- 参考ドキュメント:https://documentation.meraki.com/General_Administration/Other_Topics/Cisco_Meraki_Dashboard_API
- HTTP Header 認証を使用
2. パフォーマンス閾値
- 遅延閾値:300 ミリ秒
- パケットロス閾値:2%
- これらの閾値は実際の要件に応じて調整可能
3. アラート重複防止メカニズム
- 送信済みアラートを Redis に保存
- TTL を3時間に設定
- TTL 期間中は同一サイトへの重複アラートを送信しない
4. データ処理方法
- 直近5時点のデータを収集
- 平均値を計算して瞬間的な変動の影響を軽減
- 複雑なデータ処理およびフィルタリングに JavaScript コードノードを使用
利用シーン
- ネットワークパフォーマンス監視:Meraki ネットワークの遅延およびパケットロス状況を継続的に監視
- プロアクティブなアラート:パフォーマンス低下時に技術チームへ自動通知
- トラブルシューティング:ネットワーク URL の直接リンクにより問題箇所を迅速に特定
- アラート管理:アラートの過剰送信を防止し、3時間以内に同一サイトへのアラートは1回のみ送信
拡張提案
Sticky Note6 の説明に基づき、以下の拡張が可能です:
- PSA システムとの統合:Teams メッセージノードを PSA ツールノード(例:ConnectWise Manage)に置き換え、メッセージ送信ではなく自動でチケットを作成
- マルチチャネル通知:Teams に加え、メールや Slack など他の通知チャネルを追加
- カスタム閾値:ネットワークごとに異なるパフォーマンス閾値を設定
- 履歴データ保存:監視データをデータベースに保存し、長期的な分析およびトレンド予測に活用
まとめ
これは完全なネットワーク監視自動化ワークフローであり、n8n の以下の機能を最大限活用しています:
- 外部 API との HTTP リクエスト統合
- データ変換・処理(Set ノード、Code ノード)
- データ結合(Merge ノード)
- 条件フィルタリングおよび論理判断
- 外部通知(Teams Webhook)
- データ永続化(Redis)
自動化監視とスマートなアラートにより、ネットワーク運用効率が大幅に向上し、手動チェックの作業負荷が軽減されます。