CentOS7へのzabbix 3.0 の自動インストールの誘い

前回
http://qiita.com/m_46/items/9519f959c90b3157b9d8

に懲りず、今回もshell芸でzabbixの初期構築をやってみました。構成は以下の通りです。
CentOS 7.1
php 5.6
Apache 2.4.6
PostgreSQL 9.5.1
zabbix 3.0.1

以下、事前に注意すべき点があるのでお読み下さい。

1.以下の操作によってOSのユーザとして「postgres」や「zabbix」等のユーザが作成されるので、そのユーザを利用する運用の場合はパスワードセキュリティを高めましょう。DBレイヤのセキュリティの考慮についても同様です。
2.セキュリティを考慮し、PostgreSQLのデフォルトポート5432から9876に変更しています。
3.selinuxはdisabledとするか、適切に管理しましょう。接続不可なトラブルの何割かはコレが原因です。
4.zabbixは3から暗号化通信も可能ですがここでは割愛します。適宜導入を検討して頂ければと思います。
5.サーバを公開して運用する場合、firewalldやネットワークレイヤで、入念なセキュリティ対策を行ってから運用を行って下さい。何らかの被害が出ても責任は負い兼ねます。
6.細かなconfファイル,iniファイルの修正は各自で行って下さい。ここでは自分の好みを含める"動く最低限の設定"を適用しています。

上記各項を正しく理解した上で、以下のコマンドを流し込んで下さい。

