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)
仮想マシン構築
VM起動時に以下のようなエラーが出て、VMが動かず1時間くらいハマりました。
「ハイパーバイザが実行されていないため、仮想マシンが起動できません」
基本的にはCPUの仮想化支援が有効化されていないと出るやつです。
以下の流れで動くようになりました。
サービスからVMMが正常に動いてるか確認 ⇒ OK
↓
BIOS設定画面からIntel-VTが有効化されている確認 ⇒ OK
↓
手詰まったのでHyper-Vサービスを入れ直す
↓
エラーが解消し、VMが正常に起動 うーんナゾ
CentOSインストール
公式サイトからダウンロードしたMinimal ISOからブートしてGUIでポチポチ進めます。
インストール先のディスク、タイムゾーン、rootパスワードを設定するくらいで後はインストーラが勝手に進めてくれます。
それにしてもしばらく見ないうちにグラフィカルになってますね。
minimalでも。
ネットワーク設定
インストールが完了してlogin表示までいったら、まずはネットワーク設定しときます。インターネット使ってyumで入れたいので、IPアドレスを設定します。
VMはあらかじめHyper-V側でNWアダプターを外部スイッチに接続しています。
JDKインストール
動作確認
動作確認用にviでHelloWorldを書きました。
Javaコード
実行結果
以上。
【忘却のJava#1】Javaを思い出すために絵本を読みました
これからSpring Bootを触ってみたいと思ってるので、その前にプログラミング言語の概念とか書き方とか初歩的な所をおさらいです。
会社でJavaの研修を受けたのが、かれこれ7年前くらいですが、その後はひたすらインフラ領域のお仕事だったので、プログラミングとしてのJavaは一切触れていませんでした。なのでクラス、オブジェクト、継承、インタフェースって何となく覚えてるけど、どう違ってどう使えるんだっけ?オーバーロードとオーバーライドって何が違うんだっけ?ポリモーフィズムって何だっけ?などなど、恥ずかしながらそんなレベル・・・
で、読んだ本はこちらです。
「Javaの絵本」
非常に優しいで本なので、さくっと一通り思い出すにはちょうど良かったです。
持っていたのが、Java5.0を対象とした版なので古いですが、あくまで雰囲気を掴むということで、だいたい2時間くらいで読み切りました。
次回は何かコードを書いてみたいと思います。
以上。
【とはメモ#2】「Scrum(スクラム)」とは?
前回はアジャイルについて書きました。
今回はScrumについて学習したので、どんなものなのか復習の意味を込めて書き残します。
目次
- 目次
- 「Scrum(スクラム)」とは?
- 「プロダクト」とは?
- 「スプリント」とは?
- 「ロール」とは?
- 「プロダクトオーナー(PO)」とは?
- 「スクラムマスター(SCM)」とは?
- 「開発チーム(DEV)」とは?
- 「イベント」とは?
- 「スプリント計画会議」とは?
- 「デイリースクラム」とは?
- 「スプリントレビュー」とは?
- 「振り返り」とは?
- 「成果物」とは?
- 「プロダクトバックログ」とは?
- 「スプリントバックログ」とは?
- 「インクリメント」とは?
- 「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がそのスプリントが完了かどうか判断する
- ステークホルダーを招集し、フィードバックをもらう
「振り返り」とは?
- スプリントの進め方を振り返る会議
- あくまで進め方であり、プロダクトそのものの評価は行わない
- 次のスプリントへの改善計画を立てる
「成果物」とは?
「プロダクトバックログ」とは?
- ユーザの要求を記述したもの
- 誰がどんな機能を何のために欲しいかなどを記述する
- POが優先順位をつけて、一覧化しておく
- スプリントの計画管理がしやすいため
- 誰でも更新してOKで日々更新されていく
「スプリントバックログ」とは?
- プロダクトバックログを実現するための具体的なタスクを記述するもの
- DEVがタスクの洗い出しと作業時間の見積もりを反映させる
- スプリント計画会議で作成する
「インクリメント」とは?
- スプリントで完成したプロダクトそのもの
- スプリントレビューで見せられるように動作するものである必要がある
ここまで書いてきた要素でScrumは成り立っています。
ですが、あくまでフレームワークであって、必ず成功できる方法論ではないです。
大事なことは以下の目的を忘れずにチームで協力し合い、失敗から学び、より良いものをつくっていこうとするマインドみたいです。
「Scrumの目的」とは?
- ユーザにとって価値のあるプロダクトをつくること
- 問題発見と改善を繰り返し、チームとして生産性をあげること
以上。
【とはメモ#1】「アジャイル」とは?
新元号「令和」が発表されたということで新鮮な気持ちでブログを書き始めます。
時間が経つとせっかく学んだ技術や用語について、要するに何だっけ?を忘れることがあるので、〇〇とは?という形で備忘として残していきたいと思ってます。
初投稿は「アジャイル」とは?です。
目次
「アジャイル」とは?
- ソフトウェア開発手法の1つ
- ソフトウェアを少しずつ作って、できたものをその都度、ユーザに見せてフィードバックを得ながら、次の開発に反映させていく
- ウォーターフォールのように長期間かけて最後に1回だけユーザに見せるよりは、小さな単位で要求を反映しながら開発するアジャイルの方が手戻りが少ない
- 小さいウォーターフォールを短期間で繰り返すイメージ
(※あくまでイメージ)
書籍
アジャイルのフレームワークであるScrumの研修を受けたので、この本で復習中です。会社のアジャイルな人にオススメしてもらいました。
Scrum入門する人はだいたいこれ読むらしいですが、単純な座学だけでなく、実践を想定した漫画や説明がついていて参考になります。
次回はScrumについて学んだことをまとめたいと思います。
以上。