Linux環境でServerspecを使ってみる part1

ひさしぶり?に技術関連のお話です。
今日からしばらく、Serverspecのことを取り上げようと思います。

Serverspecって何?

Serverspec - Home

簡単に言うとサーバ向けのテストツールで、サービスの起動停止状態や各種configのテストなどが実施できます。
こういったテストツールを使うことで、システムの構成が頻繁に変わるような環境や規模の大きい環境でも、効果的・効率的にテストを進めることが可能になります。

各種サービスの起動・停止状態をテストするとします。
これを原始的に手動確認する場合、chkconfig/etc/init.d/[service名] statusをサービスごとに確認することになると思います。
このやり方だと、手作業によるミス・漏れが発生するリスクが大きく、ましてや規模の大きいシステムだとなおさら大変なことになります。

Serverspecの場合、以下のような(httpdの例)テストスクリプトを用意しておき、これを実行することで試験対象のサーバのhttpdのサービス起動状態を確認することができます。

describe service('httpd') do
  it { should be_enabled }  # chkconfig 相当の確認
  it { should be_running }   # /etc/init.d/httpd status 相当の確認
end

このような記述をあらかじめ用意しておくことで、一貫性のあるテストを繰り返し実行できるようになります。

ちなみに、ソフトウェア開発の分野ではテスト駆動開発(Test Driven Development:TDD)という、事前にテスト環境を用意してそれをクリアするコードを実装していく開発スタイルがあり、Serverspecを用いてTDDをインフラに応用する動きが出ているようです。

今後やろうとしてること

こちらの記事で、apacheのインストールをやりましたので、これを例にServerspecでapacheのテストをやっていこうと思います。
PuppetでApacheを管理してみる part3 - ressyのナレッジ的なブログ

参考

この記事は、以下を参考にしています。

Serverspec - Home

「Serverspec」を使ってサーバー環境を自動テストしよう - さくらのナレッジ


マラソンの話:湘南国際マラソン完走!

本日、湘南国際マラソンに参加して来きたのでその話をその話を。

湘南国際マラソンとは?

今年で11回目となる、湘南で開催されてる非常に大きな大会です。

www.shonan-kokusai.jp

今年はフルマラソンの部だけで19,000人参加しています。

コースは湘南の沿岸沿いのバイパスを往復する、非常にまっすぐなコースです。
高低差も比較的少なく、初フルマラソン!って人でもわりと走りやすいかなと思います。

結果報告

無事に完走しました!
といっても結果は満足しておらず 、タイムは4時間31分(ネットタイム)でした。
35km地点まではいい感じ(1kmあたり5:50~5:20くらいのペース)だったのに、急に脇腹痛に襲われて大ブレーキがかかってしまいました(1kmあたり8~10分くらい。ほぼ歩きペース)。
しかも、脇腹痛の対処方法も知ってたはず(あとで記事にしよっと)なのに、なぜかそれを思い出せなかった。

途中まで良かっただけに悔やまれます。。。

でもでも、なんだかんだ言って楽しかったです!


Vimiumを使ってみる part2

こちらの続きで、Vimiumをカスタマイズしていきます。

Vimiumを使ってみる part1 - ressyのナレッジ的なブログ

Vimiumのカスタマイズ

Chromeの右上にあるVimiumのロゴをクリックし、現れたウィンドウの左下にある[Options]を選択しましょう。

f:id:ressy-tech:20161203143250p:plain

するとこんな画面が現れます。

f:id:ressy-tech:20161203143743p:plain

[Custom key mappings]とあるテキストボックスで、キーバインドのカスタマイズを行います。
ここに、以下のような構文をひたすら書いていく形になります。

map [キー1] [操作1]
map [キー2] [操作2]
map [キー3] [操作3]
...

例えば、jをページの下スクロールに割り当てたければ、map j scrollDownとなります。 [操作]の部分に入る記述は、テキストボックスの右側にある[Show available commands]を選択すればわかります。

