煙と消えるその前に

一服してるうちに忘れる、自分のための備忘録。とかとか

amazon linux 64bitにzabbix-agentをインストール

なんとなくzabbixな気分になって遊んでみた

環境

  • amazon linux 64bit
    • security groupでTCP:10050を許可しておく
  • zabbix-agent 2.0.6-2.el6

参考

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にログインし、「設定」> 「ホスト」> 「ホストの作成」

  • ホスト名にはagentをインストールしたEC2のPublicDNSを入力
  • DNS名にも同様にPublicDNSを入力し、接続方式をDNSにする

メモリの空き容量を監視してみる

ホストの設定画面から先ほど作成したホストの「アイテム」> 「アイテムの作成」

  • タイプ:Zabbixエージェント(アクティブ)
  • キー:vm.memory.size[free]
  • データ型:数値

アイテム作成後にグラフを作ることもできた。
けど、色々項目がありすぎて全然掴めない・・・。少しずつ慣れるしかないか

amazon linux 64bitにzabbix-serverをインストール

なんとなくzabbixな気分になったので遊んでみる

環境

  • amazon linux 64bit
    • security groupでTCP:80/TCP:10051を許可しておく
  • zabbix 2.0.6-2.el6
  • mysql 5.5.31-1.32.amzn1
  • apache 2.2.24-2.31.amzn1

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ジョブを用意

ジョブを作る際、ビルド・トリガでリモートからビルドをチェックする
認証トークンは任意の文字列なので適当に

f:id:paty_fakename:20130529093625p:plain

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