CentOSでのZabbix 2.2導入-1.Zabbixサーバーの設定

はじめに

サーバーの稼動状態やパフォーマンスの監視のため、Zabbixを導入するケースがあると思います
少なくとも、最近のさくらのVPSでは、標準でEPELレポジトリが有効になっており、そのままyumでインストールしようとすると、1.8がインストールされます
2.2のほうが、標準のテンプレート含め、いろいろな面で強化されているようなので、私は2.2系を選択しました
サーバー側の設定方法はいろいろ解説されていますが、監視対象側の設定方法で手間取ったりしましたので、以下に、その導入手順を記載しておきます

なお、Apache, PHP, MySQLは既に導入済みであると仮定して進めます

Zabbixサーバーのインストール

yumリポジトリを登録

2.2系のrpmパッケージを提供している、Zabbix SIAのリポジトリを登録します

$ sudo rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.LRkhCR: ヘッダ V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
準備中...                ########################################### [100%]
   1:zabbix-release         ########################################### [100%]

Zabbixパッケージのインストール

$ sudo yum install zabbix zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent zabbix-get

MySQLにzabbix用の初期設定

まずはZabbix用のデータベースとMySQLユーザーを作成します

$ mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '(任意のパスワード)';
mysql> exit

次に、スキーマを構築し、初期データをインポートします
zabbix-server-mysql-2.2.6の部分は、インストールされたバージョンで異なりますので、それにあわせてください

$ cd /usr/share/doc/zabbix-server-mysql-2.2.6/create
$ mysql -uroot -p zabbix < schema.sql
$ mysql -uroot -p zabbix < images.sql
$ mysql -uroot -p zabbix < data.sql

設定ファイルの更新

次に、上で用意したデータベースの場所、データベース名、ユーザー名、パスワードをZabbixの設定ファイルに記述します

$ sudo vi /etc/zabbix/zabbix_server.conf
### Option: DBHost
#       Database host name.
#       If set to localhost, socket is used for MySQL.
#       If set to empty string, socket is used for PostgreSQL.
#
# Mandatory: no
# Default:
# DBHost=localhost

DBHost=localhost

### Option: DBName
#       Database name.
#       For SQLite3 path to database file must be provided. DBUser and DBPassword are ignored.
#
# Mandatory: yes
# Default:
# DBName=

DBName=zabbix

### Option: DBSchema
#       Schema name. Used for IBM DB2.
#
# Mandatory: no
# Default:
# DBSchema=

### Option: DBUser
#       Database user. Ignored for SQLite.
#
# Mandatory: no
# Default:
# DBUser=

DBUser=zabbix

### Option: DBPassword
#       Database password. Ignored for SQLite.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=

DBPassword=(上で設定した任意のパスワード)

Zabbixサーバプロセスを開始する

準備が出来たので、プロセスを起動します

$ sudo service zabbix-server start
$ sudo chkconfig zabbix-server on

次の記事で、Webフロントエンドの設定と、それを使った初期設定の方法を記載します

次の記事へ CentOSでのZabbix 2.2導入-2.Webフロントエンドの導入

WordPressで先頭位置固定の記事が固定されない

WordPressのカスタムテーマで先頭位置固定が有効にならない

あるサイトを外注でWordPressでデザインを組んでもらって実装していたが、記事リストを表示しているところで、先頭位置固定に設定している記事が、単純に登校日時ソートされて表示されるという不具合が発生したので、その対処方法について記載しておく

元々の実装

外注先から納品されていたphpファイルを覗いてみると、以下のようなコードになっていた

	$posts = get_posts('numberposts=10');
	foreach ($posts as $post) {
		// ここに各記事に対するループするテンプレート
		;
	}

問題はget_postsの仕様にあり

WordPressのドキュメントを調べると、get_posts関数は先頭位置固定を無効にする、ignore_sticky_postsという属性が有効になってしまうということであった
ignore_sticky_postsを無効にするためには、query_postsかWP_Queryを使うことになるが、query_postsの利用は非推奨なので、WP_Queryを使って実装しなおす

WP_Queryでの再実装

WP_Queryを使い、以下のようなループに実装しなおしたところ、問題が解消された

	$the_query = new WP_Query( 'posts_per_page=10' );

	if ( $the_query->have_posts() ) :
		while ( $the_query->have_posts() ) : $the_query->the_post();
			// ここに各記事に対するループするテンプレート
			;
		endwhile;
	endif;

	wp_reset_postdata();