[Nagios] CentOS 7.1へインストールする

適当なサーバーが無いので、NagiosをDigitalOceanにセットアップしてみる。

Droplet構成

  • 1 Core
  • 512MB RAM
  • 20GB SSD Disk
  • San Francisco 1
  • Cent OS 7.1 x64

セットアップ手順

以前にローカルで試した手順とほぼ同じ。以下違いだけ記す。

以下モジュールを追加インストールする。

RAMは512MBだけなので、2GBのスワップを作成しておく。

Nagiosは最新版をインストールする。

Nagios Core
https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.1.1.tar.gz

Nagios Plugins
http://nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz

設定ファイルの自己ルール

  • 監視ホスト1基を1設定ファイルに記述する。
  • 全ての設定ファイルはetcの下のserversディレクトリに入れる。
  • 設定ファイルの名前はドメイン名にする (example.com.cfg)。
  • ホストグループごとに設定ファイルを作って同じディレクトリに入れる (group1.cfg)。

/usr/local/nagios/etc/nagios.cfg に以下の記述を追加する。

設定ファイルを格納するサブディレクトリを作成する。

設定ファイルの雛形はこんな感じ (とりあえずpingとhttpのみチェック)

設定ファイルを変更したら以下コマンドで再ロードすればよい。

参考サイト

How To Install Nagios 4 and Monitor Your Servers on CentOS 7 | DigitalOcean
https://www.digitalocean.com/community/tutorials/how-to-install-nagios-4-and-monitor-your-servers-on-centos-7

[Nagios] 参考サイトまとめ

公式サイト

Nagios Core. Nagios Open Source Project.
https://www.nagios.org/

Nagios Core Documentation – Table Of Contents
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/toc.html

Nagios – Wikipedia
https://ja.wikipedia.org/wiki/Nagios

システム管理&監視の解説記事でNagiosを扱ったもの

「24×365のシステム管理」最新記事一覧 – ITmedia Keywords
http://www.atmarkit.co.jp/ait/kw/24_365_nosystemkanri.html
2001/11/23 – 2003/1/6

「特集:システム管理の鉄則」最新記事一覧 – ITmedia Keywords
http://www.atmarkit.co.jp/ait/kw/tokusyuu_system_kannri_tessoku.html
2004/3/20

システム監視ソフトウエア大全 | Think IT(シンクイット)
http://thinkit.co.jp/book/2008/12/02/212
2008年12月4日

個人サイト&ブログなど

Nagios のインストールと設定 〜 CentOS6 | EasyRamble
http://easyramble.com/install-and-setup-nagios.html
2013年8月21日

自宅サーバーを24時間自動監視(Nagios)
http://ufuso.jp/wp/?p=9279
2012/8/17

統合監視システム構築(Nagios) – CentOSで自宅サーバー構築
http://centossrv.com/nagios.shtml
2012.06.22

[ホスティング] ブログの投稿がマルウエアと誤認される

昨日の記事を投稿した直後、このブログが突如「404 Not Found」となって焦る。

ハッキングされかと思っていろいろ調べたところ、ウェブサーバーのエラーログに以下の記録が見つかった。

何だこれ?ネットを検索すると、サーバーにインストールされているセキュリティツールらしい。

ModSecurity: Open Source Web Application Firewall
https://www.modsecurity.org/

OWASP AppSec USA 2013 レポート(後編):無償かつ高機能な「ModSecurity」をもっと活用しよう! (1/2) – @IT
http://www.atmarkit.co.jp/ait/articles/1402/05/news002.html

エラーメッセージから推測すると「ブログの記事中にマルウェアと疑わしい記述が見つかったとのでページをブロックした」ということなのだろう。冤罪確定。どの部分が疑わしいと判断されたのか、記事を部分的に削除しつつ表示されるかどうか確認して調べたところ、以下の画面をテキストでキャプチャした部分であることが判明。このテキストキャプチャを削除することでブログを復活できた。

0000

共有ホスティングサービスは、ホスティング会社が構築したサーバーを与えられて使っているので、どんなシステム系ツールが稼動しているのが見通しが悪いのが難点。エンジニアなら共有ホスティングを使わずに、VPSやクラウドホスティングの利用を検討したほうが良さげか。

いじれない部分が多いサーバーは使い難い。

[Nagois] CentOS 6.5へインストールする

ウェブサイトの稼動監視にオープンソースの監視システムであるNagiosの利用を考え中。とりあえずローカルでVagrantベースのCentOS 6.5の環境にインストールして触ってみたい。

手っ取り早くリポジトリからインストールできないか探す。

公式バージョン履歴によると最新版は4.1.1なので、3.5.1だとかなり古い。

Nagios Core 4.x Version History – Nagios
https://www.nagios.org/projects/nagios-core/history/4x/

リポジトリからの取得は諦めて、公式ドキュメントの手順に従ってインストールする。

