sarコマンドによるLinuxのリソース情報取得方法

sarコマンドとは?

LinuxのHWリソース情報を取得できるコマンドです。
CPU、メモリ、ディスク、ネットワークといった一通りの情報が取得できます。
(以下、CentOS7.6前提で書きます。)

事前準備

sarがインストールされていない場合は下記のパッケージをインストールしましょう。

# yum install sysstat

情報取得方法

基本的にはLinux上でsarコマンドを実行するだけです。
その際、オプションを使うことで取得したいリソースを指定できますが、私が現場で良く使うオプションを紹介します。

CPU情報

"-u"を指定するとCPU使用率の情報を取得できます。

コマンド
# sar -u [取得間隔(秒)] [取得回数]
実行例
# sar -u 1 3 | egrep -v 'Average:'
Linux 3.10.0-957.el7.x86_64 (localhost.localdomain)     04/06/2019      _x86_64_        (2 CPU)

03:43:42 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:43:43 AM     all      0.50      0.00      0.00      0.00      0.00     99.50
03:43:44 AM     all      0.00      0.00      0.50      0.00      0.00     99.50
03:43:45 AM     all      0.00      0.00      0.00      0.00      0.00    100.00

メモリ情報

コマンド

"-r"を指定するとメモリ使用率の情報を取得できます。

# sar -r [取得間隔(秒)] [取得回数]
実行例
# sar -r 1 3 | egrep -v 'Average:'
Linux 3.10.0-957.el7.x86_64 (localhost.localdomain)     04/06/2019      _x86_64_        (2 CPU)

03:42:46 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
03:42:47 AM   1157720    712744     38.11      2244    502232    242848      6.12    277684    291216         0
03:42:48 AM   1157720    712744     38.11      2244    502232    242848      6.12    277688    291216         0
03:42:49 AM   1157720    712744     38.11      2244    502232    242848      6.12    277688    291216         0

ディスク情報

"-d -p"を指定するとディスクごとのIO情報を取得できます。

コマンド
# sar -d -p [取得間隔(秒)] [取得回数]
実行例
# sar -d -p 1 3 | egrep -v 'Average:'
Linux 3.10.0-957.el7.x86_64 (localhost.localdomain)     04/06/2019      _x86_64_        (2 CPU)

03:41:21 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:41:22 AM       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:22 AM centos-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:22 AM centos-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

03:41:22 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:41:23 AM       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:23 AM centos-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:23 AM centos-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

03:41:23 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:41:24 AM       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:24 AM centos-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:24 AM centos-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

ネットワーク情報

"-n DEV"を指定するとネットワークインタフェースごとのIO情報を取得できます。

コマンド
# sar -n DEV [取得間隔(秒)] [取得回数]
実行例
# sar -n DEV 1 3 | egrep -v 'lo|Average:'

03:51:57 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:51:58 AM      eth0      3.00      0.00      1.12      0.00      0.00      0.00      2.00

03:51:58 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:51:59 AM      eth0      6.00      1.00      2.58      0.32      0.00      0.00      5.00

03:51:59 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:52:00 AM      eth0      2.00      1.00      0.57      0.32      0.00      0.00      1.00

取得項目の詳細

詳しく紹介してくれている方がいるので、以下を参照してみてください。
sarコマンドの使い方
sarコマンドでLinuxサーバのシステムモニタリングを行う方法

なぜ実行例ではegrepをかけているのか

普通にコマンド出力するとAverage(平均値)の行が入るのですが、それを除外するためです。sarの出力結果をExcelで加工する際に邪魔になるので出力の段階で省いてます。私の場合は最終的にピボット表で合計や平均を出すことが多いので尚更不要です。
あとネットワークのコマンドでloを除外しているのはループバックは見る必要がないことが多いためです。


以上。

【忘却のJava#2】CentOS7.6@Hyper-VでJava11の実行環境をつくる

目次

 

環境づくり

久しぶりにHyper-Vを触って、環境構築しました。

Windows10上にサーバを建てましたが、小さめスペックのIntel NUCを使ってる関係でディスクが少ないのでCentOSはminimal版でインストール。

構成

仮想マシンHyper-V on Windows10 (CPU=2core / MEM=2GB)

仮想OS: CentOS7.6 (minimal)

Javajava-11-openjdk

 

仮想マシン構築

Hyper-Vマネージから仮想マシン1台を作成しました。

f:id:wingfair:20190406005726p:plain

