2021年10月19日火曜日

【ntopng and nProbeによる高速トラフィック分析入門】第11章 ntopng,nProbe運用とメンテナンス

第11章 ntopng,nProbe運用とメンテナンス

本章では、ネットワーク管理者自身がntop製品(ntopng,nProbe)を日々運用するのに必要なナレッジをご紹介します。

ntopng,nProbeの運用に必要な知識を身に着ければ、予期しない障害等でntopng,nProbeが起動しなくなったとしても障害原因を特定し、適切に復旧することができるようになります。

(2022年2月9日(水) ebookの記載を追加)

文:ジュピターテクノロジー よしひろ

  • (2022年2月9日(水) 追記)
    2022年2月9日(水)に、本ブログ記事のシリーズ【ntopng and nProbeによる高速トラフィック分析入門】がもととなったebookを弊社サイトに公開しました。
    本サイトで紹介する以上の内容が盛だくさんで、かつ本ブログ執筆当時ではntopngのバージョンが4系でしたが、こちらのebookは5系を対象に執筆しております。
    是非、無料のebook「ntopによる高速トラフィック分析入門(ntopngバージョン5.0.2系)」をご入手ください。ダウンロードは、こちらからお願いします。


11.1 システムステータスの確認

ntopngは、UNIXシステムではデーモンモードで実行し、オプションでシステムの起動時に自動的に実行することができます。 デーモンの実行とステータスは、/etc/init.d/ntopngスクリプトを使用して制御します。 スクリプトは、標準のntopngインストール手順の一部であるため、UNIXシステムに自動的にインストールされます。 systemdをサポートする新しいシステムは、systemctlを使用してデーモンの実行とステータスを制御します。