公式ドキュメント
Nagios Core Documentation – Table Of Contents
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/toc.html

Nagios Coreのシステム要件

公式ドキュメントからシステム要件を確認しておく。

System Requirements – About Nagios Core
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/about.html#requirements

  • Linuxが稼動するネットワーク接続されたマシン
  • Cコンパイラ

Nagios Coreに含まれるCGIを使う場合には以下も必要。

  • ウェブサーバー (Apache推奨)
  • GDライブラリ 1.6.3以降

インストール手順

公式ドキュメントのインストール手順に従う。

Nagios Quickstart Installation Guides
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/quickstart.html

Prerequisites (事前準備)

必要なソフトをインストール

  • Apache
  • PHP
  • GCCコンパイラ
  • GD開発ライブラリ

1) Create Account Information (アカウント情報の作成)

ユーザ nagios を作成してパスワードを設定する。

Webインタフェース経由で外部コマンド発行を許可するグループ nagcmd を作成して、ユーザnagiosとapacheを追加する。

2) Download Nagios and the Plugins (Nagiosとプラグインのダウンロード)

ダウンロード先ディレクトリを作成する。

NagiosとNagiosプラグインのソースコードをダウンロードする。

3) Compile and Install Nagios (Nagiosのコンパイルとインストール)

ソースコードを解凍する。

ユーザグループ名を添えて、設定スクリプトを実行する。

ビルドする。

インストールする。

4) Customize Configuration (設定のカスタマイズ)

サンプルの設定ファイルを編集して、アラート送信先のメールアドレスを設定しておく。

5) Configure the Web Interface (Webインターフェースの設定)

Apacheのconf.dディレクトリにNagiosのウェブ設定ファイルをインストールする。

ユーザ nagiosadmin を作成する。

Apacheを再起動する。

6) Compile and Install the Nagios Plugins (Nagiosプラグインのコンパイルとインストール)

Nagiosプラグインのソースコードを解凍する。

コンパイルしてインストールする。

7) Start Nagios (Nagiosの起動)

自動起動を設定する。

Nagiosのサンプル設定ファイルをベリファイする。

設定ファイルにエラーが無ければ Nagiosを起動する。

8) Modify SELinux Settings (SELinuxの設定変更)

Fedoraの場合に限る。今回は必要なし。

9) Login to the Web Interface (Webインタフェースへのログイン)

Nagiosのウェブインターフェースにアクセスする。

Basic認証を求められるので、5)の手順で作成したアカウントでログインする

  • ユーザ名: nagiosadmin
  • パスワード: 自分が設定したパスワード

動いた。

Nagios-Core1

[CakePHP] 静的テキストをローカライズする手順メモ

ローカライズ前のコード

コントローラ

ビュー

手順

ビュー中の翻訳対象テキストを <?php echo __(‘テキスト’); ?> に書き直す。

I18n Shellを使って翻訳データを記述したリソースファイルを作成する。

すると、app/Locate/default.pot が作成される。

app/Locate/jpn/LC_MESSAGESフォルダを作成してapp/Locate/default.potをdefault.poとしてコピーする。

そして、ファイルを編集してmsgstrに翻訳したテキストを記述する。

コントローラでConfig.languageを日本語に設定するとビュー内の静的テキストが日本語で表示されるようになる。

表示結果

英語表示 (オリジナル)

boards-eng

日本語表示 (ローカライズ)

boards-jpn

[CakePHP] HTMLヘルパーを使ってテーブルタグを出力する

HTMLヘルパーを使うことでコードが簡潔になる。様々なオプションを指定することも可能。

使用前

使用後

表示結果

オプション無しだと表示体裁は同じになった。

table-html-helper

参考サイト

HtmlHelper — CakePHP Cookbook 2.x ドキュメント
http://book.cakephp.org/2.0/ja/core-libraries/helpers/html.html

[CakePHP] HTMLヘルパーの使い方メモ

参考サイト

HtmlHelper – CakePHP Cookbook 2.x ドキュメント
http://book.cakephp.org/2.0/ja/core-libraries/helpers/html.html

[CakePHP] コントローラのテストの書き方の基礎

モデルやコンポーネントに対して、コントローラのテストを書くのは大変だ。

モデルやコンポーネントはインプットとアウトプットがはっきりしている。故に直感的にテストケースを思い浮かべることができる。これに対して、コントローラは「何を以ってアクションが成功したと見なすか?」が多岐に渡るため、ぶっちゃけ、テストケースの立案が面倒臭いのである。

クックブックやブログなどを参考に、テスト初心者の自分が理解しておくべき点を整理しておきたい。

まずはクックブックに目を通す

テスト — CakePHP Cookbook 2.x ドキュメント
http://book.cakephp.org/2.0/ja/development/testing.html#id23

