メンテナンス、サーバのミドルウェア設定、障害対応のときに私がよく使っているコマンド。 先週Webサーバを16台ほどリプレイスした際にも、使って挙動、確認作業をしてました。
コレ系のコマンドは各人の秘伝のタレみたいになってて、他の人が教えてくれることが少ない気がして、 新卒氏のインフラOJT用に専用の資料作ろうかと思ったけど、新卒氏以外でも知ってれば 「よく分からんけど、動かないからインフラ担当者に聞く」みたいなことが 減って自分で解決出来るのではないかと思うので書いておく。
手元のmac、linuxから該当サーバに対して実行するコマンドで ちゃんと該当サーバが外部に向けてサービスが提供出来ているのか、 要は外から確認するためのコマンドです。
調査系のコマンドは
- オプション、使い方が覚えやすい
- 手軽に使える
- 結果が見やすい、理解しやすい
というのが重要だと思う。
サーバの中で調査するなら
のコマンドを見た方が良いです。
nc(netcat)
ポートが開いているか、デーモンが起動してリクエスト応答しているか確認。
1
|
|
1 2 |
|
今よく触ってるSerfは7946ポートを使うので、他のサーバから下記で接続確認。
1
|
|
アラートが来たら、とりあえずnc叩けば 接続過多で駄目なのか、そもそもミドルウェアが落ちてるのかとか サーバ入る前にだいたい検討付くので初動を間違えずに済む。
普段やること無いですが、一応下記みたいな感じでポートスキャンも出来る。
1
|
|
最近はtelnetをサーバに入れてないことが多いけど、ncが入ってれば telnetと同様な感じでも利用出来るので、ヘッダをリクエストしたり
1 2 3 4 |
|
たとえばmunin-nodeが動作しているか確認する場合は、下記みたいに出来る。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
通常は接続元IPを制限してると思うので、許可されているIPと許可されていないIPの二つから確認して、 設定がちゃんと出来てるとかの確認もしてます。
host
サーバの/etc/resolv.conf
で設定して参照しているDNSサーバ、Google Public DNSとかとの結果を比較をして、
おかしなDNS情報を持ってないか確認したりするのに使ってます。
DNSサーバを指定しない場合は、/etc/resolv.conf
に設定してあるDNSサーバを利用。
1
|
|
Google Public DNSを参照
1
|
|
dnsmasqとか使ってると古い情報をキャッシュしてたりするので、host
コマンドを使うとすぐ分かる。
エンジニアのための時間管理術 から引用で
- 奇妙な問題は DNS の設定ミスが原因していることが多い
DNS は多くのサブシステムにとって致命的な影響を与え、しばしば、問題を 別の問題であるかのように見せかけ、その問題を覆い隠してしまう傾向がある。 これに該当するのは、DNS サーバーにアクセスできないクライアント、無効 な DNS データが設定されたホスト、または無効な DNS データが設定された ホストにアクセスしようとするクライアントである。
私の経験上でも、意味不明なトラブルはDNS周りが起因していることが多いので、早めにhost
とdig
でDNS周りの調査をします。
http (httpie)
最近はnginxのプロキシ、リプロシキ、ngx_luaの設定ばっか触ってるので、httpieで挙動確認、設定確認をしてます。
CentOS6では下記のように導入。
1 2 |
|
Macの場合はhomebrew利用してここを参考に下記みたいな感じで導入。
1 2 3 |
|
curl
でも同じ事が出来るんですが、curl
は人間に優しくないというか
私がオプションを全く覚えることが出来ないので、こちらを多用してます。
httpieだけでは足りないので、もちろんcurl
も重宝してます。
下記の例はヘッダを見てるだけだけど、色が付くだけで見やすくなる。
ヘッダの確認
1
|
|
basic認証の確認
1
|
|
リダイレクトの確認
1
|
|
GETのテスト。defaultがGETなので、GETの場合はmethod指定しなくても良い。
1
|
|
PUTのテスト
1
|
|
と例を挙げたらキリがないんですが、ApacheやNginxの動作、設定確認なので、 普段はだいたい上記みたいな感じで使ってます。
ちなみにhttp://httpbin.org/を利用するとhttpieの使い方が覚えるのに便利で、 https://httpbin.org/もあるので、ssl系のテストも出来る。
httpieのzsh補完関数は先日pull req出して、zsh-completionsにmergeされているので、httpieご利用の方はご活用ください。
add httpie completion by glidenote · Pull Request #184 · zsh-users/zsh-completions
他にも調査用のコマンドはありますが、nc
,host
,httpie
を使いこなせれば、
サーバ入る前にある程度の事が判断ついて、いろいろと捗ると思う。