amazon linux 64bitにzabbix-agentをインストール
なんとなくzabbixな気分になって遊んでみた
環境
- amazon linux 64bit
- security groupでTCP:10050を許可しておく
- zabbix-agent 2.0.6-2.el6
参考
- zabbix-agentで監視できる項目の参考
zabbix-agentインストール
$ sudo yum install --enablerepo=epel zabbix20-agent $ sudo vi /etc/zabbix_agentd.conf $ sudo diff -U 1 /etc/zabbix_agentd.conf{.org,} --- /etc/zabbix_agentd.conf.org 2013-06-25 17:05:49.375962434 +0000 +++ /etc/zabbix_agentd.conf 2013-06-25 17:30:06.729099842 +0000 @@ -81,3 +81,4 @@ -Server=127.0.0.1 +#Server=127.0.0.1 +Server=[zabbix-serverのPublicDNS] @@ -122,3 +123,4 @@ -ServerActive=127.0.0.1 +#ServerActive=127.0.0.1 +ServerActive=[zabbix-serverのPublicDNS] @@ -133,3 +135,3 @@ -Hostname=Zabbix server +Hostname=[zabbix-agentのPublicDNS] @@ -189,2 +191,4 @@ +AllowRoot=1 #root権限のファイルを監視したいため + ############ ADVANCED PARAMETERS ################# $ sudo /etc/init.d/zabbix-agent start
監視対象の設定
zabbix-serverのWebUIにログインし、「設定」> 「ホスト」> 「ホストの作成」
メモリの空き容量を監視してみる
ホストの設定画面から先ほど作成したホストの「アイテム」> 「アイテムの作成」
- タイプ:Zabbixエージェント(アクティブ)
- キー:vm.memory.size[free]
- データ型:数値
アイテム作成後にグラフを作ることもできた。
けど、色々項目がありすぎて全然掴めない・・・。少しずつ慣れるしかないか
amazon linux 64bitにzabbix-serverをインストール
なんとなくzabbixな気分になったので遊んでみる
環境
参考サイト
Zabbixインストール
yumでインストール
$ sudo yum install -y --enablerepo=epel httpd mysql-server zabbix20 zabbix20-server zabbix20-server-mysql zabbix20-web zabbix20-web-mysql
php.iniを修正
$ sudo cp /etc/php.ini{,.org} $ sudo vi /etc/php.ini $ sudo diff -U 1 /etc/php.ini{.org,} --- /etc/php.ini.org 2013-06-24 15:42:40.522299567 +0900 +++ /etc/php.ini 2013-06-24 16:15:30.378574045 +0900 @@ -443,3 +443,3 @@ ; http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time -max_execution_time = 30 +max_execution_time = 300 @@ -452,3 +452,3 @@ ; http://www.php.net/manual/en/info.configuration.php#ini.max-input-time -max_input_time = 60 +max_input_time = 300 @@ -735,3 +735,3 @@ ; http://www.php.net/manual/en/ini.core.php#ini.post-max-size -post_max_size = 8M +post_max_size = 16M @@ -955,3 +955,3 @@ ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone -;date.timezone = +date.timezone = 'Asia/Tokyo'
my.confを修正
$ sudo cp /etc/my.cnf{,.org} $ sudo vi /etc/my.cnf $ sudo diff -U 1 /etc/my.cnf{.org,} --- /etc/my.cnf.org 2013-06-24 15:47:08.506592488 +0900 +++ /etc/my.cnf 2013-06-24 15:50:12.020811574 +0900 @@ -10,2 +10,5 @@ +character-set-server = utf8 +skip-character-set-client-handshake + [mysqld_safe]
Zabbix用DB作成
$ sudo /etc/init.d/mysqld start $ sudo chkconfig mysqld on $ sudo mysqladmin create zabbix --default-character-set=utf8 $ mysql -uroot mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; mysql> flush privileges; mysql> quit
Zabbix用DBにスキーマをインポート
$ mysql -uzabbix -pzabbix zabbix < /usr/share/zabbix-mysql/schema.sql $ mysql -uzabbix -pzabbix zabbix < /usr/share/zabbix-mysql/images.sql $ mysql -uzabbix -pzabbix zabbix < /usr/share/zabbix-mysql/data.sql
apache起動
$ sudo /etc/init.d/httpd start $ sudo chkconfig httpd on
webUIにアクセス
ブラウザからhttp://[EC2のpublic hotsname]/zabbixにアクセス
php.iniの修正が足りないと怒られるので、php.iniを修正してhttpdを再起動する
- DB接続部分
- portは0のまま
- userはzabbix
- passwordもzabbix
Zabbixログイン
user:admin
password:zabbix
webUI日本語化
ログイン後に画面右上の [Profile]をクリック
LanguageをJapaneseに変更してsaveすれば日本語になる
zabbix-server起動
zabbix_server.conf修正
$ sudo cp /etc/zabbix_server.conf{,.org} $ sudo vi /etc/zabbix/zabbix_server.conf ↑read onlyになっているため、:w!で保存した $ sudo diff -U 1 /etc/zabbix_server.conf{.org,} --- /etc/zabbix_server.conf.org 2013-06-24 16:32:24.819310820 +0900 +++ /etc/zabbix_server.conf 2013-06-24 16:33:52.998378732 +0900 @@ -112,2 +112,4 @@ +DBPassword=zabbix + ### Option: DBSocket
起動
$ sudo /etc/init.d/zabbix-server start $ sudo chkconfig zabbix-server on
gitの特定ブランチへのpushをフックしてJenkinsジョブを実行する
Jenkinsプラグインを使えば解決できるらしいけど、社内環境の都合でプラグインを入れるのが大変だったのでbareにフックを仕込んでみた。
Jenkinsジョブを用意
ジョブを作る際、ビルド・トリガでリモートからビルドをチェックする
認証トークンは任意の文字列なので適当に
bareブランチにフックを仕込む
今回はpushをフックしたいので、updateフックを作る
GIT_DIR/hooks/update.sampleをほぼ丸っと使わせてもらうことにした
- 例えばこんな感じで、case文の箇所でdevelopブランチにcommitが追加されたらjenkinsにcurlを投げてジョブを走らせる
- 標準出力に出力したものはpushを叩いたクライアント側に表示される
- Jenkinsのジョブを実行するURLは Jenkins-Host/job/my-job/build?token=文字列
- クエリでもPOSTのボディでもいい
- パラメータ付きで実行するならbuildWithParametersにして、クエリかボディを増やす
#!/bin/sh # --- Command line refname="$1" oldrev="$2" newrev="$3" # --- Safety check if [ -z "$GIT_DIR" ]; then echo "Don't run this script from the command line." >&2 echo " (if you want, you could supply GIT_DIR then run" >&2 echo " $0 <ref> <oldrev> <newrev>)" >&2 exit 1 fi if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then echo "Usage: $0 <ref> <oldrev> <newrev>" >&2 exit 1 fi # --- Check types # if $newrev is 0000...0000, it's a commit to delete a ref. zero="0000000000000000000000000000000000000000" if [ "$newrev" = "$zero" ]; then newrev_type=delete else newrev_type=$(git cat-file -t $newrev) fi case "$refname","$newrev_type" in refs/heads/develop,commit) # execute Jenkins job echo "Automatically execute my-job in jenkins" curl -i -X POST http://Jenkins-Host/jenkins/job/my-job/build?token=520d3a1b13aceb20cf229c1d7f85c4c6 > /dev/null 2>&1 ;; esac # --- Finished exit 0
ハマったこと
update.sampleをそのままコピーして、クライアントからpushを叩くとこんなエラーが出る
*** Project description file hasn't been set
これはupdate.sampleの中でdescriptionファイルを確認するこんなコードが入ってるからで、
該当箇所を消すか、GIT_DIR/descriptionを編集して適当な文字列に変えてやればOK
GIT_DIR/hooks/update.sample 52 # check for no description 53 projectdesc=$(sed -e '1q' "$GIT_DIR/description") 54 case "$projectdesc" in 55 "Unnamed repository"* | "") 56 echo "*** Project description file hasn't been set" >&2 57 exit 1 58 ;; 59 esac