23
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EC2上のCentOS 6.6にZabbix 2.4をインストール(RDS+nginx+PHP5.6)

Last updated at Posted at 2015-03-31

AWSにはCloudWatchがありますが、データの保存期間がたったの2週間しかありません。
それでは運用を続けていくにあたって短すぎるので、Zabbixサーバを構築してCloudWatchから値を取得しつつ、Zabbixからも監視を行うようにします。

公式ドキュメント

動作確認構成

  • EC2(c3.large)

    • CentOS 6.6
    • Zabbix 2.4.3
    • PHP 5.6.5
    • nginx 1.6.2
  • RDS(db.m3.medium)

    • MySQL 5.6.22

RDS

Security Group作成

  • ZabbixサーバからPort 3306へのアクセスが必要
Type Protocol Port Range Source
3306 TCP 3306 Zabbixサーバ

DB Subnet Group作成

  • 既存のVPC Subnetを追加したDB Subnet Groupを作成

Parameter Group作成

  • Parameter Groups -> Create Parameter Group
  • パラメータを適宜設定

RDS_create_parameter_group.png


Option Group作成

  • Option Groups -> Create Group
  • オプションを適宜設定

RDS_create_option_group_2015-03-31.png


RDS起動

  • RDS -> Launch a DB Instance -> MySQL
  • Do you plan to use this database for production purposes?で適宜選択
  • Backup/Maintenanceは適宜設定

rds-1_2015-03-31.png


rds-2_2015-03-31.png

rds-3_2015-03-31.png

EC2起動

IAM Role作成

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "autoscaling:Describe*",
        "cloudwatch:Describe*",
        "cloudwatch:Get*",
        "cloudwatch:List*",
        "logs:Get*",
        "logs:Describe*",
        "logs:TestMetricFilter",
        "sns:Get*",
        "sns:List*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

EC2起動

  • 作成したIAM Roleを指定した上でEC2を起動
  • c3.large
  • CentOS 6.6
  • Secutiry GroupにてTCP Port 22/443をIP限定して開放
  • 既存のVPCに所属させる
  • EIPを付与

PHP 5.6 インストール

# rpm -ivh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# yum install --enablerepo=remi,remi-php56 php php-cli php-common php-gd php-pdo php-mysql php-xml php-bcmath php-mbstring php-fpm php-devel
# php --version
PHP 5.6.5 (cli) (built: Jan 21 2015 17:50:29)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
# vi /etc/php.ini
/etc/php.ini
-max_execution_time = 30
+max_execution_time = 300
-max_input_time = 60
+max_input_time = 300
-post_max_size = 8M
+post_max_size = 32M
-;always_populate_raw_post_data = -1
+always_populate_raw_post_data = -1
+date.timezone = Asia/Tokyo

MySQLクライアント インストール

MySQL公式リポジトリを有効化

# rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

MySQL最新版をインストール

# yum install mysql
# mysql --version
mysql  Ver 14.14 Distrib 5.6.22, for Linux (x86_64) using  EditLine wrapper

Zabbix 2.4 インストール

Zabbix公式リポジトリを有効化

# rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

Zabbix最新版をインストール

# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-web-japanese zabbix-get

Zabbix データベース作成

# mysql -u root -p -h zabbix-db-1.xxxxxx.ap-northeast-1.rds.amazonaws.com
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@'10.0.%' identified by 'xxxx';

schema定義/データ投入

# cd /usr/share/doc/zabbix-server-mysql-2.4.3/create
# mysql -u root -p -h zabbix-db-1.xxxxxx.ap-northeast-1.rds.amazonaws.com zabbix < schema.sql
# mysql -u root -p -h zabbix-db-1.xxxxxx.ap-northeast-1.rds.amazonaws.com zabbix < images.sql
# mysql -u root -p -h zabbix-db-1.xxxxxx.ap-northeast-1.rds.amazonaws.com zabbix < data.sql

Zabbix Server設定

