2016年2月18日木曜日

CentOS6にMonitをインストールしてMariaDB(MySQL)の死活監視

monitMariaDB Galera ClusterのノードになっているサーバーがPIDファイルを残したまま止まるので死活監視サービスを導入しようと調査したときの覚書。

環境: CentOS 6.7, MariaDB 10.0.21, Monit 5.14

 

目次

  1. ある日のエラー
  2. 監視ツールの選定
  3. MonitをYUM経由でインストール・設定

 


1.ある日のエラー

Node.jsからデータベース(MariaDB Galera Cluster)に接続できなくて状態を確認したら、こんなメッセージ。

# /etc/rc.d/init.d/mysql status

ERROR! MySQL is not running, but PID file exists

原因不明。あとで詳しく調べる。

ロードバランサになっているサーバーに監視ツールを導入して、エラーになったらメールを送る仕組みを構築することにした。

 


2.監視ツールの選定

サーバー監視ツールとして「Zabbix」が人気らしい。

けど、監視するサーバーにApacheやMySQLが必要。このためだけに複数サービスをインストールしたくない。

Monitを使うと簡単に監視できるらしい。

 


3.MonitをYUM経由でインストール・設定

EPELのYUMリポジトリからインストール。
# yum install monit

設定するのに参考にしたサイト

 

まずはインストール直後の設定ファイルを眺める
# less /etc/monit.conf

メールの設定をする
# vi /etc/monit.d/mail.conf

set mailserver localhost
set alert info@hoge.co.jp
set mail-format {
  from: info@hoge.co.jp
}

ローカルのMariaDB(MySQL)を監視してみる
# vi /etc/monit.d/mysqld.conf

check host APP01 with address localhost
  if failed
    port 3306
    protocol MYSQL username "user" password "pass"
  then alert

サービス起動。自動起動にもしとく。
# /etc/rc.d/init.d/monit start
# chkconfig monit on

"Monit instance changed"のメールが届く。

MariaDBを停止してみる。
# /etc/rc.d/init.d/mysql stop

メールが届けば成功。デフォルトでは30秒感覚でチェックしてる。

MariaDBを起動すると、接続に成功したとメールが来る。

 

あとは本番環境で設定ファイルの「localhost」「user」「pass」を監視対象のIPアドレスとデータベースのパスワードに設定すれば動くはず。

MariaDB Galera Clusterと別ネットワークの場合はファイヤーウォールの設定などが必要。

 

 

< Related Posts >

2016年2月17日水曜日

福岡でトトロと猫バスに会ってきた

福岡に遊びに行ったときに喫茶店を探してウロウロしてたら面白そうな店があったので入ってみた。

出迎えてくれたのがこちら。

フクロウ1

トトロ?

胸に飛びつきたくなりますが違います。フクロウです。

腕や肩に乗せて写真撮ったりできます。トトロとの記念撮影がこちら。

フクロウ2

結構でかい。

他にもかわいい子がいっぱい。

フクロウ3

フクロウ4フクロウ5


 

お休みしているフクロウもいる。お目当てのフクロウがいる場合は公式サイトで出勤スケジュールをチェック。

お休みといっても触ったり乗っけたり出来ないだけで写真は撮れる。

フクロウ6

「眠いでちゅ…zzz…」

ステキな写真がたくさん撮れました。一眼レフ買っといて良かった。

 

トトロに出会った後に向かったのはこちら。

猫カフェ1

「発車するにゃ!」

猫バス?

違います。猫カフェです。

向かいの席に座ってくれた子

猫カフェ2猫カフェ3


 

ネコ様は慣れた様子でくつろいでいらっしゃいました。

猫カフェ4猫カフェ5

猫カフェ6

「パシャパシャうるさいのよ」

すみません。。。

猫カフェ7

「お会計かしら?」

はい。お願いします。

 

14時からすぐに入れましたが、出るときには待ち行列ができていたので夕方は混むようです。

 

< Related Posts >

2016年2月16日火曜日

【CentOS6】PHP5.6からPHP7.0にYUM経由でUpdate

php_56_to_70PHP7.0がリリースされたので、さっそく仮想環境で試してみたときの覚書。

環境: CentOS 6.7, PHP 5.6

YUMのPHP7チャンネルを有効にする。remiリポジトリの追加方法は前の記事を参考に。
# less /etc/yum.repos.d/remi-php70.repo

[remi-php70]
enabled=1

これでアップデート実行
# yum update

エラー

