Ubuntu上でNagiosでグラフ化、リモートホスト監視設定
これは自分用のメモです。
監視する側のサーバーにはnagios3.Xが入っているものとする。
リモートホスト監視設定
クライアント側
・インストール apt-get install nagios-plugins nagios-nrpe-server nagios-nrpe-plugin ・メモリ監視がないためインスコ cd /usr/lib/nagios/plugins/wget http://www.sysadminsjourney.com/sites/sysadminsjourney.com/files/code/check_mem.pl.txt mv check_mem.pl.txt check_mem.pl chmod 755 check_mem.pl ./check_mem.pl -w 10 -c 5 -f -COK - 66.6% (419448 kB) free.|TOTAL=629976KB;;;; USED=210528KB;;;; FREE=419448KB;;;; CACHES=406196KB;;;; ・設定ファイル # vi /etc/nagios/nrpe_local.cfg
-
-
-
- -
-
-
-
-
-
- -
-
-
nagiosグラフ化
インストール
apt-get install perl rrdtool librrds-perl php5-gd git clone git://pnp4nagios.git.sourceforge.net/gitroot/pnp4nagios/pnp4nagios cd pnp4nagios ./configure make allmake install make install-webconf make install-config
nagios.cfg設定
まずは、nagiosからperfdata.plを呼び出せるように設定ファイルを編集する。
vi /usr/local/nagios/etc/nagios.cfg
-
-
-
- -
-
-
-
-
-
- -
-
-
以下Basic認証のファイルは適宜作成しておく
vi /etc/apache2/conf.d/pnp4nagios.conf
-
-
-
- -
-
-
-
-
-
- -
-
-
テスト確認
ページ表示の確認
http://[SERVER DOMAIN]/pnp4nagios/
細かい設定
mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/install.php.org vi /usr/local/pnp4nagios/etc/process_perfdata.cfg
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
Hudson in ubuntu10
インスコ
wget -O - http://hudson-ci.org/debian/hudson-ci.org.key | sudo apt-key add - vi /etc/apt/sources.list ----- : : deb http://hudson-ci.org/debian binary/ ----- sudo apt-get update sudo apt-get install hudson → デーモン起動してくれる
実行ユーザー変更
vi /etc/sysconfig/hudson ----- : HUDSON_USER=hudson : -----
時刻のタイムゾーンが日本時間にならない
javaで以下のように時刻を取得して時刻を表示すると
Calendar cal1 = Calendar.getInstance();
US時刻で表示されてしまう。
# ll /etc/localtime lrwxrwxrwx 1 root root 30 2010-09-29 10:11 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo
にも関わらずだ。
Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("Asia/Tokyo"));
ような書き方をしないとタイムゾーンがづれてしまうよう。
上記のためHudsonでも時刻がUS時刻になってしまう。
Hudoson内では上記のような時刻の取得をしているらしくづれる。
これを解決するために以下対応を行った。
vi /etc/init.d/hudson ----- : JAVA_ARGS="-Duser.timezone=Asia/Tokyo" : ----- /etc/init.d/hudson start
ポートを使用しているプロセス調べる in ubuntu
!!! root で実行しないとプロセス名が表示されないので気をつける # netstat -A inet -npl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 3182/master tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 9434/apache2 : :
Django + nose + selenium in ubuntu で自動テスト環境を整える
環境
Python2.6 + Django1.2 + Ubuntu10
など
使うもの
nose
Pythonのunittestをもっと簡単にできるように拡張したもの。プラグインなど簡単に作成する事ができ拡張性も高い
http://somethingaboutorange.com/mrl/projects/nose/1.0.0/
django-nose-selenium
djangoとnoseとseleniumでテストやるためのもの。documentに書かれていない罠が結構ある
https://github.com/weluse/django-nose-selenium
Xvfb
仮想的な X を立ち上げることで、実際に X を起動しておかなくても X を使用した処理を行うことが出来るようにするためのライブラリ
http://en.wikipedia.org/wiki/Xvfb
環境構築
$ sudo pip install nose $ sudo pip install django-nose-selenium $ sudo pip install cherrypy 使うsettingsを指定しておく $ export DJANGO_SETTINGS_MODULE=shohu_settings $ export PYTHONPATH=/PROJECT_ROOT/:$PYTHONPATH Firefoxインスコ $ sudo apt-get install firefox Xvfbインスコ $ sudo apt-get install xvfb FirefoxをX上で動かすための設定 $ export DISPLAY=1.0 $ Xvfb :1 -screen 0 1024x768x24 > /dev/null & ※Firefox起動確認を参考URLを元にしておく
ここまででUbuntu Server上でFirefoxが起動できるようになっているはず。
次にSeleniumサーバーを動かしておく
wget http://selenium.googlecode.com/files/selenium-server-standalone-2.0b1.jar java -jar selenium-server-standalone-2.0b1.jar > /tmp/selenium.log 2>&1 &
ここまででDjango+nose+seleniumを使う環境は整ったはず。
ソースと実行
テストクラス
vi tests.py ----- # -*- coding: utf-8 -*- import unittest class TestSelenium(unittest.TestCase): selenium_test = True start_live_server = True def test_start(self): """Tests the start page.""" self.selenium.open("/") self.failUnless(self.selenium.is_text_present(u"ようこそテストサイトへ!")) -----
start_live_server = True にしていないと
-
- with-djangoliveserver(テスト時のみのDjangoサーバー立ち上げる)
- with-cherrypyliveserve(Cherrpyを使用してテスト時のみのサーバー立ち上げる)
を指定してもテスト実行時にサーバーがたちあがらないので必ず指定する事。
ただ--with-djangoliveserverはうまく動かなかったのでcherrypyの方で実行した。
実行
$ nosetests --with-selenium --with-cherrypyliveserver tests.py ok ---------------------------------------------------------------------- Ran 1 test in 9.140s OK Finished: SUCCESS
nosetestsを実行すると
1.テスト中にDjangoアプリケーションがサーバーとしてたちあがる 2.仮想X上でFirefoxが起動して"/"(ルート)にアクセスする 3.”ようこそテストサイトへ!”の文字が表示されているかチェックする
という事を行ってくれる。
以上でDjango+nose+seleniumで自動テスト環境が整った。
これにHudsonを使う事によって統合テストの自動化環境が整う。
Satchmoで通貨単位を¥にする
ソース
settings.py ----- : L10N_SETTINGS = { 'currency_formats' : { 'JPN' : {'symbol': u'¥', 'positive' : u"¥%(val)d", 'negative': u"¥(%(val)d)", 'decimal' : ','}, }, 'default_currency' : 'JPN', 'show_admin_translations': False, 'allow_translation_choice': False, } : -----
Satchmoをちょこちょこ触ってみている
SatchmoというPython+Djangoで書かれたECサイト用?のオープンソースがある。
ショッピングカートや支払い機能もデフォルトでついていて、機能を把握して
カスタマイズできるようになれば、かなり便利なソースだと思われる。
※ただとにかく日本語の情報が少ない
Satchmo
http://www.satchmoproject.com/
近いところでいうとdjango-cartなどあるようだけど
http://stackoverflow.com/questions/490439/django-cart-or-satchmo
「django-cartよりもSatchmoがんばってつかったほうがいいぞ!」
など、Satchmoを勧める声は大きい。
インストール
以下を見てがんばる。
http://www.satchmoproject.com/docs/dev/quickstart.html
カスタマイズ
以下を見てさらにがんばる。
http://www.satchmoproject.com/docs/dev/#modifying-a-store
ローカライズ
Satchmoも国際化に対応しているのですが日本語には対応していないみたい。
このため日本語に対応させるため
django-rosetta
http://code.google.com/p/django-rosetta/
を使用して日本語のpoファイルを作成する事に。
インストール
$ sudo easy_install django-rosetta $ cd PROJECT_ROOT $ vi settings.py ----- INSTALLED_APPS = ( : 'rosetta' : ) ----- $ vi urls.py ----- : from django.conf import settings if 'rosetta' in settings.INSTALLED_APPS: urlpatterns += patterns('', url(r'^rosetta/', include('rosetta.urls')), ) : -----
poファイル作成
その後
http://localhost:3000/rosetta
にアクセスして、英語(米国)箇所の各Applicationの行を見ていく。
各Applicationのpoファイルの場所がわかるので確認して、そのファイルを所持するAPPROOTにcdで移動
※satchmo/apps/satchmo_utils/locale/en/LC_MESSAGES/django.po
がFileであれば、satchmo/apps/satchmo_utils/に移動
その後各ディレクトリで以下実行
django-admin.py makemessages -l ja -e html,txt
日本語用のpoファイルが各ディレクトリ配下のlocaleに作成される。
実際にローカライズ
日本語用のpoファイルが作成されたが、このままでは当たり前だが日本語に変換されないため
変換されるように修正する。
http://localhost:3000/rosetta
にアクセスして日本語のApplicationを選択し、suggestを押していってコツコツと地道にローカライズしていく。
suggest機能は便利だけど、やはり誤訳も多い。
Suggest All なる機能があるかと思いきや、無いためひたすらポチポチリンク押しながらがんばるが結構時間かかるな、、、これ。
Suggest All なる機能は要望としてあがっているようだが、正式版のソースにははいっていないもよう。
http://code.google.com/p/django-rosetta/issues/detail?id=88#c1
これ全部訳すと大変だな。。。
必要な部分だけ、ローカライズしていこう。
node.js で php を使う方法
javascriptでsprintfがないのかなぁ、と調べていると
php.jsなるものをrequireすればnode.jsでも使えるようになる事がわかりました。
※そういえばid:yssk22さんがBPStudy#39でしゃべっていたのを同時に思い出す(汗
php.jsはJavaScriptによるPHP関数の実装で元々クライアント向けに作られているものなので
そのままではnode.jsでは使えないとのこと。
id:yssk22さんがnode.js用に変換したphp.jsをgitに登録してくれていたので、それをつかって以下のようにprintfが使えるようになりますた。
サンプル
ソース
var php = require('php'); var hoge = php.sprintf("%sはタイトルです。",title);