Hyper-Vマネージャ(サンプル)

VM起動時に以下のようなエラーが出て、VMが動かず1時間くらいハマりました。

ハイパーバイザが実行されていないため、仮想マシンが起動できません

基本的にはCPUの仮想化支援が有効化されていないと出るやつです。

 

以下の流れで動くようになりました。

サービスからVMMが正常に動いてるか確認 ⇒ OK

BIOS設定画面からIntel-VTが有効化されている確認 ⇒ OK

手詰まったのでHyper-Vサービスを入れ直す

エラーが解消し、VMが正常に起動 うーんナゾ

 

CentOSインストール

公式サイトからダウンロードしたMinimal ISOからブートしてGUIでポチポチ進めます。

インストール先のディスク、タイムゾーン、rootパスワードを設定するくらいで後はインストーラが勝手に進めてくれます。

それにしてもしばらく見ないうちにグラフィカルになってますね。

minimalでも。

f:id:wingfair:20190406011538p:plain

 

f:id:wingfair:20190406005421p:plain

インストール画面(サンプル)

 

ネットワーク設定

インストールが完了してlogin表示までいったら、まずはネットワーク設定しときます。インターネット使ってyumで入れたいので、IPアドレスを設定します。

VMはあらかじめHyper-V側でNWアダプターを外部スイッチに接続しています。

# nmcli c m eth0 ipv4.address 192.168.10.4/24 ipv4.gateway 192.168.10.1
# systemctl restart network

 

JDKインストール

# yum install java-11-openjdk
# yum install java-11-openjdk-devel

 

動作確認

動作確認用にviでHelloWorldを書きました。

Javaコード

class HelloWorld {
	public static void main (String[] args) {
		System.out.println("Hello World!");
	}
}

 

実行結果

# javac HelloWorld.java

# java HelloWorld
Hello World!

 

以上。

【忘却のJava#1】Javaを思い出すために絵本を読みました

 これからSpring Bootを触ってみたいと思ってるので、その前にプログラミング言語の概念とか書き方とか初歩的な所をおさらいです。

 

 会社でJavaの研修を受けたのが、かれこれ7年前くらいですが、その後はひたすらインフラ領域のお仕事だったので、プログラミングとしてのJavaは一切触れていませんでした。なのでクラス、オブジェクト、継承、インタフェースって何となく覚えてるけど、どう違ってどう使えるんだっけ?オーバーロードとオーバーライドって何が違うんだっけ?ポリモーフィズムって何だっけ?などなど、恥ずかしながらそんなレベル・・・

 

 で、読んだ本はこちらです。

 「Javaの絵本

 非常に優しいで本なので、さくっと一通り思い出すにはちょうど良かったです。

持っていたのが、Java5.0を対象とした版なので古いですが、あくまで雰囲気を掴むということで、だいたい2時間くらいで読み切りました。

 

 次回は何かコードを書いてみたいと思います。

 

以上。

【とはメモ#2】「Scrum(スクラム)」とは?

 前回はアジャイルについて書きました。

今回はScrumについて学習したので、どんなものなのか復習の意味を込めて書き残します。

 

目次

 

「Scrum(スクラム)」とは?

  • アジャイル開発のフレームワークの1つ
  • チーム一丸となって「プロダクト」をつくるための最低限のルールを定めたもの
  • 3~9人でチームを組む
  • 「スプリント」を繰り返しながら開発する
  • 以下が定義されている
    ・「ロール」
    ・「イベント」
    ・「成果物」

 

「プロダクト」とは?

  • Scrumで開発されるソフトウェアそのもの
  • マニュアルなどドキュメントが含まれていてもよい

 

「スプリント」とは?

  • Scrumの開発の繰り返し単位
  • 1スプリントの期間は1~4週間
  • 開発メンバの力量で期間の長さは選べる
  • スプリントの長さは固定で変更は不可
    (開発リズムを一定化することで、チームの生産性の向上と測定が容易なため)

 

「ロール」とは?

  • Scrumでチームメンバーが担う役割
  • 以下のロールが定義されている
    ・「プロダクトオーナー(PO)」
    ・「スクラムマスター(SCM)」
    ・「開発チーム(DEV)」

 

「プロダクトオーナー(PO)」とは?

  • プロダクトに責任を持ち管理するヒト
  • プロダクトの機能や特徴を定義したり、リリース日を決める
  • プロジェクトの目的やゴールをチームに示す
  • スプリントで何を優先して作るか優先順位を決める

 

