linuxのサーバー管理をする時の便利に使えるコマンドサンプル

2020年5月8日

テクノロジー

サーバー管理はライフワークの、下駄です。

本日も、IT謎掛けやってみます

「Linuxサーバー」とかけまして・・・ 「メイプル超合金のカズレーザー」と、ときます。 そのココロは・・・ 赤い帽子(redhat)も、よく似合うでしょう。

サーバー管理は、トラブルの未然防止の為に必須

サーバーの健全状態は、普段の正常状態を把握しておくことが非常に重要です。 サーバーの定期状態監視ももちろんですが、異常値を知る事も大事です。 どのアプリの何の値が、いくつ以上になったら、サーバー運用に支障をきたすかという事を知っておかなければ、以上になった際に、何が原因なのか、分からない状態になってしまいます。 サーバー管理は、人の体で言うところの平熱を理解していないと、ダメなんですね。 そして、サーバー管理をやったことがない人が、改めて管理をしなければいけなくなった時に、実際にどういった管理を行えばいいかを、僕が普段よく使うコマンドを元に、サンプルを書いておくので、片っ端からこのコマンドを叩いてみて、色々と理解してもらえればと思います。

今現在のサーバー負荷値の確認

$ top サーバー状態の確認の鉄板コマンドです。 最も見るべき点は、「load average」の値ですが、この値がcpu数を上回っていると、サーバー負荷がとんでもなく上がっている証拠です。 他にも、メモリ値や、使用しているアプリケーションの行列状態などがリアルタイムに見えるため、よく使うコマンドナンバー1と言ってもいいでしょう。

直近のログイン状態を確認

$ last -10 root pts/0 192.168.1.100 Mon Apr 27 07:34 still logged in root pts/0 192.168.1.100 Mon Apr 27 07:28 - 07:31 (00:02) root pts/0 192.168.1.100 Sat Apr 25 17:15 - 17:36 (00:21) root pts/0 192.168.1.100 Fri Apr 24 18:17 - 19:05 (00:48) root pts/0 192.168.1.100 Fri Apr 24 16:06 - 16:22 (00:15) root pts/0 192.168.1.100 Wed Apr 22 09:23 - 10:23 (01:00) root pts/0 192.168.1.100 Tue Apr 21 09:15 - 09:57 (00:42) root pts/0 192.168.1.100 Tue Apr 21 01:21 - 03:41 (02:20) root pts/0 192.168.1.100 Mon Apr 20 14:35 - 16:35 (02:00) root pts/0 192.168.1.100 Mon Apr 20 08:42 - 08:43 (00:00) サーバーの不正ログインがあったかどうかを確認できます。 -10の値は直近10件なので、この数を増やすとその分のログイン履歴が見られます。 ただし、日時を判断して、自分のログインかどうかを判断する必要があります。 参考 : https://www.server-memo.net/tips/server-operation/login-history.html

ストレージの確認

# ファイル容量の確認 $ df -h ``` ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sda1 227G 55G 162G 26% / udev 10M 0 10M 0% /dev tmpfs 808M 90M 718M 12% /run tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/sdf 7.3T 3.7T 3.2T 54% /mnt/usb /dev/md0 15T 5.6T 8.2T 41% /mnt/usb2 tmpfs 404M 0 404M 0% /run/user/33 ``` # inodeの確認 $ df -hi ``` ファイルシス Iノード I使用 I残り I使用% マウント位置 /dev/sda1 15M 1.5M 13M 11% / udev 206K 438 205K 1% /dev tmpfs 210K 725 209K 1% /run tmpfs 210K 1 210K 1% /dev/shm tmpfs 210K 3 210K 1% /run/lock tmpfs 210K 14 210K 1% /sys/fs/cgroup /dev/sdf 233M 2.4M 231M 2% /mnt/usb /dev/md0 466M 2.7M 464M 1% /mnt/usb2 tmpfs 210K 11 210K 1% /run/user/33 ``` システム障害で見落としがちなのは、ストレージ障害です。 サーバーシステムはどこもおかしくないのに、何故か動かないという場合、搭載しているストレージが満杯になっているなんていうのは、サーバーあるあるです。 最近のストレージは、容量の多さからinodeオーバーは、なかなか起きにくいのですが、たま〜に発生するので、合わせて覚えておくといいでしょう。

webアクセス状況を確認

$ tail -f /var/log/nginx/access.log ※ ログのファイルパスは使用サーバーの環境に合わせて行う。 今現在のログがリアルタイムに確認できます。 目で見て確認できるレベルであれば、これで十分確認できるのですが、 不正アクセスが桁違いに来るような場合は、以下のように原因を突き止める必要があります。 # nginx確認 $ awk '{print $1;}' /var/log/nginx/access.log | sort | uniq -c | sort -k1 -n # ログイン確認 $ awk '{if($0~/rhost=/){split($0,s1,"rhost=");split(s1[2],s2,"  ");print s2[1];}}' /var/log/auth.log | sort | uniq -c | sort -k1 -n 参考 : Linuxのアクセスログを確認するサンプルコマンド nginxの場合は、ipアドレス別のランキングが出るので、桁違いな数をipアドレスを"/etc/hosts.denny"に登録してあげれば、緊急対処にはなるはずです。 authログの不正アクセスがある場合は、対象のアカウントのログインパスワードをすぐに変更してあげましょう。

ポート公開状態の確認

$ netstat -an -tcp ``` 稼働中のインターネット接続 (サーバと確立) Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態 PID/Program name tcp 0 0 127.0.0.1:5038 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7027/nginx: worker tcp 0 0 192.168.1.10:80 8.175.159.187:2096 SYN_RECV - tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN - tcp 0 0 192.168.1.10:53 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - tcp 0 0 192.168.1.10:22 201.60.104.217:52177 SYN_RECV - tcp 0 0 192.168.1.10:22 201.72.102.13:24031 SYN_RECV - tcp 0 0 192.168.1.10:22 201.203.178.198:13461 SYN_RECV - tcp 0 0 192.168.1.10:22 8.144.136.84:52946 SYN_RECV - tcp 0 0 192.168.1.10:22 14.226.109.5:64341 SYN_RECV - tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:5561 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 7027/nginx: worker tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN - tcp 0 0 192.168.1.10:80 121.81.182.210:53351 TIME_WAIT - tcp 0 520 192.168.1.10:22 192.168.1.100:55757 ESTABLISHED - tcp 0 0 192.168.1.10:22 61.160.245.77:52710 ESTABLISHED - tcp 0 0 192.168.1.10:80 111.239.239.158:28218 ESTABLISHED 7028/nginx: worker tcp6 0 0 :::110 :::* LISTEN - tcp6 0 0 :::143 :::* LISTEN - tcp6 0 0 :::53 :::* LISTEN - tcp6 0 0 :::22 :::* LISTEN - tcp6 0 0 ::1:953 :::* LISTEN - tcp6 0 0 :::3306 :::* LISTEN - ``` サンプルとして、うちのローカルサーバーのログを載せてみました。 参考 : TCP/IP通信の状態を調べる「netstat」コマンドを使いこなす

まとめ

サーバー監視は、こうしたコマンドを十分に使えないと正常な状態をキープするのが難しいでしょう。 仕事で行う場合など、こうしたコマンド以外にも、もっと便利なコマンドなどもあるので、自分の監視するシステムの特性に合わせたモノを覚えていくといいでしょう。 今回は基本のみ紹介しておきます。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。