ntopngの起動状態を確認するには、以下のコマンドを実行します。
$ sudo systemctl status ntopng
● ntopng.service - ntopng high-speed web-based traffic monitoring and analysis tool
     Loaded: loaded (/etc/systemd/system/ntopng.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-10-18 16:24:41 JST; 1min 43s ago
    Process: 2319166 ExecStartPre=/bin/sh -c /usr/bin/ntopng-utils-manage-config -a check-restore  && /usr/bin/ntopng-utils-manage-config -a restore || true (code=exited, status=0/SUCCESS)
    Process: 2319190 ExecStartPre=/bin/sh -c /bin/cat /etc/ntopng/ntopng.conf > /run/ntopng.conf.raw (code=exited, status=0/SUCCESS)
    Process: 2319192 ExecStartPre=/bin/sh -c /bin/cat /etc/ntopng/ntopng.conf.d/*.conf >> /run/ntopng.conf.raw 2>/dev/null || true (code=exited, status=0/SUCCESS)
    Process: 2319194 ExecStartPre=/bin/sh -c /bin/sed "/^[ ]*-e.*$\|^[ ]*-G.*\|^[ ]*--daemon.*\|[ ]*--pid.*/s/^/#/" /run/ntopng.conf.raw > /run/ntopng.conf (code=exited, status=0/SUCCESS)
   Main PID: 2319196 (ntopng)
      Tasks: 73 (limit: 18919)
     Memory: 678.8M
     CGroup: /system.slice/ntopng.service
             mq2319196 /usr/bin/ntopng /run/ntopng.conf

赤字のActive:行が、active(running)になっていればntopngは起動しています。

同じ様にnprobeの起動状態を確認するには、以下のコマンドを実行します。
$ sudo systemctl status nprobe
● nprobe.service - nprobe extensible NetFlow v5/v9/IPFIX probe/collector for IPv4/v6
     Loaded: loaded (/etc/systemd/system/nprobe.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-09-28 09:02:16 JST; 2 weeks 6 days ago
   Main PID: 3828850 (nprobe)
      Tasks: 8 (limit: 18919)
     Memory: 442.4M
     CGroup: /system.slice/nprobe.service
             mq3828850 /usr/bin/nprobe /run/nprobe.conf

ntopngと同様、赤字のActive:行が、active(running)になっていればntopngは起動しています。

次にWeb GUIにログインできるかを確認し、nprobeからフロー情報がntopngに正しく転送されているかを確認するためにインターフェイスのプルダウンメニューを図11-1のように展開し、tcp://127.0.0.1:5556以下にエクスポーターの名前(SNMP登録している場合、エクスポーター(xFlowをnprobeに送信するネットワーク機器)のポート名を自動的に名前解決します)もしくはIPアドレスが表示されていることを確認してください。


図11-1 nprobeとの連携確認

tcp://127.0.0.1:5556以下に何も表示されない場合、nprobeの待ち受けポート(udp 2055もしくは6363等)とエクスポーターが送信しているポートの不一致等が考えられます。tcpdumpコマンドで、各エクスポーターからxFlowを受信しているかを確認してトラブルシューティングをしてください。

$ sudo tcpdump port 6363 and udp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0f0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:47:06.834284 IP 192.168.91.4.61497 > ntopng.dom1.jtc-i.co.jp.6363: UDP, length 1416
16:47:12.834388 IP 192.168.91.4.61497 > ntopng.dom1.jtc-i.co.jp.6363: UDP, length 1416
16:47:12.917036 IP 192.168.91.8.4251 > ntopng.dom1.jtc-i.co.jp.6363: UDP, length 1308
16:47:13.306883 IP 192.168.91.8.4251 > ntopng.dom1.jtc-i.co.jp.6363: UDP, length 160
16:47:13.306883 IP 192.168.91.8.4251 > ntopng.dom1.jtc-i.co.jp.6363: UDP, length 60


11.2 ntopng設定ファイルのバックアップ

ntopng設定ファイルのバックアップは、Web GUIから実行します。2021年10月18日現在、本手順はGoogle Chromeではうまく設定ファイルがエクスポートできないので、Firefoxを利用してください。11‑2のインターフェイスのプルダウンメニューから、システムをクリックしてください。

図11-2 IFプルダウンメニュー

次に左メニューから、「設定」→「複数設定の管理」をクリックすると図11-3が表示されます。

図11-3 設定ファイルのエクスポート

「全ての ntopng 設定 (ユーザー、設定、以下の設定全て)」ラジオボタンがクリックされていることを確認し、画面下の「エクスポート」ボタンをクリックしてください。

図11-4 configuration.jsonのダウンロード

図11-4のように"configuration.json"の画面に遷移しますので、「OK」ボタンを押せば設定ファイルのバックアップは完了です。

11.3 Bundleツールによる設定ファイルのバックアップ

nprobeの設定ファイルは、弊社が提供するBundleツールの実行によってバックアップすることができます。
以下のコマンドを実行してください。

$ cd /home/ntop/bundle-tools
$ sudo bash -x ntop-bundle-tool.sh
$ cd /home/ntop
$ ls
ntop-bundle-tools.tar.gz ←こちらのファイルにnprobe設定ファイルが含まれています


11.4 InfluxDBのバックアップ

時系列データベースにInfluxDB 1.xを設定している場合、時系列データはInfluxDBに保存されます。
本節では、InfluxDBのバックアップ方法をご紹介します。
#mkdir influxdb_backup
#influxd backup influxdb_backup ←メタデータのバックアップ
2020/07/29 16:18:37 backing up metastore to influxdb_backup/meta.00
2020/07/29 16:18:37 No database, retention policy or shard ID given. Full meta store backed up.
2020/07/29 16:18:37 backup complete:
2020/07/29 16:18:37     influxdb_backup/influxdb_backup/meta.00
# influxd backup -database ntopng  influxdb_backup ←ntopngデータベースのバックアップ
2020/07/29 16:20:26 backup complete:
#ls influxdb_backup ←こちらのディレクトリを圧縮するなどして安全な場所に保管してください

11.5 RRDのバックアップ

/var/lib/ntopngは、ntopngが各種履歴データ を保管する重要なデータディレクトリです。
以下のコマンドにしたがって、USBディスクやNASにディレクトリごとバックアップしてください。
パケットキャプチャ(n2disk)を有効にしている場合、データ量が巨大となりますのパケットキャプチャに利用するディレクトリ(/var/lib/ntopng/X/pcap, /var/lib/ntopng/X/timeline ※Xは、インターフェイス番号)を除外するなどしてバックアップを実行してください。

$ sudo cp –rp /var/lib/ntopng /mnt/usb/. ←USBのマウントポイントによって名称は異なります

11.6 ntopng設定ファイルのリストア

「11.2  ntopng設定ファイルのバックアップ」で取得した"configuration.json"を使って、ntopngの設定をリストアすることができます。

リストアは、「図11-3 設定ファイルのエクスポート」の「インポート」ボタンを押して、"configuration.json"をインポートしてください。

11.7 nprobe設定ファイルのリストア

nprobeの設定ファイルは、Bundleツールの出力ファイル(ntop-bundle-tools.tar.gz)内にあります。
コピーコマンドを使って、nprobe.confをリストアします。
リストア後、nprobeを再起動してください。

解凍ディレクトリ

ファイル名

リストア先

/home/ntop/bundle-tools

nprobe.conf

/etc/nprobe直下

表11-1 nprobe設定ファイルパス

nProbeの再起動方法は、以下の通りです。
$ sudo systemctl restart nprobe

11.8 ntopng履歴データのリストア

ntopng履歴データのバックアップで取得した/var/lib/ntopngをリストアします。
リストア前にntopngを停止してください。

ntopngの停止は、以下の通りです。

$ sudo systemctl stop ntopng

以下のコマンドにしたがって、取得したUSBディスクからにディレクトリごとリストアしてください。
sudo cp –rp /mnt/usb/ntopng /var/lib/ 

以下のコマンドに従って、ntopngを起動してください。
$ sudo systemctl restart ntopng

11.9 InfluxDBのリストア

時系列データドライバーの選択をInfluxDBに指定している場合、InfluxDBのバックアップで取得したバックアップファイルを使ってリストアします。
以下のコマンドを実行してしてください。
$ sudo systemctl stop ntopng ←ntopngを停止してください
$ sudo systemctl stop influxdb ←influxdbを停止してください
$ sudo influxd restore -metadir /var/lib/influxdb/meta ./influxdb_backup_20200729←metaデータのリストア
Using metastore snapshot: influxdb_backup_20200729/meta.01
$ sudo influxd restore -database ntopng -datadir \
/var/lib/influxdb/data ./influxdb_backup_20200729 ←ntopngデータベースのリストア
2020/07/30 16:53:20 Restoring offline from backup influxdb_backup_20200729/ntopng.*
$ sudo chown -R influxdb:influxdb /var/lib/influxdb  ←権限変更
$ sudo systemctl start influxdb  ←influxdbの起動
$ sudo influx  ←リストア確認
Connected to http://localhost:8086 version 1.8.1
InfluxDB shell version: 1.8.1
> show databases;
name: databases
name
----
_internal
ntopng  ←ntopngデータベースのリストアに成功していることを確認
mydb
>quit
$ sudo systemctl start ntopng ←ntopngを起動します


如何でしょうか?システムステータスの確認からバックアップ、リストア方法をご紹介しました。本章を理解して適切なバックアップを取得すれば、障害時に素早くネットワークトラフィック分析基盤を復旧させることができます。

本記事で扱っているntop社のnProbe, ntopng製品にご興味のある方は、以下のリンクから弊社までお問い合わせください!