編集を終えたら、画面下の[Save Changes]を選択すればカスタマイズ完了です。
実際に操作して使い心地を確認しながら、キーバインドを設定しましょう。

私が設定しているキーバインド

せっかくなので、私が設定しているキーバインドを紹介します。
一から考えるのが面倒な人はこれをたたき台にしてみては?

map j scrollDown
map k scrollUp
map h previousTab
map l nextTab
map J scrollPageDown
map K scrollPageUp
map H goBack
map L goFoward
map o Vomnibar.activate
map O Vomnibar.activateInNewTab
map / enterFindMode
map r reload
map x removeTab
map u restoreTab

自分の場合、タブを複数開いて作業することがよくあるので、タブ移動が楽なキーバインドにしています。

ちなみに

VimiumではAdvanced Optionsというより高度なオプションがあります。
スクロール幅やfでリンクを選ぶ時に使える文字の指定などができるみたいです。
キーバインドと同じ設定画面上にあるので、興味のある人は使ってみましょう。

参考

この記事は、以下を参考にしてます。

http://qiita.com/minamijoyo/items/4daeffb836f9d1bf4d93


Vimiumを使ってみる part1

自分は普段、ブラウザとしてchromeを使っています。
ある程度キーボード操作をすることはできるのですが(chromeに限らないことですが)、ほとんどがcommandキーやoptionキーと組み合わせて使うので、ちょっと押しにくいなぁって思うことがあります。

と言うわけで、もっと楽にキーボード操作できるようにしたいと思います。

Vimiumを使う

Vimiumとは、chromeVim風に操作できるようにするプラグインです。

chrome.google.com

これを使うと、"H"や”L"だけでタブ移動できたり、”o"で検索窓を開いたりできます。
commandキーとかoptionキーとかを使わないで済むので、ブラウザ操作が楽&スピーディーになると思います。
(普段からエディタとしてVimを使っている人なら、結構すぐに使い慣れるのでは?)

上記のリンクよりインストールするだけで、すぐに使えるようになります。

デフォルトのキーバインド

よく使いそうなものだけピックアップ(他にもいろいろあります)

  • j:下へスクロール
  • k:上へスクロール
  • d:半ページ下へスクロール
  • u:半ページ下へスクロール
  • o:検索窓を開く
  • O:検索窓を開く(検索結果は新規タブで開く) -gT:左のタブへ移動 -gt:右のタブへ移動
  • /:ページ内検索
  • f:リンクを選択
  • F:リンクを選択(新規タブで開く)

ちなみにfFを押すとこんな感じ。

f:id:ressy-tech:20161201223716p:plain

例えば、この画面でsfまたはSFと入力するとgoogleの検索ページへ移動できます。
デフォルトのままでもいいのですが、個人的にはもう少し操作を楽にしたいです。
とうわけで、次回はキーバインドをカスタマイズしようと思います。

参考

この記事は、以下を参考にしています。

Chromeをvimライクに使えるようにするvimium - Qiita


サーバ監視に関する基本中の基本の話 part3

サーバ監視に関する基本中の基本について話していきたいと思います。
この記事の続きになります。

サーバ監視に関する基本中の基本の話 part2 - ressyのナレッジ的なブログ

注意

サーバ監視に関する基礎を書いて行こうと思いますが、私自身の考えも色々と含まれております。
中には、反論したくなるような考えもあるかもしれませんが、考え方の一つという程度に留めていただければと思います。

サーバで起きやすいトラブル

こちらの参考書をベースに、サーバで起きやすいトラブルについて勉強していきたいと思います。
サーバ/インフラエンジニア養成読本 管理/監視編 [24時間365日稼働を支える知恵と知識が満載!] (Software Design plus)

