"Diary" インターネットさんへの恩返し

いつもソースコードコピペばかりなので,みなさまへ少しばかりの恩返しを

AWSでカスタムメトリクスでの監視設定



スポンサーリンク

t.microインスタンス利用時にmysqlが起動しなくなることがちょくちょく出てきた。ということでAWSの機能cloudwatchで監視設定をした。

起動しなくなった時の状況確認

$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0  32836   4736  27916    0    0     6     2   12   37  0  0 100  0  0


/var/log/messagesを見る。Out of Memmoryとなっている。

sudo tail 10 /var/log/messages
tail: cannot open `10' for reading: No such file or directory
==> /var/log/messages <==
Apr  7 00:43:03 ###-###-###-### kernel: [265286.290929] Out of memory: Kill process 1387 (mysqld) score 70 or sacrifice child
Apr  7 00:43:03 ###-###-###-###  kernel: [265286.290938] Killed process 1387 (mysqld) total-vm:814828kB, anon-rss:42428kB, file-rss:0kB
Apr  7 11:05:37 ###-###-###-###  dhclient[974]: DHCPREQUEST on eth0 to 169.254.1.0 port 67 (xid=0x1158adfb)
Apr  7 11:05:37 ###-###-###-###  dhclient[974]: DHCPACK from ###.###.###.### (xid=0x1158adfb)
Apr  7 11:05:40 ###-###-###-###  dhclient[974]: bound to ###.###.###.### -- renewal in 32909 seconds.

OS再起動後。空きが増えた。

$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 398480   9904  99648    0    0  1468    48  168  229  6  5 56 19 14

クラウドウォッチで監視&OS再起動する

AWSではデフォルトで監視できる項目(CPUやDISKのwriteなど)が限られているのでメモリ使用量はカスタムメトリクスっていうので設定が必要。イメージとしてはOSのコマンドでメモリ使用量を出力して、それをcouldwatchサービスに転送。それをcronで頻度を指定してスケジュールする。

方法は以下を見ればすぐにできるのでご参照下さい。

後日追記

メモリ不足ですがswap設定が全くされていないことが分かった。windowsサーバばかり触っているのでt.micoroのlinuxもデフォルトでスワップぐらい設定されているだろと思っいたけど、案の定設定され
ておらず。

スワップ設定確認コマンド

以下のコマンドでSWAP設定がないことを確認した。

スワップファイルの確認

$ /sbin/swapon -s

スワップ使用状況の確認

$ cat /proc/meminfo

EBS拡張方法

ついでに、t.microのデフォルトEBS 8GBではスワップ取る場所もないので、
以下を参考にEBSの拡張を行った。

http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-expand-volume.html

[手順]

  1. サーバ停止
  2. EBSのスナップショットの取得
  3. スナップショットから create bolume でサイズ指定してEBS作成
  4. 古いEBSをデタッチ
  5. 新しいEBSをアタッチ(OS領域の拡張なので新しいボリュームアタッチする際は、/dev/sda1を指定)
  6. サーバ起動
  7. df -h コマンドで現在のファイルシステムの状態を確認
  8. sudo file -s /dev/xvd* でファイルシステムタイプの確認
  9. sudo resize2fs /dev/xvda1 でリサイズ実行
  10. df -h で拡張されたことを確認

スワップ設定手順はこちらを参照しました。
Linuxのswap領域を追加する方法:ぴろにっき:So-netブログ