自宅ラック勉強会 2.2夏の Zabbix 特別教室~構築編~
2
CN:九龍真乙(くりゅうまおと) 所属:自宅ラック勉強会 Twitter @qryuu
2013/8/24
自己紹介
システム要素
2013/8/243
• php による実装WEB
• MySQL• PostgreSQL• Oracle 等
データベース• C 言語による実装Serv
er• Zabbix_agent• SNMP• IPMI など
Agent
各要素は IP ネットワーク的に接続されます。 このため各コンポーネントが異なるサーバにインストールされていてもかまいません。 同一のサーバ内にインストールすることももちろん可能です。
監視通信
2013/8/244
Zabbix-server→Zabbix-Agentパッシブ監視: Server が Agent に対してポーリングを行うIP アドレス( DNS 名)の一致が必要
Zabbix-Agent→Zabbix-Serverアクティブ監視: Agent が Server に対してアイテムリストを要求し、リストに従って値を Agent が値を送信ホスト名の一致が必要 Zabbix-Server→SNMP-Agent
SNMP ポーリング: OID による値取得 SNMP-Agent→Zabbix-Server
SNMPTrap : SNMPTT の設定が必要 Zabbix-Server→IPMI-Agentセンサー名による値取得 ほかにも、ポート監視や web 監視、 Ping監視、 Agent レス監視が可能
Zabbix-
Server
Zabbix-
Server
Zabbix-AgentZabbix
-AgentSNMP-AgentSNMP-
AgentIPMI-Agent
公式パッケージの内容解説については、パッケージ名および、展開内容に基づく筆者の推測です。Zabbix_SIA および Zabbix_Japan の公式見解ではありません。
2013/8/245
注意
2013/8/246
Zabbix_SIA 公式パッケージRPM 内容zabbix ドキュメント&インストールディレクトリzabbix-agent zabbix-agent zabbix-get zabbix-getzabbix-java-gateway zabbix-java-gatewayzabbix-proxy zabbix-proxy 用ディレクトリzabbix-proxy-mysql MySQL 用 zabbix_proxyzabbix-proxy-pgsql PostgreSQL 用 zabbix-proxyzabbix-proxy-sqlite3 SQLite 用 zabbix-proxyzabbix-release yum install のためのリポジトリ RPMzabbix-sender zabbix-senderzabbix-server zabbix-server 用ディレクトリzabbix-server-mysql MySQL 用 zabbix-serverzabbix-server-pgsql PostgreSQL 用 zabbix-serverzabbix-web zabbix-web フロントエンドの本体zabbix-web-japanese フロントエンドのグラフ日本語対応用パッチzabbix-web-mysql フロントエンドの MySQL 接続用パッチzabbix-web-pgsql フロントエンドの PostgreSQL 接続用パッチ
公式パッケージが用意されてるのは、システム構成で示した「 WEB 」「 Server 」「 Agent 」の部分です。 データベース部分は含まれていないので、 MySQL や
PostgreSQL,Sqlite は別途構築しておく必要があります。 構築したデータベースに対応するパッケージ選択しインストールしてください。 ※Zabbix は ORACLE DB にも対応していますが、対応パッケージは配布されていないため、データベースに Oracle を利用する場合はソースからコンパイルする必要があります。
2013/8/247
公式パッケージの範囲
Zabbix の公式パッケージは以下のプラットフォームに対応しています。 RHEL5.x-x86_64/RHEL6.x-x86_64 CentOS5.x-x86-64/CentOS6.x-x86_6x
Debian6/Debian7 Ubuntu10.04 LTS/Ubuntu12.04 LTS
2013/8/248
公式パッケージの対応 OS
CentOS 6.4 x86_64 インストールタイプ: Basic Server 追加パッケージ: X Windows System, デスクトップ , 汎用デスクトップ tigervnc-server 構築済み SELinux=disabled ( 石川さんごめんなさい ) ディスク構成: sda (/)40GB+sdb(/data) 60GB FW 設定済み(詳細は login して確認) user:zabbix,pw:zabbix user:root,pw: jitakurack
2013/8/249
今回の勉強会環境
1. Oracle 版 MySQL5.6 のインストール /Zabbix用DB の作成
2. yum による Zabbix の構築および、自己監視設定3. Windows 版 Zabbix-agent のインストールおよび監視設定
2013/8/2410
今回の作業予定
1. http://dev.mysql.com/downloads/mysql/ を確認し、最新の rpm バージョンを確認します。
2. rpm パッケージをダウンロードします。
2013/8/2411
MySQL のインストール
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-client-5.6.13-1.el6.x86_64.rpm/from/http://cdn.mysql.com/ \http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-compat-5.6.13-1.el6.x86_64.rpm/from/http://cdn.mysql.com/ \http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-server-5.6.13-1.el6.x86_64.rpm/from/http://cdn.mysql.com/ \http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-devel-5.6.13-1.el6.x86_64.rpm/from/http://cdn.mysql.com/ \http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-5.6.13-1.el6.x86_64.rpm/from/http://cdn.mysql.com/
始めに shared 以外のパッケージをインストールします。(依存関係のため) 次に shared パッケージをインストールします。 MySQL5.6 では my.cnf のパスが変わりました。
/etc 配下ではなく /usr 配下です古い my.cnf を削除(リネーム)します。
2013/8/2412
MySQL のインストールyum install MySQL-{client,devel,server,shared-compat}-5.6.13-1.el6.x86_64.rpm
yum install MySQL-shared-5.6.13-1.el6.x86_64.rpm
mv /etc/my.cnf /etc/my.cnf.old
my.cnf を編集します。(画面の都合で 2 枠に分けて記載しています。)
2013/8/2413
MySQL の簡易チューニングvi /usr/my.cnf
[mysqld]user=mysql
datadir=/datasocket=/var/lib/mysql/mysql.sockcharacter-set-server=utf8
[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
[mysql]default-character-set=utf8
### Tuning Settinginnodb_file_per_table =1innodb_autoextend_increment = 1innodb_file_format=Barracudainnodb_buffer_pool_size = 2Ginnodb_thread_concurrency = 20innodb_flush_log_at_trx_commit=2innodb_log_buffer_size=32Minnodb_log_file_size = 256Minnodb_support_xa = 0innodb_checksums = 0innodb_doublewrite = 0
MySQL のディレクトリを変更して起動します。 MySQL の root ユーザのパスワードを変更します。 MySQL のセキュアインストールを実行します。
2013/8/2414
MySQL の初期設定mysql_install_db --datadir=/data --user=mysqlservice mysql start
mysqladmin -u root password 'jitakurack'
mysql_secure_installationEnter current password for root (enter for none):jitakurackChange the root password? [Y/n] n #root パスワードを変更するかRemove anonymous users? [Y/n]Y # 匿名ユーザを削除するかDisallow root login remotely? [Y/n] Y # リモート root ログインを許可するかRemove test database and access to it? [Y/n] Y #test DB を削除するかReload privilege tables now? [Y/n] Y # 権限テーブルをリロードするか
Zabbix のリポジトリを登録します。
公式手順が見たい方は Zabbix_SIA のドキュメントを参照してください。 https://
www.zabbix.com/documentation/2.0/manual/installation/install_from_packages
2013/8/2415
Zabbix リポジトリの登録rpm -ivh http://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm
server,agent,frontend をインストールします。
このとき、依存関係にある php やOpenIPMI 、 fping 、 net-snmp 、 unixODBC等 も同時にインストールされます。
※将来的には SNMPTT もパッケージに含まれる可能性がありますが、現時点では含まれていません。SNMPTrap 監視のためには別途インストールする必要があります。
SNMPTT については 2 日目で扱います。 2013/8/2416
Zabbix インストールyum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-web-japanese zabbix-java-gateway zabbix-sender zabbix-get
MySQLへのログイン
Zabbix DB の作成、権限設定
スキーマファイルの流し込み
2013/8/2417
Zabbix_DB の作成mysql -uroot -pEnter password:jitakurack
mysql> create database zabbix character set utf8;mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';mysql> FLUSH PRIVILEGES;mysql> exit
cd /usr/share/doc/zabbix-server-mysql-2.0.7/create/ # バージョンによりパスは違いますcat schema.sql |mysql -uzabbix zabbix -pEnter password:zabbix
cat images.sql |mysql -uzabbix zabbix -pcat data.sql |mysql -uzabbix zabbix -p
肥大化しやすい、ヒストリテーブルとイベントテーブルを圧縮しておきます。
2013/8/2418
Zabbix_DB の圧縮設定mysql> ALTER TABLE history ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;mysql> ALTER TABLE history_log ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;mysql> ALTER TABLE history_str ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;mysql> ALTER TABLE history_text ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;mysql> ALTER TABLE history_uint ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;mysql> ALTER TABLE events ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
mysql> SHOW TABLE STATUS LIKE 'history' \G
変更ポイント、解説ポイントを抜粋しています。
2013/8/2419
Zabbix_Server の初期設定vi /etc/zabbix/zabbix_server.confLogFileSize=20 # 初期値の1MB では小さすぎるので増やします。DBHost=localhost #DB のアドレス、今回は変更しませんDBName=zabbix #DB 名、今回は変更しませんDBUser=zabbix #DB ユーザ、今回は変更しませんDBPassword=zabbix #DB パスワードを入力します。StartPollers=10 # エージェント監視や SNMP 監視を行うプロセス数StartIPMIPollers=5 #IPMI 監視を行うプロセス数StartPollersUnreachable=3 # 取得不可アイテムの再確認を受け持つプロセス数StartTrappers=5 #受信型アイテムを取り扱うプロセス数StartPingers=5 #Ping を行うプロセス数StartDiscoverers=5 # ディスカバリーを行うプロセス数StartHTTPPollers=3 #WEB 監視を行うプロセス数SNMPTrapperFile=/var/log/snmptt/snmptt.log #SNMPTT のログファイルパスStartSNMPTrapper=1 #SNMPTT のログ確認を行うプロセス数SenderFrequency=30 # アクションの実行判定を行う周期(秒)# StartDBSyncers=4 #DBへの書き込みを行うプロセス数Timeout=5 #poller系プロセスのタイムアウト(秒)
2013/8/2420
Zabbix_Agent の初期設定vi /etc/zabbix/zabbix_agentd.confLogFileSize=5 # 初期値の 0MB では log が出力されません。#SourceIP= #マルチ IP 構成の場合、応答時の IPを指定できます。EnableRemoteCommands=1 #Zabbix サーバからのコマンド実行を許可します。
system.run アイテムやリモートコマンドに必要です。LogRemoteCommands=1 # 実行したリモートコマンドを agentd.log に記録します。Server=127.0.0.1 # パッシブ型監視を許可するサーバ IP を指定します。
[,]区切りでマルチサーバからの監視を許可できます。# ListenIP=0.0.0.0 # 特定の IP アで Listen したい場合に設定します。設定しない場合、ホストが持つ全 IP で Listen します。ServerActive=127.0.0.1 # アクティブ型監視でアイテムリストを取得に行く サーバ IP を指定します。
[,]区切りで複数のサーバを指定出来ます。#Hostname=Zabbix server #Agent のホスト名、
WEB で指定したホスト名と一致する必要がある。
変更ポイント、解説ポイントを抜粋しています。(続き)
2013/8/2421
Zabbix_Agent の初期設定HostnameItem=system.hostname #Agent のホスト名を OS のホストネームから 自動的に設定する
Hostname か HostnameItem いずれかを設定する 必要がある。RefreshActiveChecks=60 # アクティブ型監視のアイテムリスト更新周期(秒)# BufferSend=5 # データの保持秒数# BufferSize=100 # データの保持個数# MaxLinesPerSecond=100 #1秒あたりの最大送信 log 行数(アイテム設定で上書きされます。 )# AllowRoot=0 #1 にした場合 root ユーザ権限で動作します。
0 の場合は zabbix ユーザ権限で動作します。Timeout=5 #agent でのコマンドタイムアウト実際の動作は server側タイムアウトにも影響されますUnsafeUserParameters=1 #0 の場合、ユーザパラメータやリモートコマンドで 以下の文字を使うことができません。
\ ' ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
自動起動設定
サービス起動
2013/8/2422
サービス起動chkconfig zabbix-server onchkconfig zabbix-agent onchkconfig httpd on
service zabbix-server startservice zabbix-agent startservice httpd start
ブラウザで zabbix-web パッケージをインストールしたサーバにアクセスします。 http://<ip アドレス >/zabbix
2013/8/2423
Zabbix_WEB の初期設定
Zabbix_WEB の初期設定
2013/8/2424
初期セットアップ画面が表示されます。 [Next] をクリックします。
Zabbix_WEB の動作環境確認
2013/8/2425
Zabbix-web の動作環境がチェックされます。[Fail] となっている項目があれば、パッケージの追加や php.ini の編集を行い、 httpd の再起動を行い、 [Retry] をクリックします。
右の図では PHP time zone が設定されていないというエラーが表示されています。
PHP time zone を設定します。 不足していた PHP time zone の設定を行います。 php.ini を編集した場合、 httpd を再起動します。
2013/8/2426
Zabbix_WEB の初期設定vi /etc/php.ini
date.timezone = Asia/Tokyo
service httpd restart
Zabbix_WEB の動作環境確認
2013/8/2427
問題が無くなると、 [Retry]ボタンが消え、[OK] と表示されます。
[Next>>] をクリックします。
Zabbix_WEB の DB 接続
2013/8/2428
DBへの接続設定を行います。 表示される Database type はインストールしたパッケージにより異なります。 今回は zabbix-web-mysql をインストールしているので
MySQL が選択されます。 接続情報を入力します。 接続情報を入力したら [Test
connection] をクリックし接続テストをします。 [OK] と表示されれば、
[Next>>] がクリックできるようになります。
Zabbix_WEB の Zabbix-Server 接続
2013/8/2429
Zabbix-serverへの接続情報を入力します。 Host:Zabbix-server の
IP アドレスまたはFQDN
Port:Zabbix-server のListen ポート
Name:Zabbix-WEB に表示する識別名(任意) 入力したら [Next>>]をクリックします。
Zabbix_WEB の設定確認
2013/8/2430
これまでの設定情報が表示されます。 修正する場合は
[<<Previous] 問題ない場合は
[Ntxt>>] をクリックします。
Zabbix_WEB の設定書込
2013/8/2431
設定内容が /etc/zabbix/web/zabbix.conf.php に記録されます。
権限不足などにより書込めなかった場合は、設定ファイルのダウンロード画面になります。この場合設定ファイルを指定されたディレクトリに配置することで設定を完了する事も可能です。 [Finish] をクリックします。
Zabbixへのログイン
2013/8/2432
Zabbix-WEB の初期設定が完了するとログイン画面が表示されます。 以下の初期ユーザでログインします。 Username:admin Password:zabbix
表示の日本語化
2013/8/2433
言語設定は、ユーザアカウント毎に変更する事ができます。 画面右上の [profile] をクリックし、
[Language] でjapanese を選択すれば、日本語表示になります。
設定項目の関連
一度、自分で登録して関連を覚えることをおすすめします2013/8/2434
Zabbix 監視設定の基本のキホスト
• 対象機器の名前• 接続情報• インベントリ情報
アイテム• 収集データ
トリガー• 閾値• 条件判定
アクション• 通知• コマンド実行
ホスト設定:ホスト
2013/8/2435
ホスト設定:監視対象機器を登録します ホスト名:ホストを識別するキーになります。 Agent の設定と一致している必要があります。( Zabbix-
Agent を使わない監視対象では一意であればかまいません) 表示名:画面上で表示させる名称 グループ:グループ毎にアクセス権を制御します。管理に合わせて随時設定します。 インターフェイス:エージェント、
SNMP 、 JMX,IPMI毎にインターフェイスを登録できます。 [ 追加 ]を押すことで複数のインターフェイスを登録することもできます。
ホスト設定:テンプレート
2013/8/2436
テンプレートをリンクさせることで、事前に設定されている複数のアイテム・トリガー・グラフをまとめて設定することができます。
ホスト設定:ホストインベントリ
2013/8/2437
機器の構成情報を登録することができます。 [マニュアル ] では手動で登録 [ 自動 ] では項目と関連づけられたアイテムの値が自動的に登録されます。
アイテム設定:
2013/8/2438
タイプ 内容Zabbix エージェント Zabbix-server→Zabbix-agent
Zabbix エージェント(アクティブ) Zabbix-agent→Zabbix-server(ログ監視では必須)シンプルチェック Ping 、ポートチェックSNMP[v1|v2|v3] エージェント SNMP ポーリングSNMP トラップ SNMP トラップの受信
( SNMPTT の設定が必要)Zabbix インターナル Zabbix-Server の内部状態
( 2.2 では Proxy にも対応予定)Zabbix トラッパー Zabbix-Sender からのデータ受信Zabbix アグリゲート ホストグループ単位での
同一アイテム集計外部チェック Server の指定ディレクトリに置かれ
た任意のスクリプトを実行データベースモニタ ODBC 接続したデータベース上で
SQL を実行IPMI エージェント IPMI のセンサー値を取得SSL エージェント SSL 接続して任意コマンドを実行TELNET エージェント TELNET 接続して任意のコマンドを
実行JMX エージェント JAVA-VM の監視
( Zabbix-java-gateway の設定が必要)
計算 取得済みアイテムの任意の集計
トリガー設定
2013/8/2439
アイテムで収集した値に対して閾値やキーワードを設定 計算式は、自分で打ち込んでもいいですし、機能から選択することも可能(その方がおすすめ)
アクション
2013/8/2440
トリガー条件がヒットした場合に指定された対象(ホスト・ホストグループ・ユーザー)に対してメッセージ送信・コマンド実行を行う エスカレーション設定を行うことで、指定時間(分)後に繰り返しや、別の処理を行うことが可能