本書では、以下の6つの例を取り上げているので、これベースで勉強します。

  1. Webサービスを使っているときに、画面が表示されないことがある
  2. まったくWebサーバへ接続できなくなった
  3. Webサーバを再起動したら、Webサーバにアクセスできなくなった
  4. 急にデータベースにデータを追加できなくなった
  5. サーバから英文メールが通知される
  6. Webサービスが重い

1. Webサービスを使っているときに、画面が表示されないことがある

こんな現象が発生したとします。

  • Webサービスを使っているときに、画面が表示されない症状が起きた
  • ブラウザのリロードをすると、ページが表示された
  • 画面が表示されない事象は不規則におきる

この現象が発生したとき、考えられる原因(例)はこの通りです。

  1. アプリケーションの更新による不具合
  2. Webサーバの負荷が高い
  3. Webサーバ内部のエラー

1) アプリケーションの更新による不具合

topコマンドなどを使用して、アプリケーション更新後にWebサーバの負荷が急増してないか確認しましょう。
負荷が急増している場合は、アプリケーション更新が原因の可能性があります。
更新前との差分を比較し、ボトルネックを特定してアプリケーションを修正する必要があります。

2) Webサーバの負荷が高い

ロードアベレージを確認したり、エラーログ(/var/log/httpd/error_logなど)を確認しましょう。
ここで問題を見つけた場合、エラーログの内容に従って対策が必要です。

3) Webサーバ内部のエラー

システムログ(/var/log/messagesなど)を確認して、原因特定のヒントになる情報がないかを確認しましょう。
その原因に応じた対応が対応が必要になります。

参考

本記事は、以下を参考にしています。


マラソンの話:一定のペースで長い距離を走るのは意外と難しい part2

前回の続きで、デッドポイントとの向き合い方についてはなそうとおもいます。

マラソンの話:一定のペースで長い距離を走るのは意外と難しい part1 - ressyのナレッジ的なブログ

考え方

デッドポイントの対策は、場面によって異なると考えた方がよいでしょう。

  • ランニング開始からすぐに訪れるデッドポイント
  • オーバーペースで訪れるデッドポイント
  • 普段のペースで長時間走っているときのデッドポイント

各々解説します。

ランニング開始からすぐに訪れるデッドポイント

ランニング開始後、数分くらいはデッドポイントが訪れがちです。
理由は単純で、体が慣れてないからです。
詳しくは前回記事を見ればわかるとおもいます。

対策としては、初めの数kmはゆっくり走る、ウォーミングアップをしてから(1km程度でOK)ランニングを始める、などが定番だと思います。

自分の場合は、最初は近くの公園や河川敷まで(1km程度)ジョギングペースで走り、そこで準備体操を多めにやってから、ランニングを開始しています。
ジョギングとランニングの間に体操を挟むことで、慣れてない体を休ませつつジョギングの効果で体を慣れさせています。

少なくとも、初めのうちは普段より遅めのペースを心掛けた方がよいでしょう。
無理に維持すると、体が慣れる前に疲れてしまい、かえって走れる距離が短くなってしまいます。

オーバーペースで訪れるデッドポイント

オーバーペースで走った結果苦しくなるのも、基本的にデッドポイントと同じ症状です。
理由は前回記事の通り、酸素不足になっているからです。

これは経験論ですが、オーバーペースで一度苦しくなると、元のペースを取り戻すのは結構難しいです。
というのは、オーバーペースで苦しくなるのを自覚するころにはすでに、体力をだいぶ使ってしまっているからです。

オーバーペースになると、息を整えるために、ペースを落として普段よりゆっくり走ってしまいがちですが、オーバーペースで一度ペースを落としてしまうと、普段のエースに戻すことはまずできません。

なので、そもそもオーバーペースにならないことが一番の対策になってしまいますね。
(いつかオーバーペースになりがちな原因とかも取り上げたいですね。)

普段のペースで長時間走っているときのデッドポイント

