このページは 「ネットワーク上級編|要件定義・設計・クラウド・自動化へ進む」 の第6章「自動化と可視化」の章末課題です。
第51回から第60回までに学んだ内容を使い、 ネットワーク運用を自動化・可視化するミニプロジェクトに取り組みます。
第6章 実践演習|自動化と可視化
Python、SSH、Ansible、REST API、JSON・YAML、Git、 テレメトリー、AIを組み合わせ、 「人が毎回手作業で確認しているネットワーク運用」を 自動化する方法を考える章末実践演習です。
ネットワーク自動化で重要なのは、 PythonやAnsibleの文法を覚えることだけではありません。
「何を自動化するのか」「どの情報を取得するのか」 「失敗したときにどう止めるのか」「結果をどう確認するのか」 まで設計する必要があります。
この章末課題で確認すること
- 自動化する業務を選定できる
- Pythonによるデータ処理を考えられる
- SSH・APIの使い分けを説明できる
- JSON・YAMLを読み取れる
- Ansibleの適用方法を考えられる
- Gitによる変更管理を設計できる
- テレメトリーの可視化項目を決められる
- AIをログ調査の補助として利用できる
今回のケース
ケース:50台のネットワーク機器を管理する企業
あなたは、複数拠点を持つ企業のネットワーク運用を担当しています。 現在、ルーターやスイッチなど約50台を管理しています。
運用担当者は毎朝、各機器へログインしてCPU使用率、 インターフェース状態、経路情報などを確認しています。
現在の課題
- 50台へ手作業でSSHログインしている
- 確認結果をExcelへ転記している
- 設定変更も機器ごとに実施している
- 設定履歴の管理方法が統一されていない
最近発生した問題
- 設定投入漏れが発生した
- 障害時に過去設定との差分確認に時間がかかった
- CPU高騰の発見が遅れた
- 大量のログから原因候補を探すのに時間がかかった
上司から、 「ネットワーク運用を自動化して、障害を早く発見できる仕組みを検討してほしい」 と依頼されました。
目指す運用イメージ
課題1自動化対象を選定する
次の作業について、自動化の優先度を 「高・中・低」で評価してください。
| 作業 | 頻度 | 現在の方法 | 自動化優先度 |
|---|---|---|---|
| インターフェース状態確認 | 毎日 | 50台へSSHログイン | ____ |
| CPU使用率確認 | 毎日 | 50台へSSHログイン | ____ |
| NTPサーバー変更 | 年1〜2回 | 手作業で設定 | ____ |
| 障害時のログ収集 | 不定期 | 手作業 | ____ |
| 初めて導入する新機能の設定 | 非常に少ない | 設計後に個別設定 | ____ |
設問
- 最初に自動化する作業を2つ選んでください。
- その作業を選んだ理由を書いてください。
- 自動化によって発生する新しいリスクを1つ以上挙げてください。
解答例を見る
優先度が高い候補は、 インターフェース状態確認、CPU使用率確認、障害時のログ収集 です。
毎日または障害のたびに繰り返す作業であり、 手作業による時間消費と確認漏れを減らしやすいためです。
一方、自動化には「誤った処理を多数の機器へ一括適用する」 リスクがあります。特に設定変更では対象機器の確認、 事前検証、バックアップ、停止条件を設計する必要があります。
課題2PythonでIPアドレスをチェックする
自動化対象機器として、次のIPアドレス一覧が渡されました。
192.168.10.1
192.168.10.2
192.168.10.300
10.10.1.1
10.10.1.2
172.16.5.10
設問
- 明らかに不正なIPアドレスを特定してください。
- Pythonで自動チェックする場合、どのような処理が必要でしょうか。
- 不正なアドレスを検出した場合、そのまま自動処理を継続すべきでしょうか。
解答例を見る
192.168.10.300 はIPv4アドレスとして不正です。
Pythonでは、文字列を単純に分割して確認する方法もありますが、 IPアドレスとして解釈できるかを判定する仕組みを利用することで、 入力値の妥当性を確認できます。
設定自動化では、不正な入力値を検出した時点で処理を停止し、 管理者へ知らせる設計が安全です。
実務ポイント: 自動化では「正常時に動くこと」だけでなく、 異常な入力を受け取ったときに安全に止まれること が重要です。
課題3SSHによる情報取得を設計する
50台のネットワーク機器から、毎朝次の情報を取得することになりました。
- ホスト名
- CPU使用率
- インターフェース状態
- ルーティング情報
- 現在時刻
設問
- SSH自動取得処理の流れを順番に整理してください。
- 1台だけ接続できなかった場合、残り49台の処理をどうしますか。
- 取得結果には、どの情報を追加して保存すると調査しやすくなりますか。
設計例を見る
- 対象機器一覧を読み込む
- IPアドレスなどの入力値を検証する
- SSH接続する
- 必要なコマンドを実行する
- 出力を取得する
- 取得日時と対象機器名を付けて保存する
- エラーの有無を記録する
- 次の機器へ進む
- 最後に成功・失敗を一覧化する
1台への接続失敗だけで全処理を終了すると、 残りの正常な機器の情報まで取得できなくなります。
そのため情報取得処理では、失敗機器を記録して次へ進み、 最後に失敗一覧を管理者へ通知する方式が考えられます。
課題4Ansibleによる設定変更を考える
全50台のネットワーク機器について、 NTPサーバーを次のように変更することになりました。
変更前:192.0.2.10
変更後:192.0.2.20
設問
- いきなり50台へ一括投入してよいでしょうか。
- 本番投入までの安全な流れを考えてください。
- 設定変更後に何を確認すべきでしょうか。
解答例を見る
一例として、次の流れが考えられます。
- 対象機器と変更内容を確認する
- 現在設定をバックアップする
- 検証環境または少数機器で試験する
- 実行結果と設定差分を確認する
- 対象を段階的に拡大する
- 設定投入後のNTP同期状態を確認する
- 失敗機器を抽出する
- 変更結果をGitや作業記録へ残す
自動化ツールは、正しい操作を高速化できる一方、 誤った操作も高速かつ広範囲に実行できます。 対象範囲、事前検証、バックアップ、実行結果確認をセットで設計します。
課題5REST APIとJSONを読み取る
監視システムのREST APIから、次のJSONが返ってきました。
{
"device": "RTR-TOKYO-01",
"management_ip": "192.168.10.1",
"status": "warning",
"cpu": 87,
"interfaces": {
"GigabitEthernet0/0": "up",
"GigabitEthernet0/1": "down"
}
}
設問
- 対象機器名は何ですか。
- CPU使用率はいくつですか。
- Downしているインターフェースはどれですか。
- このデータを使い「CPUが80%以上なら警告する」処理を作る場合、どの値を参照しますか。
解答を見る
- 機器名:RTR-TOKYO-01
- CPU:87
- Down:GigabitEthernet0/1
- しきい値判定:cpu の値
追加課題:YAMLを読む
devices:
- name: RTR-TOKYO-01
ip: 192.168.10.1
role: router
- name: SW-TOKYO-01
ip: 192.168.10.2
role: switch
このYAMLには何台の機器が登録されていますか。 また、それぞれの役割を答えてください。
解答を見る
2台です。 RTR-TOKYO-01はrouter、 SW-TOKYO-01はswitchとして登録されています。
課題6Gitによる設定管理を設計する
現在は、ネットワーク機器の設定ファイルを 担当者のPCへ日付付きで保存しています。
RTR01_20260801.txt
RTR01_20260805.txt
RTR01_20260810.txt
RTR01_final.txt
RTR01_final2.txt
RTR01_new.txt
設問
- この管理方法にはどのような問題がありますか。
- Gitで管理すると、どのような情報を残せますか。
- コミットメッセージには何を書くべきでしょうか。
解答例を見る
ファイル名だけでは、 「誰が・なぜ・何を変更したのか」が分かりにくくなります。
Gitを利用すると、変更前後の差分や変更履歴を確認しやすくなります。 コミットメッセージには、変更目的や対象を後から判断できる情報を残します。
例:
Change NTP server for Tokyo routers
- Target: RTR-TOKYO-01, RTR-TOKYO-02
- Old: 192.0.2.10
- New: 192.0.2.20
- Reason: NTP server migration
課題7テレメトリーを可視化する
ネットワーク機器から継続的に情報を収集し、 ダッシュボードへ表示することになりました。
候補となる監視データ
- CPU使用率
- メモリ使用率
- インターフェース使用率
- パケット破棄数
- エラー数
- インターフェースUp/Down
設問
- 折れ線グラフで継続的に確認したい項目を3つ選んでください。
- 即時アラートを発生させたい項目を2つ選んでください。
- 「正常時の値」を保存しておくことには、どのような意味がありますか。
解答例を見る
CPU、メモリ、インターフェース使用率などは、 時系列で変化を見ることで負荷の上昇傾向を確認できます。
インターフェースDownや急激なエラー増加などは、 即時通知の対象として考えられます。
正常時の値を蓄積しておけば、 障害時に「通常と比べて何が変わったのか」を判断しやすくなります。
課題8AIを使ってログを調査する
次のようなログが大量に出力されているとします。
Aug 16 10:01:05 RTR-TOKYO-01 Interface Gi0/1 changed state to down
Aug 16 10:01:07 RTR-TOKYO-01 OSPF neighbor 10.0.0.2 changed from FULL to DOWN
Aug 16 10:01:08 RTR-TOKYO-01 Route 172.16.20.0/24 removed
Aug 16 10:01:12 RTR-TOKYO-01 Interface Gi0/1 changed state to up
Aug 16 10:01:18 RTR-TOKYO-01 OSPF neighbor 10.0.0.2 changed from INIT to FULL
設問1:時系列を整理する
何が最初に発生し、その後どのような変化が起きたか説明してください。
設問2:AIへ依頼するプロンプトを作る
AIへこのログを渡して調査を補助させる場合、 どのような指示を出しますか。
解答例を見る
最初にGi0/1がDownし、その直後にOSPFネイバーがDown、 経路が削除されています。その後Gi0/1がUpし、 OSPFネイバーもFULLへ復旧しています。
AIへの指示例:
以下はネットワーク機器のログです。
1. 発生時刻順に事象を整理してください。
2. 最初に発生した事象を特定してください。
3. 原因と結果を分けてください。
4. ログだけでは断定できない内容は「推測」と明記してください。
5. 次に確認すべきコマンドや情報を一覧化してください。
AIの回答だけで原因を確定しないことが重要です。
AIは大量ログの整理や仮説作成には利用できますが、 実際の構成、設定、インターフェース状態、通信経路などと照合して 技術者自身が判断します。
最終課題:ネットワーク運用自動化ミニプロジェクト
ここまでの内容を組み合わせて、 「50台のネットワーク機器を効率的に管理する仕組み」 を設計してください。
要件
- 管理対象はルーター・スイッチ50台
- 毎日、機器状態を自動取得する
- 設定変更を複数機器へ安全に展開できる
- 設定変更履歴を残す
- CPUやインターフェース状態を可視化する
- 異常発生時にログ調査を効率化する
- 一部機器で処理に失敗しても状況を把握できる
成果物1:全体構成図
構成例
成果物2:処理フロー
毎日の情報取得処理を、開始から終了まで記述してください。
成果物3:異常時の処理
次のケースで自動処理をどうするか決めてください。
| 異常 | 処理方針 |
|---|---|
| SSH接続失敗 | ____________ |
| APIからエラー応答 | ____________ |
| 不正なIPアドレス | ____________ |
| 設定投入失敗 | ____________ |
| CPU使用率90%以上 | ____________ |
成果物4:利用技術の役割
| 技術 | 今回のシステムでの役割 |
|---|---|
| Python | ____________ |
| SSH | ____________ |
| Ansible | ____________ |
| REST API | ____________ |
| JSON / YAML | ____________ |
| Git | ____________ |
| テレメトリー | ____________ |
| AI | ____________ |
最終課題の設計例を見る
- Python:取得データの整形、判定、ファイル生成など
- SSH:CLIしか利用できない機器からの情報取得
- Ansible:複数機器への設定展開や定型処理
- REST API:対応機器・システムとの構造化されたデータ連携
- JSON / YAML:APIデータや自動化設定の記述
- Git:設定ファイルや自動化コードの変更履歴管理
- テレメトリー:機器状態を継続的に収集し可視化
- AI:大量ログの整理、異常候補の抽出、調査観点の補助
自己採点|100点満点
コードが完璧に書けるかではなく、 安全に自動化する設計を説明できるか を中心に評価してください。
| 評価項目 | 配点 | 確認ポイント |
|---|---|---|
| 自動化対象の選定 | 10点 | 頻度・作業量・リスクを考慮している |
| データ入力チェック | 10点 | 不正値を検出して安全に停止できる |
| SSH・API設計 | 15点 | 取得方法と失敗時処理を考えている |
| Ansible設計 | 15点 | 一括変更のリスクを考慮している |
| Gitによる変更管理 | 10点 | 変更理由・差分を追跡できる |
| 可視化設計 | 15点 | 監視項目としきい値を説明できる |
| AIログ調査 | 10点 | AIの結果を鵜呑みにしない設計になっている |
| 異常時・安全設計 | 15点 | 停止条件、バックアップ、エラー処理を考えている |
80点以上: 第6章の内容を実務レベルで整理できています。 第7章「設計・提案・ケーススタディ」へ進みましょう。
第6章 修了チェック
- ネットワーク自動化の目的を説明できる
- PythonでIPアドレスなどのデータを処理する考え方が分かる
- SSHで複数機器から情報を取得する流れを説明できる
- Ansibleによる一括設定のメリットとリスクを説明できる
- REST APIの基本的な処理の流れを説明できる
- JSONとYAMLの構造を読み取れる
- Gitでネットワーク設定を管理する目的を説明できる
- テレメトリーで何を監視・可視化するか決められる
- AIをログ調査の補助として安全に利用できる
- 自動化処理の失敗時動作まで設計できる
まとめ
- 自動化は「繰り返し作業を減らす」だけではなく、品質をそろえるためにも利用できる
- Pythonはデータ処理や判定、設定生成など幅広い自動化に利用できる
- SSHとREST APIは、対象機器や目的に応じて使い分ける
- Ansibleでは複数機器へ同じ処理を展開できるが、誤設定の影響範囲にも注意する
- JSON・YAMLは自動化やAPI連携で頻繁に使用される
- Gitを利用すると設定やコードの変更履歴を追跡しやすくなる
- テレメトリーでは継続的なデータを収集し、正常時との差を可視化する
- AIはログ整理や仮説作成を補助できるが、最終判断は技術者が行う
自動化で最も重要なのは、処理を速くすることではありません。 正しい対象へ、正しい処理を、安全に繰り返せる仕組みを作ることです。

コメント