【dstat完全ガイド】Linux/UNIXサーバーを効率的に監視する方法
この記事では、コマンドラインツール「dstat」を使ってLinux(UNIX)サーバーを監視する手順を、インストールから応用テクニックまで段階的に解説します。
オフィスやデータセンターで運用しているLinuxサーバーの稼働率(アップタイム)は、できる限り100%に近づけたいものです。そのためには、システムが安定して動作しているかどうかを常に把握しておく必要があります。具体的には、メモリ、CPU、ディスク使用量など、システムの安定稼働に関わるすべてのリソースを監視対象とすることが重要です。
通常、こうした監視にはLinuxやUNIXに標準で搭載されている「free」「top」「vmstat」といったツールを組み合わせて使うのが一般的ですが、本記事で紹介するDstatは、これら複数のツールの情報をひとつにまとめて提供してくれる優れものです。開発者のDag Wieers氏は、このコマンドラインツールについて「vmstat、iostat、netstat、ifstatの多用途な代替ツールであり、これらの制限を克服し、追加機能も備えている」と説明しています。筆者に言わせれば、Dstatは「コマンドライン型システム監視ツールの決定版」です。インストールは簡単で、操作性にも優れ、柔軟にカスタマイズでき、さらに出力結果をグラフ化してレポートにすることもできます。
Dstatのインストール
まずはDstatのインストーラーをダウンロードしましょう。WebブラウザでDstatプロジェクトの公式サイト(https://dag.wieers.com/home-made/dstat/)にアクセスし、ページを下へスクロールしてダウンロードセクションを表示します。インストール先となるLinuxディストリビューションに対応した最新バージョンのDstatを選択してダウンロードしてください。
ここでは、Red Hat Enterprise Linux 4のマシンへのインストール例を紹介します。まずwgetコマンドでパッケージを取得します。
# wget https://dag.wieers.com/rpm/packages/dstat/dstat-0.6.6-1.el4.rf.noarch.rpm
続いて、rpmコマンドでDstatをインストールします。
# rpm -Uvh dstat-0.6.6-1.el4.rf.noarch.rpm
エラーなくインストールが完了すれば、Dstatを使う準備は整いました。もし依存関係のエラーが発生した場合は、必要なパッケージを追加インストールしてから再度試してください。Dstatの依存パッケージは多くないため、大きな問題にはならないはずです。
Dstatの基本的な使い方
インストールが完了したら、さっそくターミナルから以下のコマンドを実行してみましょう。
# dstat
実行すると、以下のような出力が1秒ごとに表示されます。終了するにはCtrl+Cキーを押します。
# dstat
---total-cpu-usage--- -disk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq|_read write|_recv _send|__in_ _out_|_int_ _csw_
7 1 91 1 0 0| 0 0 | 0 0 | 0 0 | 0 0
1 0 99 0 0 0| 0 0 | 0 0 | 0 0 |1051 1945
0 0 100 0 0 0| 0 12k|2269B 11.2k| 0 0 |1031 1923
1 0 99 0 0 0| 0 40k| 0 0 | 0 0 |1078 2235
0 0 100 0 0 0| 0 16k|6027B 21.5k| 0 0 |1008 2219
Dstatには多数のオプションが用意されており、カスタマイズも非常に簡単です。たとえば、CPU・ディスク・ネットワークの情報だけに絞って表示したい場合は、次のようにオプションを組み合わせます。
# dstat -CDN
利用可能なオプションの一覧は、ヘルプドキュメントで確認できます。
# dstat -h
いくつかオプションを試しながら、使い方に慣れておくとよいでしょう。なお、データを読み取るデフォルトの間隔は2秒に設定されていますが、この間隔は自由に変更可能です。たとえば10秒ごとの更新にしたい場合は、引数に数値を指定するだけです。
# dstat 10
表示回数と更新頻度の指定
Dstatでは、集計更新の回数と頻度を指定することもできます。「3秒ごとに5回だけ測定したい」といった場合は、次のように実行します。
# dstat 3 5
このように指定すると、新しい行が3秒ごとに追加されつつ、各行の数値自体も毎秒更新されるため、変化の推移をリアルタイムに追いかけることができます。
CSVファイルへの出力とグラフ化
Dstatの最も便利な機能のひとつが、出力結果のファイル保存です。セッションの出力をカンマ区切り(CSV)形式のファイルに書き出せば、後からMicrosoft ExcelやOpenOffice Calcなどの表計算ソフトに取り込み、データをグラフ化できます。
# dstat --output /tmp/dstat_data.csv -CDN
上記のコマンドを実行したまま、アプリケーションの起動や負荷テストなどを行います。計測が終わったらCtrl+Cで停止し、生成されたdstat_data.csvを表計算ソフトで開きましょう。グラフ化したい列を選択すれば、あとは表計算ソフトが見事なチャートを作成してくれます。
レポートをメールで自動受信する
一定期間にわたるサーバーのパフォーマンス推移を確認したいケースもあるでしょう。そんなときは、LinuxのバックグラウンドプロセスとしてDstatを実行し、定期的にデータを収集してレポートを作成、メールで送信する仕組みを構築できます。これはストレステスト(負荷テスト)の際に特に役立ちます。
以下のシェルスクリプトは、30秒間隔で360回(=3時間分)データを収集し、その結果をCSVファイルとしてメール送信するものです。
#!/bin/bash
dstat --output /tmp/dstat_data_mail.csv -CDN 30 360
mutt -a /tmp/dstat_data_mail.csv -s "Dstat Report for 3 hour run" me@myemailid.com < /dev/null
上記のスクリプトをサーバー上にdstat_script.shという名前で保存し、実行権限を付与してからバックグラウンドプロセスとして起動します。
# chmod +x dstat_script.sh
# nohup ./dstat_script.sh &
これだけで設定完了です。非常に簡単ですね。スクリプトの実行が終了すると、収集されたレポートがメールで届きます。さらに、このスクリプトをcronで毎日定時実行するようにスケジュールすれば、日々のサーバー状態を自動的にレポートとして受け取ることも可能です。
まとめ
Dstatは、パフォーマンス監視やトラブルシューティングにおいて非常に強力なツールです。収集するデータの粒度、頻度、種類はすべてユーザーが自由にコントロールでき、サーバー内部で何が起きているのかを正確に把握できます。賢く活用すれば、サーバー障害による眠れない夜をぐっと減らせることでしょう。
-
Linuxスクリプトを活用してWindows 10のデスクトップを自動整理する方法
この記事のタイトルを初めて見たとき、「技術的に間違っているのでは?」と感じるかもしれません。LinuxとWindowsはまったく別のOSであり、互いに無関係な存在だからです。かつてWindows上でLinuxスクリプトを使うには、Cygwinのようなツールをインストールするか、デュアルブート環境を構築するか、Sambaを導入するしかありませんでした。しかし、Windows 10の登場によって状況は一変しました。Microsoft Storeから複数のLinuxディストリビューションを入手できるようになったのです。WSL(Windows Subsystem for Linux)を利用すれば、Wi
-
iMacをMacBook Proの外部モニターとして使う2つの方法【AirPlayとターゲットディスプレイモード】
MacBook Proで作業をしていて、「画面がもう少し広ければ…」と感じたことはありませんか? 使っていないiMacが眠っているなら、そのディスプレイをMacBook Proのセカンドモニターとして活用してみてはいかがでしょうか。 2021年10月にリリースされたmacOS 12 Montereyでは、Appleが「AirPlay to Mac」機能を導入し、別のMacへワイヤレスで映像信号を送信できるようになりました。 しかし、iMacが古すぎてMontereyが動作しない場合でも、諦める必要はありません。「ターゲットディスプレイモード」という旧機能を利用できる可能性があります。