結論から言うと、我慢してください
こればかりは、体の仕組み上どうしても訪れるので、気の持ちようでどうにかするしかないです。
例えば、「これを乗り越えればセカンドウィンドがくる(=楽に走れる)から堪えよう」などと自分に言い聞かせるなど。

あえていうと何度もランニングを行い、デッドポイントとセカンドウィンドが訪れるタイミングを把握することでしょうか。
個人差はありますが、ある程度交互に訪れるので、それを把握するだけでも心構えが変わると思います。

勘違いしないでほしい点としては、先ほど我慢と言いましたが、デッドポイントの時はペースをキープすべきですが、ペースを上げる必要はありません
なので、デッドポイントに入ったら、こまめにランニングウォッチを見て一定のペースで走れているかをチェックしながら走るといいかもしれません。
ちなみにわたくしは、デッドポイントに差し掛かったら1分に1回ランニングウォッチを見て全力でペースキープしていますね。

ランニング初心者へ

デッドポイントは、ランニングするうえでは避けられません。
ランニング初心者の中には、「すぐに苦しくなって長い距離を走れない。」という人もいると思います。
実はこれ、まさしくデッドポイントなんです。
上記のような対策をやりつつ、デッドポイントを乗り越えられるようにしてください。
デッドポイントの後にはかならずセカンドウィンドがおとずれます。
それがわかると、ランニングがますます楽しくなりますよ。


マラソンの話:一定のペースで長い距離を走るのは意外と難しい part1

この間、会社の先輩と飲みにいったときにランニングの話題になって、「途中で苦しくなってペースが落ちちゃう」って感じの悩みを聞きました。
せっかくなので、この辺を何回かに分けて記事にしようと思います。

途中で苦しくなるのはどうして?

もちろん練習不足とかオーバーペースとかも原因の一つですが、もう少し体の仕組みに踏み入ります。

簡単にいうと苦しくなるのは酸素不足です。
循環器や呼吸器が長距離走に適応しきれておらず、酸素供給が間に合ってない状態に陥っています。
オーバーペースなんかはまさしくこの状態ですね。

っが、普段のペースで走っている(=オーバーペースじゃない)はずなのに苦しくなることもあります。
そこで出てくるのが、デッドポイントセカンドウィンドです。

デッドポイントとセカンドウィンド

ランニング中は苦しい時期と楽に走れる時期が交互に発生します。
簡単にいうと、苦しい時期がデッドポイント、楽に走れる時期がセカンドウィンドです。

デッドポイントとセカンドウィンドが交互に訪れるのは、上記が深く関連しています。
先ほど、「循環器や呼吸器が長距離走に適応しきれてない」という話をしましたが、無理のないペースで走ればいずれ体が適応していきます。
しかし、循環器や呼吸器は常に安定して適応するわけではなく、図のような感じになります。
f:id:ressy-tech:20161127230949p:plain

酸素不足の時がデッドポイント、適応の時がセカンドウィンドウです。
※セカンドウィンドの時は、酸素がたくさん供給されるというよりは「酸素供給量が安定して体が適応している」と考えた方が正確です。

実はオーバーペースで苦しくなるのもデッドポイント(それもかなりきつい)に差し掛かってしまっているからです。

最後に

デッドポイントはランニングを始めたばかりの人にとっては、乗り越えるべき大きなハードルだと思います。
デッドポイントの間は正直辛いですが、セカンドウィンドウが訪れるとついさっきまでのデッドポイントが嘘かのようにスムーズに走れるようになります。
これを知る・知らないだけで、ランニングが楽しい/辛いが変わってくると思います。

ちょっと長くなりそうなので、今日はここまで。
次回は、デッドポイントとの向き合い方?みたいな話をします。

参考

この記事は、以下を参考にしています。

長距離走のデッドポイントとセカンドウィンド

ジョギング初心者おすすめマニュアル |デッドポイントとセカンドウィンド

走れない...ジョギング初心者が挫折しないための心がけ