Zabbix でサーバ監視 その3

Zabbix でサーバ監視 その2
の続きになります
日経 Linux (リナックス) 2011年 12月号 [雑誌]
によれば、これで firefox を起動し、
http://localhost/zabbix
へアクセスすればOKとなっていますが、見事にエラーです
Zabbix is temporally unavailable !
となり、使えません
画面上部に
mysql_connect Access denied for user ‘zabbix@localhost'(using passord:YES)
/usr/share/zabbix/include/db.inc.php:58
とでています
原因を探るため、エラーメッセージを google で検索
Google 検索で、検索した結果、どうやら
PHPのタイムゾーンが設定されていないのが原因ということのようです
これを修正するには
php.ini のdate,tunezone を設定する必要があるようです
sudo /etc/php5/apache2/php.ini
で設定ファイルを開き、
/date.timezone
で検索し
;date.timezone =

date.timezone =Asia/Tokyo
へ変更します
max_execution_time=30

max_execution_time=300
post_max_size = 8M

post_max_size = 16M
mbstring.func_overload = 0

mbstring.func_overload = 2
へ変更しました
設定変更については
Zabbixのインストール
を参考にさせていただきました
これでログインできるかと思ったのですが。相変わらずエラーのままです
ほかの解決方法がないか調べてみました
Zabbix Serverのインストール(Ubuntu Enterprise Server 11.04)
を参考にすることで、原因が判明しました
sudo vim /etc/zabbix/zabbix_server.conf
で見た
DBPassword=zabbix
に対して
sudo vim /etc/zabbix/dbconfig.php
の中の
$DB[“PASSWORD”] = “zabbix”;
となるべき部分が
$DB[“PASSWORD”] = “zabbixapp”;
になっていたのが原因でした
これを修正して、
sudo service apache2 restart
で apache2 を再起動
再度
http://localhost/zabbix
で無事にログインできました
ちなみに、初期のログインには
ユーザ名
admin
パスワード
zabbix
でログインになります

var_dump() について

PHP逆引き大全 516の極意
をみながらPHPの勉強をしています

今回、途中で var_dump() が出てきましたが
わかりにくかったので、検索
どうやら
引数として指定した変数の内容や命令の返値を画面上に出力するもの
というものらしいです
参考サイトは
PHPを学ぶ時、最初に憶えて欲しいvar_dump
です

Zabbix でサーバ監視 その2

Zabbix でサーバ監視
の続きです
sudo apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent

必要なものをインストール
zabbix-server-mysql が Zabbix サーバー
zabbix-frontend-php が管理画面
zabbix-agent がエージェントソフトになります
インストールしている途中に
MySQL の管理者パスワードを聞かれるので、
前回設定した root ユーザパスワードを入力
次に、Zabbix サーバーの MySQLデータベースのパスワードを設定
今回は zabbix にしてみました
使うデータベースを選択する画面になるので、
mysql を選んで 了解を押します
今度は管理画面用のパスワードを聞かれますので
これも別のパスワードにしてみます
今回は
zabbixappuser
にしてみましょう
確認のため、もう一回入力するようにされるので
再度入力します
これで、インストールが完了になります
次回は、初期設定になります

Zabbix でサーバ監視

日経 Linux (リナックス) 2011年 12月号 [雑誌]
 で Linux 活用事例が載っていたので
さっそく再現開始

今回は、実機投入する前にテストを行うため
64bit Ubuntu デスクトップでできるかを調べるため
VMware Player 4 を使い、同じ環境を作ります
ちなみに、書籍に載っているのは 32bit 環境のようです
まずは最初に
sudo apt-get -y install nautilus-open-terminal
を入れる
次に
書籍に載っているのが 32bit での環境のようなので
32bit 互換ライブラリをインストールするため
sudo apt-get -y install ia32-libs
を実行
sudo apt-get install tasksel
でtasksel をインストールし
sudo tasksel
で起動
カーソルでLAMPまで移動して
スペースキーを押すと * がつくので
次に<了解>をクリック
Screenshot-Ubuntu 64-bit Server Test - VMware Player
あとは、自動で進んでいくので放置
パッケージ取得が完了すると
mysql-server の rootユーザのパスワードを設定するようになります
Screenshot-Ubuntu 64-bit Server Test - VMware Player-1
セキュリティのため、忘れずにパスワード設定しましょう
確認のため、もう一度聞かれるので
再度入力します
Screenshot-Ubuntu 64-bit Server Test - VMware Player-2
これで LAMP環境構築できました
ちなみに、LAMPは
Linux
Apache
MySQL
PHP
の略になります
たまに、PHP ではなく Perl だったりしますが

