サーバ監視入門の入門 – monit

Published: 2016年11月6日 by tomsato

概要

そもそもサーバをなんで監視をする必要があるのか、またどんなことを監視するのかなどまとめる

最後に監視ツールであるMonitを使って初めてのサーバ監視を行う

監視の必要性

ブログサイトしかりニュースサイトしかり、WebページがPCやスマホで見られることが多くなってきた

Webページが表示されるまでの簡単な流れ

hoge

  • 気がついたらWebサーバが全台死んでページが見れなくなった!!
  • 新しく画面開発してリリースしたら数日後にユーザから「画面が見れない」と言われてしまった!!

こういったことに早期に気がつけるようにサーバを監視する仕組みが必要になってくる

監視の種類

どういった監視をすればいいのか、監視の種類について簡単に説明する

種類 説明
死活監視 サーバが死んでいないかを監視する
リソース監視 CPUやメモリ、ディスク容量などサーバのリソースを使い過ぎていないか監視する
ログ監視 Apacheのログでエラーが出続けていないかなど、ログを監視する
サービス監視 何らかのプロセス数を監視したり、サービスが正常に動作しているのかなどを監視する

上記の例は代表的なものを抜粋しただけなのでその他多数存在する

passiveチェック・activeチェックの概念

監視を行うためにはWebサーバ(監視対象)とは別に監視サーバを用意した方が良い(※下の図の①を参考)

hoge-1

何故かというと監視対象のサーバの中で「監視ツールを用意して問題があったらメール送信する」としてもサーバが死んでしまったらメール送信ができない、従って違うサーバから定期的に見に行く必要がある。

備考:以下呼び方を変更します

  • 監視サーバをmonitoring nodeということでmnodeと呼ぶ
  • 監視対象のWebサーバをservice nodeということでsnodeと呼ぶ

passiveとactiveについて簡単に説明 (※上記の図の①を参考)

  • mnodeからsnodeにチェックをしに行くことをactive checkという
    • サーバが死んでいないかの死活監視など
  • snodeからmnodeに状況を送信することをpassive checkという
    • ログを見てエラーが出続けてないかなどのログ監視
    • サーバのリソースを使い過ぎてないかなどのリソース監視

また上記の図の②よりmnodeは1か所に集約して役割を切り出す方法が一般的

監視ツールについて

監視について自分で1から実装しなくても既に存在している

Nagios, Zabbix, Hinemosなど

それぞれを比較した参考サイトは探せばあるので色々検討した上で何を導入するのかを決めるのが望ましい

Monitによるサーバ監視

今回はMonitを使ってサーバ監視を体験してみる

準備

動作確認環境

$ cat /etc/redhat-release
CentOS release 6.8 (Final)

Monitの導入

$ sudo yum -y install monit

設定ファイル修正

// 設定ファイルのバックアップ
$ sudo cp -p /etc/monit.conf{,.`date +%Y%m%d`}
// 修正
$ sudo vim /etc/monit.conf
// 差分確認
$ sudo vim /etc/monit.conf
set httpd port 2812 and
# use address localhost # ここの行はコメントアウト
allow localhost # allow localhost to connect to the server and
allow (ipアドレス)/255.255.255.0 # ネットワークの許可
allow admin:monit # ログイン名:パスワード
// 設定反映
$ sudo /etc/init.d/monit restart
$ sudo chkconfig monit on

画面表示確認
http://(ipアドレス):2812/

monit01

またPostfixを使ってGmailを送るためには別途設定が必要なので以下のページの内容を実施しておく

PostfixでメールをGmailにリレーする

準備

Monitでプロセス監視をして問題があったらPostfixを使ってGmailにメールを送信する

ファイルの準備

// 無理やりアラートを出すためメモリー使用率の閾値を1%としている
$ cat /etc/monit.d/check_cpu.conf
# アラートメールの送信用サーバを指定
set mailserver localhost

# アラート通知先のメールアドレスを指定
#「not on {INSTANCE}」で「Monit instance changed」などの通知を無効化
set alert hoge@yahoo.co.jp not on {INSTANCE}

# アラートメールのフォーマット
set mail-format {
  from: monit@$HOST
  subject: monit alert --  $EVENT $SERVICE
  message: $EVENT Service $SERVICE
    Date:        $DATE
    Action:      $ACTION
    Host:        $HOST
    Description: $DESCRIPTION

    Your faithful employee,
    Monit
}

# cpu監視を追加
check system localhost
  if memory usage > 1% then alert #メモリー使用量が1%以上だとアラート

反映

// confの構文が問題ないかチェック
$ sudo monit -t
Control file syntax OK

$ sudo /etc/init.d/monit restart

表示が変わったのがわかる
monit02
またメールも届いた
monit03
こんな感じでMonitは監視設定を追加していくことができる

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