Intel Edisonでzabbixエージェントを動かす

#はじめに
意外とあっさり出来たので拍子抜け

#事前準備
「電源を供給すれば自動的に無線LANに接続して、静的なIPでLANに接続される」までを事前準備とします。

##最新ファームウェアの適用
これを行わないと、無線LAN経由でのSSH操作が非常に重たく、まともに操作すらできないことがあるようです。
→こちら参照 http://trac.switch-science.com/wiki/IntelEdisonStart

##無線LANの設定
→こちら参照 http://trac.switch-science.com/wiki/IntelEdisonBreakoutBoardWiFi

##wpa_supplicantの自動起動
デフォルトで自動起動になっていない場合、電源を入れていくら待っても無線LAN経由では接続出来ないので。

```shell
# systemctl enable wpa_supplicant
```

##固定IPアドレスの割り当て
→こちら参照 http://nanicananica.blog.fc2.com/blog-entry-40.html
参照先では設定の反映のためにEdison自体をrebootしていますが、

```shell-session
# systemctl restart wpa_supplicant
```

で大丈夫だと思います(多分)

ここまでで、「電源(Not PC)に接続すれば自動的に無線LANに接続されて、SSHでログインできる状態」になっていること。

#zabbixエージェントのビルド

ソースをダウンロードしてきて一般的な環境と同様にビルド。
zabbixエージェント自体はそれほど大きいプログラムではないので、クロスコンパイル環境を構築するよりは楽かな、と。

URLはダミーなので、その時の最新のURLを http://www.zabbix.com/download.php からどうぞ。

```shell-session
# wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.3/zabbix-2.4.X.tar.gz
# tar zxvf zabbix-2.4.X.tar.gz
# cd zxvf zabbix-2.4.3
# ./configure --enable-agent
# make
```

_※起動スクリプトのコピーは不要なので```make install```は行わない_

#RHEL7用の公式パッケージからsystemd用設定ファイルを取り出す

systemd用の設定ファイル(zabbix-agent.service)はzabbixの開発元で公開しているRHEL7用のインストールパッケージのrpmから拝借する。
_ここの作業に関してはEdison内ではなく、wgetとrpm2cpioコマンドが使用できる環境(CentOS等)で行ってください。_

```shell-session
# cd /home/
# wget http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-agent-2.4.3-1.el7.x86_64.rpm
# mkdir work
# cd work
# rpm2cpio ../zabbix-agent-2.4.3-1.el7.x86_64.rpm | cpio -idv
```

#バイナリ・設定ファイルを適宜配置

取りあえず↓の方針で

* ビルドで得られたバイナリは/usr/sbin/
* zabbix_agentd用の設定ファイルのzabbix_agentd.confは/etc/
* sytemd用の設定ファイルのzabbix-agent.serviceは/etc/systemd/system/

#設定ファイルを適宜修正

zabbix_agentd.confとzabbix-agent.serviceを、上記で配置したパスに合わせていい感じに修正

* zabbix_agentd.conf

普通のサーバのエージェントと同様

```shell-session
# diff zabbix-2.4.3/conf/zabbix_agentd.conf /etc/zabbix_agentd.conf
--- zabbix-2.4.3/conf/zabbix_agentd.conf
+++ /etc/zabbix_agentd.conf
@@ -78,7 +78,7 @@
 # Default:
 # Server=

-Server=127.0.0.1
+Server=192.168.X.X

 ### Option: ListenPort
 #      Agent will listen on this port for connections from the server.
@@ -119,7 +119,7 @@
 # Default:
 # ServerActive=

-ServerActive=127.0.0.1
+ServerActive=192.168.X.X

 ### Option: Hostname
 #      Unique, case sensitive hostname.
@@ -130,7 +130,7 @@
 # Default:
 # Hostname=

-Hostname=Zabbix server
+Hostname=edison

 ### Option: HostnameItem
 #      Item used for generating Hostname if it is undefined. Ignored if Hostname is defined.
```

* ↓zabbix-agent.service
パスを上述でコピーした先に合わせる。

それ以外はそのまま。

```shell-session
# diff zabbix-agent.service.org zabbix-agent.service
--- zabbix-agent.service.org
+++ zabbix-agent.service
@@ -4,11 +4,11 @@
 After=network.target

 [Service]
-Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf"
+Environment="CONFFILE=/etc/zabbix_agentd.conf"
 EnvironmentFile=-/etc/sysconfig/zabbix-agent
 Type=forking
 Restart=always
-PIDFile=/run/zabbix/zabbix_agentd.pid
+PIDFile=/tmp/zabbix_agentd.pid
 KillMode=process
 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
```


#zabbixユーザを作る
AllowRoot=1するなら不要かもしれない

```shell-session
# useradd zabbix -c "Zabbix Monitoring System" -d "/var/lib/zabbix" -s "/sbin/nologin"
# grep zabbix /etc/passwd
zabbix:x:1000:1000:Zabbix MonitoringSystem:/var/lib/zabbix:/sbin/nologin
```


#systemctlコマンドでサービスの確認・起動

```shell-session
# systemctl status zabbix-agent.service
# systemctl enable zabbix-agent.service
# systemctl start zabbix-agent.service
# ps |grep zabbix
```

# zabbixサーバ側で動作確認

Web UIでホストを設定して、上手く認識できればOK