Error: Package: php-pecl-redis-2.2.7-1.el6.remi.5.6.x86_64 (@remi-php56)
           Requires: php(zend-abi) = 20131226-64
           Removing: php-common-5.6.16-1.el6.remi.x86_64 (@remi-php56)
               php(zend-abi) = 20131226-64
           Updated By: php-common-7.0.1-1.el6.remi.x86_64 (remi-php70)
               php(zend-abi) = 20151012-64
           Available: php-common-5.3.3-40.el6_6.x86_64 (base)
               php(zend-abi) = 20090626
           Available: php-common-5.3.3-46.el6_6.x86_64 (updates)
               php(zend-abi) = 20090626
           Available: php-common-5.4.45-1.el6.remi.x86_64 (remi)
               php(zend-abi) = 20100525-x86-64
           Available: php-common-5.4.45-2.el6.remi.x86_64 (remi)
               php(zend-abi) = 20100525-x86-64
           Available: php-common-5.6.15-1.el6.remi.x86_64 (remi-php56)
               php(zend-abi) = 20131226-64
           Available: php-common-7.0.0-3.el6.remi.x86_64 (remi-php70)
               php(zend-abi) = 20151012-64

エラーになったパッケージを削除
# yum remove php-pecl-memcache php-pecl-redis php-pecl-igbinary php-pecl-mongo

再挑戦
# yum update

Warningがいくつか

Failed loading /usr/lib64/php/modules/xdebug.so

Failed loadingになったモジュールは削除して、あとで必要になったら考える。

インストールされた一覧
# rpm -qa | grep php

削除
# yum remove php-mcrypt php-pecl-zip php-xml

PHP-FPMの実行権限を変更しているのでセッション書き込みディレクトリの権限を変更
# chown nginx.www -R /var/lib/php/

念のため再起動
# reboot

PHPバージョン
# php --version

PHP 7.0.1 (cli) (built: Dec 16 2015 15:31:55) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

WordPressのいくつかのプラグインがDeprecatedを吐くけど、問題なさそうなので本番環境でも移行予定。

phpMyAdminもPHP7に対応済みなので最新にアップデートした方がいい。

 

< Related Posts >

2016年2月15日月曜日

Redmineを3.0から3.2にUpgrade。今後はGit pullで簡単に更新できるようにしておく

redmine_30_to_32Redmine 3.2のレスポンシブデザインを試したくてアップグレードしたときの覚書。

環境: CentOS 6.7, Ruby 2.2.2-p95, Git 2.6.4

参考

 

目次

  1. バックアップ
  2. GitHub経由でアップグレード
  3. もろもろアップデートしてRedmine再起動

 


1.バックアップ

データベースだけバックアップしておく
# mysqldump -p redmine > 20151218.sql

 


2.GitHub経由でアップグレード

今後のアップグレードを簡単にするためにGitを使って最新版を取得する
# cd /opt/redmine/
# git init
# git remote add origin https://github.com/redmine/redmine.git
# git fetch origin

.gitignoreを確認して今のバージョンをコミットしておく
# less .gitignore
# git add --all
# git commit -m 'Redmine 3.0.3'

これで何しても安心なので、とりあえず3.2とマージしてみる
# git branch -a
# git merge origin/3.2-stable

エラー

error: The following untracked working tree files would be overwritten by merge:

余計なファイルを削除
# rm -f files/delete.me public/dispatch.fcgi.example public/plugin_assets/empty tmp/pdf/empty tmp/test/empty tmp/thumbnails/empty

マージ
# git merge origin/3.2-stable

おびただしい数のConflictが。。。マージする前に戻す
# git reset --hard

参考

「git checkout --theirs」を使うとうまくいくらしい。

ブランチを作ってそっちで作業する
# git checkout -b 3.2-stable

更新
# git checkout --theirs origin/3.2-stable .

無事更新完了。コミットする
# git commit -m 'Merge origin/3.2-stable'

git pullで更新できるようにリモートブランチを設定する
# git branch --set-upstream-to=origin/3.2-stable 3.2-stable

 


3.もろもろアップデートしてRedmine再起動

gemsをアップデート
# bundle update

データベースとプラグインをアップデート
# bundle exec rake db:migrate RAILS_ENV=production
# bundle exec rake redmine:plugins:migrate RAILS_ENV=production

キャッシュをクリア
# bundle exec rake tmp:cache:clear tmp:sessions:clear RAILS_ENV=production

Redmine再起動。起動スクリプトは前の記事を参考に。
# /etc/rc.d/init.d/redmine restart

start redmine
/root/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/bundler-1.9.8/lib/bundler/rubygems_integration.rb:263:in `block in replace_gem': unicorn is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
        from /opt/redmine/vendor/bundle/ruby/2.2.0/bin/unicorn_rails:22:in `<main>'

”unicorn”がないと怒られた。Gemfileを編集
# less Gemfile

gem "unicorn"

再度起動
# /etc/rc.d/init.d/redmine start

ブラウザで表示して確認。

Gemfileをコミットしておく
# git add Gemfile
# git commit -m 'Modified Gemfile for unicorn gem'

vender/bundleの下にあるのも一応コミットしておく
# git status
# git add --all
# git status
# git commit -m 'Add files under vender/bundle'

 

< Related Posts >

Related Posts Plugin for WordPress, Blogger...

Blog Archives