帯域幅、CPU、メモリ統計を端末から単一行に返します。

帯域幅、CPU、メモリ統計を端末から単一行に返します。

収益に関連する帯域幅、CPU、メモリ統計に完全に関連付けられた収益グラフを表示する簡単な監視システムを作成しようとしています。したがって、5秒ごとに1つのウィジェットを販売する場合、帯域幅などが特定のしきい値を超えるかどうかによって異なります。だから、チャートの作成方法を開発しましたが、統計を取得するのに時間がかかりました。さまざまな監視システムが利用可能ですが、帯域幅、CPU使用率、1秒あたり1ラインのメモリ使用量のみが必要です。すべてのインターフェイスからすべてのIP情報を取得できるPythonスクリプトを作成しました。ただし、1行だけ出力する端末で実行できるスクリプトがある場合は、それをファイルに転送してからそのファイルにアクセスしてライブチャートを実行できます。

したがって、ネットワークの場合は、次のものを使用できます。

$ ifconfig

簡単に参照できるようにjsonファイルに移動しました。

利用可能なもの:

$ free -m

記憶はファイルに転送することができると思いました。

その後、次のものを使用できます。

$ cat /proc/loadavg

CPUに接続して再パイプしました。

これを行うより簡単な方法はありますか?コマンドごとに1行を受け取り、JavascriptまたはHTML5 FileReaderを介してその情報をグラフィカルソリューションに簡単に(そしてより重要なことにすばやく)送信できるようにするにはどうすればよいですか。

ベストアンサー1

必要なデータを集計する簡単な方法はないと思いますが、複数のコマンドをまとめてどこからでも出力できます。例を見つけるのに時間がかかりました。

{
  printf '%s' '{"load":["'$(cut -d' ' --output-delimiter='","' -f-3 /proc/loadavg)
  printf '%s' '"],"net":{'
  tail -n+3 /proc/net/dev|awk -F' ' '{
    gsub(/:/,"");
    printf "\"%s\":{\"rxbytes\":\"%s\",\"rxpackets\":\"%s\",\"rxerrs\":\"%s\",\"rxdrop\":\"%s\",\"txbytes\":\"%s\",\"txpackets\":\"%s\",\"txerrs\":\"%s\",\"txdrop\":\"%s\"},",$1,$2,$3,$4,$5,$10,$11,$12,$13
  }'|sed 's/,$//'
  printf '%s' '},"mem":{'
  grep -E '^(MemTotal|MemFree|SwapTotal|SwapFree):' /proc/meminfo|tr 'A-Z' 'a-z'|awk -F' ' '{gsub(/:/,""); printf "\"%s\":\"%s\",",$1,$2}'|sed 's/,$//'
  printf '%s' '}}'
}

次のように圧縮できます。

{ printf '%s' '{"load":["'$(cut -d' ' --output-delimiter='","' -f-3 /proc/loadavg); printf '%s' '"],"net":{'; tail -n+3 /proc/net/dev|awk -F' ' '{ gsub(/:/,""); printf "\"%s\":{\"rxbytes\":\"%s\",\"rxpackets\":\"%s\",\"rxerrs\":\"%s\",\"rxdrop\":\"%s\",\"txbytes\":\"%s\",\"txpackets\":\"%s\",\"txerrs\":\"%s\",\"txdrop\":\"%s\"},",$1,$2,$3,$4,$5,$10,$11,$12,$13 }'|sed 's/,$//'; printf '%s' '},"mem":{'; grep -E '^(MemTotal|MemFree|SwapTotal|SwapFree):' /proc/meminfo|tr 'A-Z' 'a-z'|awk -F' ' '{gsub(/:/,""); printf "\"%s\":\"%s\",",$1,$2}'|sed 's/,$//'; printf '%s' '}}'; }

これにより、次の(有効な)JSONが出力されます。

{"load":["0.00","0.01","0.05"],"net":{"lo":{"rxbytes":"2524231953","rxpackets":"1381864","rxerrs":"0","rxdrop":"0","txbytes":"2524231953","txpackets":"1381864","txerrs":"0","txdrop":"0"},"eth0":{"rxbytes":"2093914043","rxpackets":"2859952","rxerrs":"0","rxdrop":"0","txbytes":"1774385937","txpackets":"1485252","txerrs":"0","txdrop":"0"}},"mem":{"memtotal":"1692584","memfree":"20248","swaptotal":"917500","swapfree":"916288"}}

| whateverその後、カールを閉じて追加して何でもパイプできます。

おすすめ記事