いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Pythonメモ-62 (glances試してみたら凄く良かった) (psutil, glances, top/htop alternative)

概要

以前に psutil についてのメモをちょっと書いていて

devlights.hatenablog.com

github.com

久しぶりにちょっと使うので、上の github ページみてたら下の方に psutil を使ってるプロジェクトって部分に以下を発見。

nicolargo.github.io

github.com

めっちゃかっこいいやん!topのイケてる版みたいな感じ。

requirements.txt みたら、本当に psutil しか依存してない。。すごいな。

psutil便利すぎますね。

早速試してみました

てことで、早速使ってみました。以下、備忘録です。

インストールは、上記 github ページとかに丁寧にいろいろな方法で記載されています。

今回は、楽なので conda でいきました。

⟩ conda search glances
Loading channels: done
Name                       Version                   Build  Channel        
glances                    2.6                      py27_0  conda-forge    
glances                    2.6                      py34_0  conda-forge    
glances                    2.6                      py35_0  conda-forge    
glances                    2.6.1                    py27_0  conda-forge    
glances                    2.6.1                    py34_0  conda-forge    
glances                    2.6.1                    py35_0  conda-forge    
glances                    2.6.2                    py27_0  conda-forge    
glances                    2.6.2                    py34_0  conda-forge    
glances                    2.6.2                    py35_0  conda-forge    
glances                    2.6.2                    py36_0  conda-forge    
glances                    2.8.2                    py27_0  conda-forge    
glances                    2.8.2                    py35_0  conda-forge    
glances                    2.8.2                    py36_0  conda-forge    
glances                    2.8.6                    py27_0  conda-forge    
glances                    2.8.6                    py35_0  conda-forge    
glances                    2.8.6                    py36_0  conda-forge    
glances                    2.8.8                    py27_0  conda-forge    
glances                    2.8.8                    py35_0  conda-forge    
glances                    2.8.8                    py36_0  conda-forge    
glances                    2.9.1                    py27_0  conda-forge    
glances                    2.9.1                    py35_0  conda-forge    
glances                    2.9.1                    py36_0  conda-forge    
glances                    2.10                     py27_0  conda-forge    
glances                    2.10                     py35_0  conda-forge    
glances                    2.10                     py36_0  conda-forge    
glances                    2.10                       py_1  conda-forge    
glances                    2.11                       py_0  conda-forge

conda-forge側にありますね。てことで、インストール。

⟩ conda create --name glances glances
Solving environment: done

## Package Plan ##

  environment location: /Users/xxxx/anaconda3/envs/glances

  added / updated specs: 
    - glances

The following NEW packages will be INSTALLED:

    ca-certificates: 2017.08.26-ha1e5d58_0            
    certifi:         2018.1.18-py36_0                 
    glances:         2.11-py_0             conda-forge
    libcxx:          4.0.1-h579ed51_0                 
    libcxxabi:       4.0.1-hebd6815_0                 
    libedit:         3.1-hb4e282d_0                   
    libffi:          3.2.1-h475c297_4                 
    ncurses:         6.0-hd04f020_2                   
    openssl:         1.0.2n-hdbc3d79_0                
    pip:             9.0.1-py36h1555ced_4             
    psutil:          5.4.3-py36h1de35cc_0             
    python:          3.6.4-hc167b69_1                 
    readline:        7.0-hc1231fa_4                   
    setuptools:      38.4.0-py36_0                    
    sqlite:          3.22.0-h3efe00b_0                
    tk:              8.6.7-h35a86e2_3                 
    wheel:           0.30.0-py36h5eb2c71_1            
    xz:              5.2.3-h0278029_2                 
    zlib:            1.2.11-hf3cbc9b_2                

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate glances
#
# To deactivate an active environment, use
#
#     $ conda deactivate

次に、readme に書いてあるみたいに、起動してみます。

$ glances

ターミナルが以下のようになります。

f:id:gsf_zero1:20180215010922p:plain

見やすいですねぇ。下にアラートも出るみたい。メモリ使いすぎって出てるなw

topと同じように状況が自動更新されていきます。

ヘルプは h キーを押すと出るみたいです。こんな感じ。

f:id:gsf_zero1:20180215011242p:plain

個人的によく使いそうなのは以下ですかね。

  • 数字の1押下
    • CPUのサマリーを切り替え(全体と個別)
  • c押下
    • CPU使用率で並び替え
  • m押下
    • メモリ使用率で並び替え
  • p押下
    • プロセス名で並び替え
  • 数字の5押下
    • 上部のトップメニューエリアみたいな部分を表示切り替え
  • U押下
    • ネットワークI/Oの累積表示の切り替え
  • D押下
    • Dockerのステータスエリアを表示切り替え

IPアドレス

で、よく見たら、上部にIPアドレスが表示されていません。

glancesは、プラグインみたいな感じでいろいろな機能を付与できるようになっているみたいで

ipアドレスを表示するには、別途以下のライブラリが必要とのこと。

netifaces

てことで、インストールしてみましょう。

⟩ conda install netifaces
Solving environment: done

## Package Plan ##

  environment location: /Users/xxxx/anaconda3/envs/glances

  added / updated specs: 
    - netifaces


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    netifaces-0.10.6           |           py36_0          14 KB  conda-forge

The following NEW packages will be INSTALLED:

    netifaces: 0.10.6-py36_0 conda-forge

Proceed ([y]/n)? y


Downloading and Extracting Packages
netifaces 0.10.6: ################################################################################################################################## | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

オケ。てことで、再度 glances を表示してみます。

f:id:gsf_zero1:20180215014135p:plain

こんな風にIPアドレスが表示されるようになりました。他にもRabbitMQ用の表示ができたりといろいろあるみたいです。

glancesさん、他にも以下のような機能があるみたいなんですが、今回はここまでにして、また触ったら追記します。

  • Webインターフェースを持ってる。(要 bottle っぽい)
  • クライアント/サーバー形式で動作させることもできる。
    • モニタしたいマシンに glances をサーバーで起動しておけば、別のマシンから見ることも出来る
    • glances自体に restful json api なインターフェースを持っているので、それを使ってデータを取得できる
  • モニタリング情報をいろいろな形式でエクスポートできる
    • csvとか

過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。