# vi /etc/zabbix/zabbix_server.conf
DBHost=zabbix-db-1.xxxxxx.ap-northeast-1.rds.amazonaws.com
DBName=zabbix
DBUser=zabbix
DBPassword=xxxx

Zabbix Server起動

# chkconfig zabbix-server on
# service zabbix-server start

Zabbix Agent起動

# chkconfig zabbix-agent on
# service zabbix-agent start

nginx インストール

ここではstableの1.6系をインストールする。
ただ、nginx作者いわく、stableよりmainlineを使うべきということなので、mainlineの方がいいかも。

nginxリポジトリをインストール

# rpm -ivh http://nginx.org/packages/rhel/6/noarch/RPMS/nginx-release-rhel-6-0.el6.ngx.noarch.rpm

nginx最新版をインストール

# yum install nginx
# nginx -v
nginx version: nginx/1.6.2

シンボリックリンク作成

# ln -s /usr/share/zabbix /usr/share/nginx/html/zabbix

SSL証明書作成

  • Organization NameCommon Nameなどは適宜設定すること
# openssl req -new -days 365 -x509 -sha256 -newkey rsa:2048 -nodes -keyout /etc/nginx/zabbix-cert.key -out /etc/nginx/zabbix-cert.crt
Generating a 2048 bit RSA private key
................................+++
.........+++
writing new private key to '/etc/nginx/zabbix-cert.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Minato
Organization Name (eg, company) [Default Company Ltd]:Enigmo Inc.
Organizational Unit Name (eg, section) []:System
Common Name (eg, your name or your server's hostname) []:zabbix.example.com
Email Address []:
# chmod 400 /etc/nginx/zabbix-cert.*
# openssl x509 -in /etc/nginx/zabbix-cert.crt -text -noout | grep "Signature\|Public-Key"
    Signature Algorithm: sha256WithRSAEncryption
                Public-Key: (2048 bit)
    Signature Algorithm: sha256WithRSAEncryption

Zabbix用の設定

# vi /etc/nginx/conf.d/zabbix.conf
server {
    listen 80;
    listen 443 default_server ssl spdy;

    root /usr/share/nginx/html;
    ssl                  on;
    ssl_certificate      /etc/nginx/zabbix-cert.crt;
    ssl_certificate_key  /etc/nginx/zabbix-cert.key;

    ssl_session_timeout  5m;

    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS;
    ssl_prefer_server_ciphers   on;

    server_name zabbix.example.com;
    index index.html;
    access_log /var/log/nginx/zabbix-access_log main;
    error_log  /var/log/nginx/zabbix-error_log error;

    location /zabbix {
        index index.php;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

基本的なチューニング

# vi /etc/nginx/nginx.conf
/etc/nginx/nginx.conf
-worker_processes  1;
+worker_processes  2;
+worker_rlimit_nofile 100000;

 events {
     worker_connections  1024;
+    multi_accept on;
+    use epoll;
 }

http {
-    #tcp_nopush     on;
+    tcp_nopush      on;

-    #gzip  on;
+    gzip  on;
+    gzip_vary on;
+    gzip_comp_level 6;
+    gzip_min_length 1024;
+    gzip_types text/plain application/javascript text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
+
+   open_file_cache max=100000 inactive=20s;
+   open_file_cache_valid 30s;
+   open_file_cache_min_uses 2;
+   open_file_cache_errors   on;
+
+    server_tokens  off;
}

設定ファイルチェック

# service nginx configtest
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

nginx, php-fpm起動

# chkconfig nginx on
# service nginx start
# chkconfig php-fpm on
# service php-fpm start

AWS監視用パッケージ インストール

AWS CLI インストール

  • EPEL設定
# rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# vi /etc/yum.repos.d/epel.repo
/etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
-enabled=1
+enabled=0
  • python-pipをインストール
# yum --enablerepo=epel install python-pip
  • awscliをインストール
# pip install awscli
  • 確認
# aws --version
aws-cli/1.7.3 Python/2.6.6 Linux/2.6.32-504.1.3.el6.x86_64

AWS CLI設定

作成したUserのAccess Key/Secret Access Keyを設定する。

# sudo -u zabbix aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]:
# aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]:

jq インストール

# yum --enablerepo=epel install jq

Zabbix設定

Web UIにアクセス

Zabbix Server初期設定

  • Next

zabbix-1.png

  • Next

stylehaus-zabbix-setting-1.png

  • User/Passwordを入力後、Test connectionOKと表示されることを確認。
  • Next

zabbix-1_2015-03-31.png

  • 識別用の名前を指定する場合はNameに入力
  • Next

zabbix-2_2015-03-31.png

  • Next

zabbix-3_2015-03-31.png

  • Finish

zabbix-6.png

  • Username: Admin, Password: zabbix
  • Sign in

zabbix-7.png

メール送信設定

Postfix設定

ホスト名設定。

# vi /etc/postfix/main.cf
/etc/postfix/main.cf
+myhostname = zabbix.example.com
# service postfix check
# service postfix reload

DNSレコード設定

  • TXTレコードにZabbixサーバのEIPを追加
  • ZabbixサーバのAレコードを設定
    • zabbix.example.com -> ZabbixサーバのEIP
    • Postfixで設定したホスト名と合わせること

AWSでメール送信制限の解除申請

  • Elastic IP Address 1 -> ZabbixサーバのEIP
  • Reverse DNS Record for EIP 1 -> zabbix.example.com

zabbix-5_2015-03-31.png

  • 受理されると以下のようなメールが送られてくる
Your AWS Inquiry

We have configured the reverse DNS record(s) you requested. Your request was mapped for xxx.xxx.xxx.xxx. :zabbix.example.com. Please note that propagation of this update to DNSBL services that Amazon works with may take up to a week.

If you also requested removal of the email sending limitations on your account, these have also been removed for any IPs and instances under your account.

SMTP設定

  • 管理 -> Email
  • SMTPサーバー: localhost
  • SMTP helo: zabbix.example.com
  • 送信元メールアドレス: zabbix@example.com

監視設定

以下を利用・参考にして設定。

クライアント側

監視される側で行う作業は以下。

Zabbix公式リポジトリを有効化

# rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

Zabbix Agentインストール

# yum install zabbix-agent

Zabbix Agent設定

# vi /etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.conf
-Hostname=Zabbix server
+#Hostname=Zabbix server

+EnableRemoteCommands=1

+HostMetadataItem=system.uname

Zabbix Agent起動

# chkconfig zabbix-agent on
# service zabbix-agent start

監視対象ホストを自動登録する場合

下記手順を元に設定する。
https://www.zabbix.com/documentation/2.4/manual/discovery/auto_registration

サーバ側でアクション設定

Web UIにて以下を実施。

  1. 設定 -> アクション
  2. イベントソースのプルダウンメニューで自動登録を選択
  3. アクションの作成
  4. アクションタブ内の名前で、アクションに名前を付ける
  5. アクションの実行条件タブで、任意の条件を指定(指定しない場合は全てのホストが対象となる)
    • ホスト名やホストメタデータ(HostMetadata or HostMetadataItem)などを条件とすることが可能
  6. アクションの実行内容タブで、以下の実行を追加
    • ホストを追加
    • ホストグループに追加
    • テンプレートとリンク
    • ユーザーグループにメッセージを送信

action-1.png


action-2.png


action-3.png

クライアント側で設定確認

  • /etc/zabbix/zabbix_agentd.conf内のServerActive でZabbix ServerのIPが指定されていることを確認
# grep ^ServerActive /etc/zabbix/zabbix_agentd.conf
ServerActive=xxx.xxx.xxx.xxx
  • 設定を変更した場合はZabbix Agentを再起動
# service zabbix-agent restart

Zabbixサーバのリソース

まだ監視対象が少ないので余裕がある状態です。

  • host: 10台
  • 監視項目数: 4.96/秒

zabbix-status_2015-03-31.png

zabbix-2_20150331.png

23
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?