パーミッション設定忘れに注意

Google Android WebAPIプログラミング入門
を読みながら、Youtube アプリ作成の勉強してます

今回、単純なエラーをしていました
JUnit Test を行っていましたが
Run As > Android JUnit Test を実行したとき、
エラーがでて、かなり考え込みました
JUnit のエラーログには
at net.linuxliker.data.test.FeedFactoryTest.testCreate(FeedFactoryTest.java:17) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
となっていて、調べると
assertEquals(iRet,HttpStatus.SC_OK);
に問題があるということだったので、ソースを見ましたが
問題になりそうなところがありませんでした
しかし、よくよく考えてみたら、
AndroidManifest.xml
のパーミッション設定で
<uses-permission android:name=”android.permission.INTERNET”></uses-permission>
を追記するのを忘れていました
この権限をつけないと、アプリはネット接続することができません
これが原因でした

大量生産と芸術品

スティーブ・ジョブズ I
を購入し、読んでみました

昔からいろいろと本は読んでいますが、人物のバックグラウンドを
見てみるのはとても興味深いものがあります
今回、興味を引いたのが
書籍の中にあった文
大量生産可能な芸術品を作る ルイス・ティファニーから学ぶというものでした
そして、ルイス・ティファニーがすべてをやろうとせず
デザインをほかの人たちに与えることができたのはなぜか
というところです

日経 Linux の特集の再現

今回の 日経 Linux 2011 12月号がおもしろそうなので購入してみました

今回は、ubuntu 10.10 32bit を使って構築しているようです
しかし、いまほとんどのマシンが64bit 対応マシンで
動いているため、一度64bit の ubuntu で構築をしてみます
Ubuntu 11.04にAndroid開発環境を構築する
に載っていましたが
ubuntu で 64bit OS で 32bit 関連を使うには
sudo apt-get install ia32-libs
を実行することで、32bit アプリにもある程度は対応するようです
まず、仮想環境で実験して、成功したら 64bit の実機に搭載してみます
そういえば、久々に VMware Player をインストールしました
バージョンが4になっていましたが
残念ながら、_の入力ができないという欠点はそのままでした
[解決済み] VMware Player 3.1 ゲストOSでの アンダースコア入力について
を参考に
sudo vi /etc/vmware/config
でファイルを開き、
最下行に
xkeymap.keycode.97 = 0x73
xkeymap.nokeycodeMap = true

追記
sudo /etc/init.d/vmware restart
で再起動すれば
無事に使えるようになります

Elastic IPs でも private IP は変わる

Amazon からのメールがきたため、念のためインスタンスを停止
また、いい機会だったので、
Elastic IPs をつけたときにインスタンスを停止したらどうなるか実験
結果、Elastic IPs をつけていても
インスタンスを停止すると、設定が外れました
インスタンスを再起動し、再度 Elastic IP の設定を行います
次に、HTTPSでの接続を実験
念のため、確認したら Private IP の数値が変わっていたため
firefox でアクセスすると
SSL received a record that exceeded the maximum permissible length.
(エラーコード: ssl_error_rx_record_too_long)
が表示されました
仕方ないため、再度設定ファイルを変更
記述されている IP を Private IP の数値に変更して
Apache2 を再起動
再度アクセスすると、問題なく表示されました
どうやら、Elastic IP は、インスタンスが起動しているときのみ
有効になるようです
そして、一度再起動などをすると
設定が外れてしまうようです
AmazonEC2 API なども公開されていますので
スクリプトを組めるようにスキルアップし
このあたりを対処できるようにするのが今後の課題になりそうです

AmazonEC2 からメールきました