```vim:/root/setup-zabbix.sh
# OSのセキュリティ対策アップデート等の実施
yum -y update

# 導入するツールのレポジトリ登録
yum -y install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -ivh http://yum.postgresql.org/9.5/redhat/rhel-7.2-x86_64/pgdg-centos95-9.5-2.noarch.rpm
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

# レポジトリの無効化
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel-testing.repo
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/pgdg-95-centos.repo
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/remi-php70.repo
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/remi-safe.repo
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/remi.repo
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/zabbix.repo

# 構成に必要(便利)なライブラリインストール
yum -y install libcurl-devel libzip zlib-devel libxml2-devel net-snmp net-snmp-devel libcurl-devel expect gcc
yum -y groupinstall Base

# zabbixに必要なライブラリインストール
yum -y install unixODBC  OpenIPMI-libs  OpenIPMI-modalias libtool-ltdl iksemel fping --enablerepo=zabbix,base,epel --skip-broken

# PostgreSQL9.5インストール
yum -y install postgresql95-server postgresql95-devel postgresql95-contrib --enablerepo=pgdg95

# 自動起動設定
systemctl enable postgresql-9.5.service

# initDB実行
su -c '/usr/pgsql-9.5/bin/initdb -D /var/lib/pgsql/9.5/data' postgres

# conf修正「/var/lib/pgsql/9.5/data/pg_hba.conf」
sed -i -e "s/peer/trust/g" /var/lib/pgsql/9.5/data/pg_hba.conf
sed -i -e "s/ident/trust/g" /var/lib/pgsql/9.5/data/pg_hba.conf

# conf修正「/var/lib/pgsql/9.5/data/postgresql.conf」
echo "checkpoint_timeout = 30min" >> /var/lib/pgsql/9.5/data/postgresql.conf
echo "checkpoint_completion_target = 0.8" >> /var/lib/pgsql/9.5/data/postgresql.conf
echo "listen_addresses = '*'" >> /var/lib/pgsql/9.5/data/postgresql.conf
echo "port = 9876" >> /var/lib/pgsql/9.5/data/postgresql.conf

# PostgreSQL9.5起動
systemctl start postgresql-9.5.service

# zabbixユーザの作成とDB登録
echo "create user zabbix SUPERUSER PASSWORD 'XXXXXXXXXXXX';" >> /root/create.sql
echo "create database zabbix owner=zabbix;" >> /root/create.sql
/usr/bin/psql -f /root/create.sql -U postgres -p 9876
rm -f /root/create.sql

# php,Apacheのインストール
yum -y install php php-common php-mbstring php-xml php-gd php-bcmath php-pgsql php-ldap php-cli php-pdo php-pecl-jsonc php-pecl-zip --enablerepo=remi,remi-php56

# /etc/php.iniの編集
sed -i -e "s/post_max_size = 8M/post_max_size = 16M/g" /etc/php.ini
sed -i -e "s/max_execution_time = 30/max_execution_time = 300/g" /etc/php.ini
sed -i -e "s/max_input_time = 60/max_input_time = 300/g" /etc/php.ini
sed -i -e "s/;date.timezone =/date.timezone = Asia\/Tokyo/g" /etc/php.ini
sed -i -e "s/;always_populate_raw_post_data/always_populate_raw_post_data/g" /etc/php.ini
sed -i -e "s/memory_limit = 128M/memory_limit = 256M/g" /etc/php.ini

# Apacheの設定
echo "ServerName `hostname`:80" >> /etc/httpd/conf/httpd.conf

# zabbixインストール
yum -y install zabbix-server-pgsql zabbix-web-pgsql zabbix-web-japanese --enablerepo=zabbix --skip-broken

# zabbixのDBへのスキーマ登録
cd /usr/share/doc/zabbix-server-pgsql-3.0.1/
gunzip create.sql.gz
echo "PW=\"XXXXXXXXXXXX\"" >> /usr/share/doc/zabbix-server-pgsql-3.0.1/schema.sh
echo "expect -c \"" >> /usr/share/doc/zabbix-server-pgsql-3.0.1/schema.sh
echo "set timeout 5" >> /usr/share/doc/zabbix-server-pgsql-3.0.1/schema.sh
echo "spawn psql -p 9876 -W -d zabbix -f /usr/share/doc/zabbix-server-pgsql-3.0.1/create.sql zabbix" >> /usr/share/doc/zabbix-server-pgsql-3.0.1/schema.sh
echo "expect \\\"ユーザ zabbix のパスワード:\\\" " >> /usr/share/doc/zabbix-server-pgsql-3.0.1/schema.sh
echo "send \\\"\${PW}\n\\\"" >> /usr/share/doc/zabbix-server-pgsql-3.0.1/schema.sh
echo "expect \\\"$\\\"" >> /usr/share/doc/zabbix-server-pgsql-3.0.1/schema.sh
echo "exit 0" >> /usr/share/doc/zabbix-server-pgsql-3.0.1/schema.sh
echo "\"" >> /usr/share/doc/zabbix-server-pgsql-3.0.1/schema.sh
chmod u+x /usr/share/doc/zabbix-server-pgsql-3.0.1/schema.sh
sh /usr/share/doc/zabbix-server-pgsql-3.0.1/schema.sh

# /etc/zabbix/zabbix_server.conf 修正
sed -i -e "s/LogFile=\/tmp\/zabbix_server.log/LogFile=\/var\/log\/zabbix\/zabbix_server.log/g" /etc/zabbix/zabbix_server.conf
echo "PidFile=/var/run/zabbix/zabbix_server.pid" >> /etc/zabbix/zabbix_server.conf
echo "DBHost=127.0.0.1" >> /etc/zabbix/zabbix_server.conf
echo "DBSocket=/tmp/.s.PGSQL.9876" >> /etc/zabbix/zabbix_server.conf
echo "DBPassword=XXXXXXXXXXXX" >> /etc/zabbix/zabbix_server.conf
echo "DBPort=9876" >> /etc/zabbix/zabbix_server.conf
echo "ListenPort=10051" >> /etc/zabbix/zabbix_server.conf
echo "ListenIP=127.0.0.1" >> /etc/zabbix/zabbix_server.conf

# Apacheの起動及び自動起動設定
systemctl enable httpd.service
systemctl start httpd.service

# zabbixの起動及び自動起動設定
systemctl enable zabbix-server.service
systemctl start zabbix-server.service
```

以上を実行した後、作業したサーバへ、ブラウザで

`httpl://{サーバIP}/zabbix`

とアクセスすると初期画面が表示されます。あとは適宜設定を追加してログインしてみてください。

以下はzabbix-agentの導入です。ご参考までに。

```vim:/root/setup-zabbix-agent.sh
yum -y install zabbix-agent --enablerepo=zabbix --skip-broken

sed -i -e "s/ServerActive=127.0.0.1/ServerActive=127.0.0.1:10051/g" /etc/zabbix/zabbix_agentd.conf
sed -i -e "s/Hostname=Zabbix server/Hostname=`hostname`/g" /etc/zabbix/zabbix_agentd.conf
echo "AllowRoot=1" >> /etc/zabbix/zabbix_agentd.conf
echo "EnableRemoteCommands=1" >> /etc/zabbix/zabbix_agentd.conf

systemctl enable zabbix-agent.service
systemctl start zabbix-agent.service
```

よきzabbixライフを！