ヘルパーやモデル、コンポーネントも同様に、CakePHPは ControllerTestCase という コントローラーのテストに特化したクラスを提供します。 このクラスをコントローラーのテストケースの親クラスとすることで、 コントローラーのテストケースを testAction() というメソッドでより簡単にすることができます。 ControllerTestCase は擬似的にコンポーネントやモデルを動かすだけでなく、 redirect() のように潜在的にテストが難しいメソッドの テストも簡単にしてくれます。

testActionで出来ること

アクションの呼び出し

POSTリクエストのシミュレート

GETリクエストのシミュレート

アクションの結果を取得する

アクションの処理によって以下の情報が取得できる。

  • vars – ビューの値
  • view – レイアウト以外の描画されるビュー
  • contents – レイアウトを含む描画されるビュー
  • result – コントローラのアクションが返す値

アクションが成功したかチェックする

ビューに含まれる文字列を調べれば、期待したビューが表示されたかチェックできる

ロケーションを調べれば、期待したリダイレクトが行われたかチェックできる

変数を調べれば、コントローラが正しい変数をビューにセットしたかチェックできる

セッション変数をしらべれば、コントローラが正しい値をセッションにセットしたかチェックできる

参考サイト

[CakePHP] Controllerのテストを書くときに気をつけること – TODO: ブログの名前を考える
http://d.hatena.ne.jp/fullkawa/20120616/p1

CakePHPのControllerの画面遷移のユニットテストってどうやるの | もふもふ技術部
http://j-caw.co.jp/blog/?p=1015

CakePHP2でコントローラーのテストをする時の redirect を無視させない – ハウテレビジョン開発者ブログ
http://blog.howtelevision.co.jp/entry/2014/07/25/151754

cakephpでcontrollerのテストを極める | まとめーたー
http://matomater.com/17151/

sizuhiko – Technote – CakePHPのコントローラテストで注意すること
http://blog.open.tokyo.jp/2013/09/13/cakephp-2.html

CakePHPでAuth認証が必要なコントローラーをテストする – Qiita
http://qiita.com/ran/items/4a31b685f3c25c4f7e01

[PHP] PHPUnitのスタブとモックの違いとは

テスト初心者の自分があちこちのサイトを参考にしながらテストを書いていると、「スタバ」とか「モック」という言葉に頻繁に出くわす。以前PHPUnitの勉強をしたときに見た覚えがあるものの、記憶が怪しいので再勉強。

スタブとモックの違い

PHPUnitのマニュアルでは以下のように説明している。

PHPUnit マニュアル – 第9章 テストダブル
https://phpunit.de/manual/current/ja/test-doubles.html

実際のオブジェクトを置き換えて、 設定した何らかの値を (オプションで) 返すようなテストダブルのことを スタブ といいます。
実際のオブジェクトを置き換えて、 (メソッドがコールされたことなどの) 期待する内容を検証するテストダブルのことを モック といいます。

これではなんとなく解りにくいので、他に説明しているサイトを幾つか探してみる。

RSpec でテストを作るのに役立つ「モック/スタブ」のシンプルな説明 – 酒と泪とRubyとRailsと
http://morizyun.github.io/blog/rspec-model-controller-ruby-rails/

モックとは「「オブジェクトのメソッドがどう呼ばれて何を返すか」というインタフェースも含めたテストのために使う」ものであり、スタブとは「テストをス ムーズに行うために「あるオブジェクトのメソッドが呼ばれたら、ある戻り値を返す」ために使う」ものであるという定義は分かりやすい。

Test DoubleとPHPUnit | akkunchoi@github
http://akkunchoi.github.io/test-double-phpunit.html

特に重要で間違いやすいのが「モック」と「スタブ」だ。英単語では「モック」は模造品、「スタブ」は切り株、切り残しという意味だが、Test Doubleにおいては「モック」は出力の確認、「スタブ」は入力の差し替えを意味する。

言っていることはなんとなく解る気がするんだけど、サイトごとに微妙に違うような気もするな。日本語で明確に定義するのは難しいってことか。

ちなみに僕の見解だとこんな感じ。どうだろ?

  • 「モック」は模擬運用するための模造品
  • 「スタブ」はとりあえず動かすための代用品

サンプルコード付きの参考サイト

モックオブジェクトを利用したテスト – pixiv inside
http://inside.pixiv.net/entry/2014/12/11/192708

PHPUnitのスタブをつかってみた – kitak.blog
http://kitak.hatenablog.jp/entry/2013/11/17/145324

[CakePHP] Class ‘AppController’ not found エラー対処法

bakeでコントローラのクラスを作成しようとしたところ以下のエラーに直面。

これは、コントローラの冒頭で以下の定義を追加することで解決する。

この定義はbakeでクラスを作成したときには自動的に追加されている。無くても実行上は問題ないように見えるが、クラスを手動で作成したときにも追加しておいたほうが良さそう。

bake実行ログ