先日、AmazonEC2 からメールがきました
そして、内容はすべて英語です
内容は
Hello,
We have noticed that one or more of your instances is running on a host degraded due to hardware failure. The host needs to undergo maintenance and will be taken down after 12:00 GMT on 2011-11-08. If you do not take action before this time they will be terminated at this point.
The risk of your instances failing is increased at this point. We cannot determine the health of any applications running on the instances. We recommend that you take appropriate action.
If your instance was launched from an EBS-backed AMI, issuing a stop and start from the AWS Management Console will migrate your instance to new hardware and help avoid any unforeseen downtime.
For more options to stop and start your instance please see:
http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/starting-stopping-instances.html
If your instance was launched from an instance store-backed AMI, you should launch a replacement instance from your most recent AMI and migrate all necessary data to the replacement instance.
Should have you have any additional questions, we offer AWS Basic Support via our Community Forums for free, or Premium Support for one-on-one assistance direct from an AWS Developer Support Engineer at http://aws.amazon.com/support.
Sincerely,
The Amazon EC2 Team
ここは手っ取り早く
Google 翻訳
を使って見ました
翻訳してみると
こんにちは、
我々は、インスタンスの1つまたは複数が原因でハードウェア障害のために縮退ホスト上で実行されていることに気づいた。ホストは、メンテナンスを受ける必要があり、2011年11月8日の12:00 GMT後に停止します。あなたがこの時間より前に行動をとらないならば、それらはこの時点で終了されます。
失敗、インスタンスのリスクは、この時点で増加している。我々は、インスタンス上で実行される任意のアプリケーションの健全性を判断することはできません。我々はあなたが適切なアクションをとることをお勧めします。
インスタンスがEBSでバックアップされたAMIから起動した場合、ストップを発行し、AWS Management Consoleから起動すると、新しいハードウェアにインスタンスを移行し、不測のダウンタイムを防ぐことができます。
停止し、インスタンスを起動できるオプションについての詳細は参照してください。
http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/starting-stopping-instances.html
あなたのインスタンスがインスタンスストア担保AMIから起動された場合、あなたの最も最近のAMIから交換用のインスタンスを起動し、交換用インスタンスに必要なすべてのデータを移行する必要があります。
何かご質問がいるはず、私達は自由のための私達のコミュニティフォーラムを経由してAWSベーシックサポート、またはhttp://aws.amazon.com/supportでAWS開発者サポートエンジニアから直接一対一の支援のためのプレミアムサポートを提供します。
誠実に、
Amazon EC2のチーム
どうやら、メンテのため、インスタンスを停止するとか
バックアップしておくようにということらしいです
http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?starting-stopping-instances.html
をみたかんじでは
stop とかかれているため、インスタンスを一時停止しておこうと思います

AmazonEC2 Virtualdomain 設定(Https)

AmazonEC2 で HTTPSでのサイトを表示しようとしたものの、
SSL received a record that exceeded the maximum permissible length.
(エラーコード: ssl_error_rx_record_too_long)
* 受信したデータの真正性を検証できなかったため、このページは表示できませんでした。
* この問題を Web サイトの管理者に連絡してください。あるいは [ヘルプ] メニューの [不具合のあるサイトを報告] でこのサイトについて報告してください。
というエラーメッセージがでて、なぜか進めないという状態に
まず、再度 AWSアカウントで、
public DNS で グローバルIP を確認したものの、間違いがないため
さらに悩むことになりました
原因は、指定するのがグローバルIPではなく
ローカルIPであったのが原因でした
ローカルIPは、Private IP Address に表示されています
この問題の解決には
Amazon EC2 (Amazon Linux) での ApacheとPHP インストールと設定 を参考にさせていただきました
運用するドメイン分を記述します。
(ElasticIPを割り当てていてもローカルIPが使われるようなので、
*ではなくIPを指定する場合はローカルIPを記述します。)
ということがかかれていましたので、
この Private IP Address を VirtualHost へ設定し
apache を再起動することで解決しました
ElasticIP を設定していたので、グローバルIPを指定すると思っていました
SSH公開鍵認証ではグローバルIP指定するし、
HTTP接続にもグローバルIPで対応できていましたので、全然気がつきませんでした
このローカルIPと、ElasticIP の関係については
Amazon EC2のElastic IP(固定IPアドレス)を設定する!
に解説が載っていました
どうやら
内部的には、NATを設定して、IPアドレスを自動で割り振り、
DDNSでドメインを与えている
Elastic IP は、そのNATの部分を固定IPにする作業
ということになるようです
どうやら、自宅サーバーなどでの固定IPとは少し違うようです