Amazon RDS for PostgreSQL で PostGIS を使う方法

起動直後のRDS(PostgreSQL)では、空間データベース用の関数などが定義されてないので、そのままでは使えない

postgreSQLユーザーの権限不足で定義ファイルのpostgis.sqlやspatial_ref_sys.sqlとか実行できないし、どうしたものかと思っていたけど、以下を実行することで解決

create extension postgis;
create extension postgis_topology;

PostgreSQL 9.1からは、extensions使ってPostGISインストールできるんですね
いつも定義ファイルを自分で実行していたので知らなかった

select postgis_version();
2.1 USE_GEOS=1 USE_PROJ=1 USE_STATS=1

ばっちり使えました

カテゴリー: AWS

EC2 + nginx + php-fpm

yumで何でもかんでも入れられて楽ちん

sudo yum install nginx
sudo yum install mysql-server
sudo yum install php php-fpm php-mbstring php-mysql

nginxの設定

sudo vi /etc/nginx/nginx.conf

        charset utf-8;
        root /var/www/html;
        index index.php;

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

※元々のコメントアウトを使うと「file not found」の洗礼を受ける

php-fpmの設定

sudo vi /etc/php-fpm.d/www.conf

    user = nginx
    group = nginx

起動

sudo /etc/init.d/nginx start
sudo /etc/init.d/php-fpm start
カテゴリー: AWS

Zabbix-ServerをAWS環境に移設

2年前(AWS東京リージョン)が出来た時から今まで自社サーバとAWSクラウド環境のハイブリッド運用をしていたのだけど、自社サーバのハードウェアリプレース時期にもなってきたので全面的にAWSに移行しようと思っております。

第1弾として、自社サーバで動いていZabbixサーバの移設から手を付けた
移設先はリージョン別にした方が良いかなってことでシドニーリージョン
導入方法はこの辺を見て適当に

zabbix2.0をAmazonlinuxにインストールしたった。(rpm)

旧環境がzabbix1.8だったのでzabbixエージェントもzabbix2.0へバージョンアップ
1.8はソースから入れたけど2.0はサーバ作るときにできたRPMを使う
1台ずつ入れ替えるのはだるいのでスクリプト書いた


#!/bin/bash
cd /home/ec2-user
wget http://XXX.XXX.XXX.XXX/zabbix/rpm/zabbix-2.0.4-1.amzn1.x86_64.rpm
wget http://XXX.XXX.XXX.XXX/zabbix/rpm/zabbix-agent-2.0.4-1.amzn1.x86_64.rpm

sudo /sbin/service zabbix_agentd stop
sudo /sbin/chkconfig --del zabbix_agentd
sudo rm -f /usr/local/sbin/zabbix_agent*
sudo rm -f /usr/local/bin/zabbix_agent*
sudo rm -f /etc/init.d/zabbix_agentd
sudo rm -f /etc/zabbix/*

sudo yum -y localinstall zabbix-2.0.4-1.amzn1.x86_64.rpm zabbix-agent-2.0.4-1.amzn1.x86_64.rpm

sudo sed -i s/Server=127.0.0.1/Server=新しいZabbixServerのIP/ /etc/zabbix/zabbix_agentd.conf

sudo /sbin/chkconfig zabbix-agent on
sudo /sbin/service zabbix-agent start

以下、zabbix1.8→zabbix2.0でハマったこと

statusキーが使えなくなっていた

サーバの死活監視にstatusキーを使っていたんだけど、zabbix2.0のテンプレート作ろうとしてもstatusキーがない。。。

変わりにagent.pingを使えということらしい
トリガーは下記のように設定

{Template OS Linux:agent.ping.nodata(2m)}=1

外部チェック(externalscripts)の引数指定の変更

zabbix1.8では暗黙に第1引数にホスト名が渡っていたのだけどzabbix2.0では自分で指定しないといけない。
複数の指定も半角スペース区切りからカンマ区切りに変更されていた。

ホスト名の指定は{HOST.CONN}で行う

hogehoge.php[{HOST.CONN},param1,param2]

ローレベルディスカバリのテンプレート変更反映のタイミング

ローレベルディスカバリとは、zabbix2.0からの新機能でテンプレートに登録しておけば、マウントされてるディスクやネットワークインターフェイスを自動登録する仕組み

これを使ってEBSやNICのアイテムやトリガーをラクラク登録できるのだけど設定内容を変更しようとした時の動作が普通に登録した監視アイテムとは違うので注意

例えばディスクの残り容量アラートの設定を10%→20%に変更してみるとする。
通常のテンプレートだと各ホストの設定も即時反映されるのだけどローレベルディスカバリで登録されたアイテムは即時反映されない。

テンプレートで登録したディスカバリの更新間隔待つことで反映される(注:ディスカバリ内のアイテムの更新間隔ではない)

ディスカバリの更新間隔は、マウントされたディスクの検出タイミングにしか使ってないと思い込んでたせいで、トリガーのしきい値やグラフの項目追加すら即時反映されないのでしばらく悩んだ。

こんなところかな
zabbix2.0になって見た目もカッコよくなって満足しております。

カテゴリー: AWS