スクラムマスター(SCM)」とは?

  • Scrumの活動が上手くいくように管理するヒト
  • ロールやイベントの目的、やり方などをメンバーに教える教育係 
  • 何か問題が起きたら解決できるようにメンバーをサポート
  • とにかく開発チームが開発に専念できるように努める

 

「開発チーム(DEV)」とは?

  • プロダクトを開発するヒト
  • 個人が得意な作業だけを行うのではなく、技術やマネジメントなど機能横断的に振る舞うことが求められる

 

「イベント」とは?

  • Scrumで実施する会議
  • 以下のイベントが定義されている
    ・「スプリント計画会議」
    ・「デイリースクラム
    ・「スプリントレビュー」
    ・「振り返り」

 

「スプリント計画会議」とは?

  • そのスプリントで取り組む要求と実現方法を決めるための会議
  • POはスプリントは達成したいことを伝え、それに対してDEVはどんな作業と見積もりで実現できそうか答える
  • 時間はスプリントの期間の5%で固定

 

「デイリースクラム」とは?

  • 毎日決まった場所、決まった時間で行う会議
  • DEVが主体となり昨日やったこと、今日やること、問題になっていることを話す
  • 時間は15分間で固定

 

「スプリントレビュー」とは?

  • スプリントの「インクリメント」を確認するための会議
  • 実際に動くデモを実施し、POがそのスプリントが完了かどうか判断する
  • ステークホルダーを招集し、フィードバックをもらう

 

「振り返り」とは?

  • スプリントの進め方を振り返る会議
  • あくまで進め方であり、プロダクトそのものの評価は行わない
  • 次のスプリントへの改善計画を立てる

 

「成果物」とは?

  • Scrumでアウトプットするもの
  • 以下の成果物が定義されている
    ・プロダクトバックログ
    ・スプリントバックログ
    ・インクリメント

 

「プロダクトバックログ」とは?

  • ユーザの要求を記述したもの
  • 誰がどんな機能を何のために欲しいかなどを記述する
  • POが優先順位をつけて、一覧化しておく
  • スプリントの計画管理がしやすいため
  • 誰でも更新してOKで日々更新されていく

 

「スプリントバックログ」とは?

  • プロダクトバックログを実現するための具体的なタスクを記述するもの
  • DEVがタスクの洗い出しと作業時間の見積もりを反映させる
  • スプリント計画会議で作成する

 

「インクリメント」とは?

  • スプリントで完成したプロダクトそのもの
  • スプリントレビューで見せられるように動作するものである必要がある

 

 

 ここまで書いてきた要素でScrumは成り立っています。

ですが、あくまでフレームワークであって、必ず成功できる方法論ではないです。

大事なことは以下の目的を忘れずにチームで協力し合い、失敗から学び、より良いものをつくっていこうとするマインドみたいです。

 

 「Scrumの目的」とは?

  • ユーザにとって価値のあるプロダクトをつくること
  • 問題発見と改善を繰り返し、チームとして生産性をあげること

 

 

以上。

【とはメモ#1】「アジャイル」とは?

 新元号「令和」が発表されたということで新鮮な気持ちでブログを書き始めます。

 時間が経つとせっかく学んだ技術や用語について、要するに何だっけ?を忘れることがあるので、〇〇とは?という形で備忘として残していきたいと思ってます。

 初投稿は「アジャイル」とは?です。

 

目次

 

アジャイル」とは?

  • ソフトウェア開発手法の1つ
  • ソフトウェアを少しずつ作って、できたものをその都度、ユーザに見せてフィードバックを得ながら、次の開発に反映させていく
  • ウォーターフォールのように長期間かけて最後に1回だけユーザに見せるよりは、小さな単位で要求を反映しながら開発するアジャイルの方が手戻りが少ない
  • 小さいウォーターフォールを短期間で繰り返すイメージ
    (※あくまでイメージ)

f:id:wingfair:20190402234127p:plain

アジャイルのイメージ

 

書籍

www.amazon.co.jp

 

 アジャイルフレームワークであるScrumの研修を受けたので、この本で復習中です。会社のアジャイルな人にオススメしてもらいました。

Scrum入門する人はだいたいこれ読むらしいですが、単純な座学だけでなく、実践を想定した漫画や説明がついていて参考になります。

 

次回はScrumについて学んだことをまとめたいと思います。

 

以上。