2021-08-28

【備忘録】bmon ~ ネットワーク監視ツール ~

Linux でネットワークを監視するツールあるいはコマンドを調べていたら参考サイト [1] に 20 種類も紹介されていました。いろいろなツールがあるはずだとは思っていましたが、想像以上です。きっと他にもあるのでしょう。まずは、参考サイトで紹介されているものの中から興味のあるものを自分で試して、不定期になりますが自分なりにまとめていきます。

bmon

bmon は、帯域幅の監視やネットワーク関連の統計情報を取得し、それらを視覚的に表示する、フリーでオープンソースの監視・デバッグツールです。対話的な curses ユーザーインターフェースや、スクリプト用のプログラム可能なテキスト出力など、さまざまな出力方法を備えています。bmon を使うと、以下のようなことができます。

  • ネットワークの帯域幅をリアルタイムで可視化
  • 送信データの総量
  • CRCエラー
  • 衝突
  • ICMPv6 トラフィックパケット
Wikipedia より引用・翻訳

bmon は下記のサイトで開発されており、BSD ライセンスで配布されています。

ポピュラーな Linux ディストロであれば、パッケージを利用することができるようです。

使用環境

今回使用する環境は以下の通りです。

Red Hat Enterprise Linux release 8.4 (RHEL 8.4) x86_64

RHEL 8 では EPEL のリポジトリから bmon をインストールできます。EPEL のリポジトリを利用できるようにするには下記のようにパッケージをインストールします [2]

$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

bmon のパッケージを次のようにインストールします。

$ sudo dnf install bmon
bmon のインストール

実行例

端末エミュレータ上で bmonEnter で起動します。

$ sudo bmon
起動後の bmon

こんなものか、とはじめは思ってしまいましたが違うようです。

─── Increase screen height to see graphical statistics ───

というメッセージは画面の高さを広げてグラフィカルな統計情報を表示しろと言っています。早速高さを広げてみると出てきました。

bmon の画面の高さを大きくした後

キー d を押下すると、詳細情報が表示されます。必要に応じてさらに高さを広げます。

キー d を押下して詳細情報を表示

さらにキー i を押下すると追加の情報が表示されますが、ここでは省略します。

キー (上下)で NIC の選択、キー (左右)でグラフィカルに表示されるパケットの種類(詳細画面左側の Bytes から Window Error まで)を切り替えます。

キー q を押下すると終了するか確認するダイアログが表示され、yn を押下します。

起動時の引数

bmon --help でヘルプを見ると、起動時に細かいオプションを付加できることが判ります。ここではこれ以上立ちりませんが、用途に応じて細かな指定ができそうです。

[bitwalk@rhel-pc ~]$ bmon --help
bmon 4.0
Copyright (C) 2001-2015 by Thomas Graf 
Copyright (C) 2013 Red Hat, Inc.
bmon comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the source
code for details.

Usage: bmon [OPTION]...

Options:
Startup:
   -i, --input=MODPARM             Input module(s)
   -o, --output=MODPARM            Output module(s)
   -f, --configfile=PATH           Alternative path to configuration file
   -h, --help                      Show this help text
   -V, --version                   Show version

Input:
   -p, --policy=POLICY             Element display policy (see below)
   -a, --show-all                  Show all elements (even disabled elements)
   -r, --read-interval=FLOAT       Read interval in seconds (float)
   -R, --rate-interval=FLOAT       Rate interval in seconds (float)
   -s, --sleep-interval=FLOAT      Sleep time in seconds (float)
   -L, --lifetime=LIFETIME         Lifetime of an element in seconds (float)

Output:
   -U, --use-si                    Use SI units
   -b, --use-bit                   Display in bits instead of bytes

Module configuration:
   modparm := MODULE:optlist,MODULE:optlist,...
   optlist := option;option;...
   option  := TYPE[=VALUE]

   Examples:
       -o curses:ngraph=2
       -o list            # Shows a list of available modules
       -o curses:help     # Shows a help text for html module

Interface selection:
   policy  := [!]simple_regexp,[!]simple_regexp,...

   Example: -p 'eth*,lo*,!eth1'

Please see the bmon(1) man pages for full documentation.
[bitwalk@rhel-pc ~]$ 

参考サイト

  1. Linuxでネットワークの監視を行えるモニタリングコマンド20選 | 俺的備忘録 〜なんかいろいろ〜 [2020-09-21]
  2. EPEL - Fedora Project Wiki

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

2021-08-01

Qt for Python によるチャート (14)

Python で GUI アプリを作成するときに Qt の Python 用バインディングである PySide (Qt for Python) を使用することが多くなりました。散布図などのチャート作成には、もっぱら matplotlib を使っていますが、他の選択肢も検討しようと、QtCharts というチャート作成用ライブラリの使い方をまとめました。

当初、PySide 用の QtCharts のサンプルが見つからず、C++ 用のサンプル [1] を PySide 用に書き直していましたが、よく探してみると PySide 用サンプルもありました [2]。ここでは、勉強がてら C++ 用のサンプルを書き直したものを紹介していきます。

本記事では、下記の OS 環境を使用しています。

Fedora 34 Workstation x86_64
- Python 3.9.6
- PySide6 6.1.2 (venv)
- IDE: PyCharm 2021.2 (Community Edition)

DonutChart(ドーナツチャート)

ドーナツチャートは円グラフの変形で、中心部にドーナツのように穴を入れます。

このサンプルではシンプルな例を紹介していますが、ドーナツ状にすることで、同心円にいくつものドーナツチャートを径を変えて重ね合わすことができます。

qtcharts_donutchart.py

実行例を下記に示しました。

qtcharts_donutchart.py の実行例

QPieSeries クラスのインスタンスに、setHoleSize() メソッドでドーナツの穴のサイズ (0.0 - 1.0) を指定します。

        series = QPieSeries()
        series.setHoleSize(0.35)

参考サイト

  1. Qt Charts Examples | Qt Charts 6.1.2
  2. Qt for Python Examples — Qt for Python

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加