サーバ監視入門の入門 – 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は監視設定を追加していくことができる

Share

最近の投稿

NetlifyのSplit TestingとFunctionsについて使い方をまとめる Split TestingはGitHubのブランチをベースにしたA/Bテストを行うための機能のことで、FunctionsはNetlifyでAWS Lambdaを使うことができる

NetlifyとはHTMLなどの静的コンテンツのみで構成されたWebサイトを閲覧できる形で配信するWebサービス GitHubやBitbucket、GitLabなどと連携して使うことができて、リポジトリにプッシュすることで自動でCI/CDを行うことができる、無料枠が豊富で独自ドメインを設定可能

WordPressからJekyll(GitHub Pages)に移行した手順をまとめる。 お金的な事情や使いやすさなどの理由で無料のJekyll+GitHub Pagesに移行した。JekyllとはMarkdown等から静的ページを生成する静的サイトジェネレータ

Scala開発のためにScalaらしさをまとめる 言語設計者の設計思想を元にScalaらしさについてまとめる オブジェクト指向と関数型の融合について

StorybookとはUI開発環境を提供するツール React、React Native、Angular、Vueなどをサポートしている ユーザーは独立した開発環境でコンポーネントを個別に作成して挙動の確認をテストできたり、コンポーネントを一覧にしてカタログ化できるので他の人に紹介する時に使えたりする

カテゴリ一覧

タグ一覧