想ひ出のへっぽこBlogⅡ from35

~ 自身の備忘録および学習促進のためにブログります。~

想ひ出2: Wordpressがたまにイカレるのでjenkinsでphp-fpm restart

f:id:moqrin3:20181130232205p:plain
jenkins

おはようございます。moqrinです。

AWSのec2インスタンス上で、 たまにWordpressphp-fpmがやたらCPUを喰ったりすることがあります。 でも、だいたいphp-fpmのrestartをかけると元に戻ります。

が、毎回手動でやるのは面倒くさいのでXXXが起こったら、 jenkinsおじさんで勝手にphp-restartしてくれるようにしました。 (そもそも何故そういう事象になるのかを調査して修正を加えろよ、と言いたいですよね? 仰る通りです!猛省します!)

そこに至るまで下記のようにコケてフガフガしました。。

1 通常利用しているzshにのみpyenvのパスを通してあったので、 bashにpyenvのパスを通してあげないとaws-cliが使えなかった。。

# .bashrcに追記
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

2 普通にaws-cliインスタンスのipとか表示させたときに、 "xxx.xx.xxx.xx"みたいなダブルクォーテーションがあったので、 ssh hoge@$varialbe するときにログインできなかった。。 (いや、当たり前なんですけどね!)

3 sshで新しくELBに追加されたサーバーにログインするときに失敗しやがる。。 ホストキーを確認されるからね。。

以上を踏まえてこんな感じになりました。 ついでにSlackにお知らせも入れました。

source ~/.bashrc

publicIpAddresses=(`aws ec2 describe-instances --filter \
"Name=tag:Name,Values=HOGEGE" | jq ".Reservations[].Instances[].PublicIpAddress"\
| sed -e "s/\"//g"`)

for i in ${publicIpAddresses[@]}
do
  # invalid hostcheck
  ssh -o StrictHostKeyChecking=no develop@${i}\
  sudo systemctl restart php-fpm

  # slackCallApi
  curl -X POST \
  -H 'Content-type: application/json' \
  --data '{"text": "php-fpm has been restarted. ", "channel": "#moqrin3",\
 "link_names": 1, "username": "jenkins", "icon_emoji": ":jenkins:"}' \
  https://hooks.slack.com/services/XXXXXXXXXXX
done

参考

使えるとちょっと便利なSSHのTIPS 2012/04/04 AWS CLIを使ってEC2インスタンスの情報を取得する 2014/10/04