XenServerで幾つかサーバーを運用してます。
実験的なサービスなどは非安定版のソフトウェアを使うことが多く、VMがフリーズしてしまうこともたまにあります。
(サポートされたOSで安定してるソフトウェアを使う分にはVMがフリーズした事はなく、コントロールドメイン自体もフリーズ等の問題が起きたことはないので、XenServer自体の安定性には問題はないと思います。)
例えVMがフリーズしてしまったとしても、XenServer(コントロールドメイン)自体は問題なく動いてるので、ssh接続してxsconsoleから該当のVMを強制再起動させるだけで復旧出来るので大きな問題ではないですが、外出中でノートPCもない場合(基本僕はノートPCは持ち歩きません)ssh接続自体が出来なくてオワタ\(^o^)/となります。
そこでいつも持ち歩いてるiPhoneにTouchTerm(450円:Proじゃない方)を入れて使ってみたのですが、xsconsoleが表示できなくてここでもオワタ\(^o^)/となってしまいました。
(xsconsoleはターミナルの縦横文字数が少ないとエラーを出して起動しないので、それを満たすようにTouchTermの文字サイズを小さくすることでxsconsoleはエラーを出さず起動するようになったようなのですが、全く内容が表示されないという問題が起きてしまい操作できませんでした。)
TouchTerm自体は、3G回線でも接続でき、ポートもデフォルトの22から変更することができ、鍵の生成・利用もできるので、ssh接続してコマンドを打つという用途だと過不足なく実行可能ですばらしいアプリだと思います。
で、xsconsoleを使わずにVMの強制再起動をするために、XenServerのコマンドを色々調べたのでちょっとまとめておきます。
xe vm-list
すべてのVM(起動中か否かに関係なく)の情報を表示します。情報の内容はVMのuuid、name-label、power-state(起動中かどうかの状態)。
xe vm-list power-state=running is-control-domain=false params=all
オプションの意味はそのまんまです。実行結果を見れば分かりますがすべてのパラメータってのがかなり多め(60個以上)。
これで表示されるパラメータをpower-state=runningみたいにVMの絞り込みのオプションに使えます。
xe vm-list power-state=running is-control-domain=false params=name-label,uuid
paramsにallではなく、パラメータ名をカンマ区切りで指定すると、指定したパラメータの分だけ表示されます。
xe vm-param-list uuid=12345678-9abc-def0-1234-56789abcdef0
実はvm-listだと値を取得するのに計算リソースを食うという理由でCPU使用率等表示されないパラメータがいくつかありますが、vm-param-listでは表示されます。
その代わりuuidの指定が必要で一度に表示出来るのは一つのVMについてのみです。
xe vm-param-get uuid=12345678-9abc-def0-1234-56789abcdef0 param-name=VCPUs-utilisation
これでCPU使用率が取得出来ます。小数点以下桁数3の数値で表示され0.000がCPU利用率0%、1.000がCPU利用率100%に相当するようです。
さらに仮想CPUコアが複数ある場合もあるため、例えば2コアの場合は、”0: 0.251; 1:0.036″のように表示されます。
1コアの場合も同じく、”0: 0.843″のように表示されます。
xe vm-param-get uuid=12345678-9abc-def0-1234-56789abcdef0 param-name=VCPUs-utilisation param-key=0
CPU使用率以外にも<key>: <value>; <key>: <value>…という形式の値になってるパラメータがありますが、param-keyに<key>を指定すれば<value>だけを抽出することができます。
xe vm-param-get uuid=12345678-9abc-def0-1234-56789abcdef0 param-name=os-version param-key=name
os-versionパラメータには、OS名などが<key>: <value>の形で格納されています。os-versionの場合はnameキーでOS名が取得できます。
xe vm-reboot uuid=12345678-9abc-def0-1234-56789abcdef0 force=true
ま、見たまんまですね。
あらかじめVMのuuidを調べておけば、今回の用途で必要なのは最後の強制再起動コマンドだけですが、vm-list、vm-param-list、vm-param-getを使いこなせれば、一般的な用途で必要なVMの情報のほぼすべてが参照できるはずです。
自動でCPU使用率をモニタリングして一定時間以上100%に張り付いてたらpingなどで生存チェックして強制再起動するというスクリプトも作れるでしょう。
最近のコメント
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
peta_okechan
針金みたいなパーツを引っ張ると外れます。 他の方の…
虎徹ファン交換
虎徹の標準ファンを外す際に、どのようにして外されま…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…