hiratake55 の作業メモ

R, Javascript, Python, Linux and Hadoop

Amazon CloudWatch で EC2 インスタンスのプロセス監視を行う

Amazon EC2 で作成したサーバは無料で Amazon CloudWatch を利用したサーバの死活監視ができます。
標準で CPU の使用率やネットワークのトラフィック等、基本的な監視を行うことができますが、カスタムメトリクスを使用すればプロセス監視も行えるので、設定しておくにこしたことはないです。

料金も 10 メトリクス、10 アラーム、100 万 API リクエストまで無料なので、多くの場合無料の範囲内で使用できるはずです。Amazon Linux 64bit での手順は以下です。

1. YUMAWSモニタリングツールをインストール

Amazon Linuxだと、AmazonYUM レポジトリに登録されているので、YUM コマンドで簡単にインストール可能です。root で実行します。

# yum install aws-apitools-mon

2. Credential ファイルを作成する

テンプレートとして用意されている Credential ファイルをコピーし、必要な情報を記入します。
アクセスキー、シークレットキーは Amazon Web Services のアカウント画面(My Account→Security Credentials)に記載されています。(https://portal.aws.amazon.com/gp/aws/securityCredentials

# cp /opt/aws/credential-file-path.template /opt/aws/credential
# vi /opt/aws/credential
AWSAccessKeyId=<Write your AWS access ID>
AWSSecretKey=<Write your AWS secret key>

chmod 600 /opt/aws/credential

3. 監視スクリプトを作成する

プロセス数を送信するシェルスクリプトを作成します。JVM のインストールが必要です。各種パスは環境に応じて変更してください。サンプルとして、ApacheMySQL のプロセス数を監視する方法を以下に載せます。

# vi /root/cloudwatch/cloudwatch.sh
#!/bin/sh
export JAVA_HOME=/usr/lib/jvm/jre
export PATH=$PATH:$JAVA_HOME/bin

export EC2_REGION=ap-northeast-1
export AWS_CLOUDWATCH_HOME=/opt/aws/apitools/mon
export PATH=$PATH:$AWS_CLOUDWATCH_HOME/bin

export AWS_CREDENTIAL_FILE=/opt/aws/credential

#Apacheのプロセス数監視
mon-put-data --metric-name NumberOfProcesses --namespace Processes --dimensions 'Processes=httpd' --value `ps -e|grep httpd|wc -l`

#MySQLのプロセス数監視
mon-put-data --metric-name NumberOfProcesses --namespace Processes --dimensions 'Processes=mysqld' --value `ps -e|grep mysqld$|wc -l`

4. 作成したスクリプトを crontab に登録します

本例では 5 分ごとにスクリプトを実行し、CloudWatch に値を登録します。

# crontab -u root -e
*/5 * * * * /root/cloudwatch/cloudwatch.sh 1> /dev/null

5. 成功したか確認する

下記コマンドで成功したかどうか確認できます。結果が反映されるまで時間がかかることがあるようです。

# mon-get-stats MyWatch --namespace Processes --dimensions 'Processes=httpd' --statistics Average --headers

6. 稼働状況を確認する

AWS Management Console で送信されたアラートを Web 上から確認できます。

7. アラームを設定する

AWS Management Console からアラートを発生する条件を設定します。Amazon SNS(Simple Notification Service) で登録した通知先にHTTP(S)リクエストなどで通知できるようですが、メールで通知する方法が一般的かと思われます。




Amazon Linux に R をインストールする

Amazon EC2 上の Amazon Linux (2012.03 64bit) に R 2.15.0 をインストールする方法をメモ。

1. Yum レポジトリCentOS-Base を追加。

Amazon Linux 標準のレポジトリ (amzn-main, amzn-updates) には、R のインストールに必要な tk-devel xdg-utils パッケージが登録されていないため、CentOSレポジトリを追加します。

root で 以下ファイルを作成。

# vi /etc/yum.repos.d/CentOS-Base.repo

[base]
name=CentOS-6 - Base
mirrorlist=http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os
enabled=0
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

2. CentOS-Base レポジトリから、tk-devel xdg-utils パッケージをダウンロード。

root で以下コマンドを実行。

# yum install --enablerepo=base tk-devel xdg-utils

2. epel レポジトリから、R パッケージをダウンロード。

root で以下コマンドを実行。epel レポジトリからダウンロードします。

# yum --enablerepo=epel install R

CentOS 6.2 に R と RStudio Server をインストールする

RStudio Server は Linux サーバにインストールした R を Web ブラウザから Web アプリケーションとして操作でき、大変便利なのですが、インストール方法について触れたブログ記事がほとんどないので、インストールしたついでに書きました。

余談ですが、2010年5月に Tsukuba.R で RWebUI というソフトウェアを提案して開発しませんでしたが、コンセプト的には全く同じ物です。RStudio Server と同様なソフトウェアでは R-Node も有名です。

1. Yumレポジトリに EPEL を追加する。

EPEL をインストール済みの場合は、省略可能です。以下、全て root でコマンドを実行します。

# rpm -ihv http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-7.noarch.rpm

2. R をインストールする。

最近になってやっと、EPEL 経由の yum でインストールできるようになりました。

# yum install R

3. 必要なパッケージをインストールする。

互換バージョンの OpenSSL と Fortran をインストールします。

# yum install openssl098e compat-libgfortran-41

4. RStudio Server をインストールする

下記 URL から最新版の RPM をダウンロードし、インストールします。最新のバージョンは、Download RStudio Server で確認できます。

32-bit

# rpm -ihv http://download2.rstudio.org/rstudio-server-0.96.228-i686.rpm

64-bit

# rpm -ihv http://download2.rstudio.org/rstudio-server-0.96.228-x86_64.rpm

5. RStudio Server を起動する

インストールできているか確認

# rstudio-server verify-installation

RStudio Server を起動

# rstudio-server start

システム起動時に自動起動するには、chkconfig コマンドで設定します。

# chkconfig rstudio-server on
# chkconfig --list rstudio-server
rstudio-server  0:off   1:off   2:on    3:on    4:on    5:on    6:off

6. ブラウザからアクセス

Web ブラウザから、http://<サーバのIPアドレス>:8787/ にアクセスします。
つながらない場合は、setup コマンドで表示される、ファイヤウォールの設定画面で、TCP ポート 8787 をオープンにする、またはファイヤウォールを無効化します。


Amazon EC2 等の場合は、管理コンソール(AWS Management Console 等)で、TCP 8787 ポートが解放されていることを確認します。

7. ログイン

Linux のユーザ名、パスワードでログインします。
root 等、システムユーザではログインできません。


8. RStudio 起動後の画面

ホームディレクトリへのデータアップロード、ダウンロードもできます。

画面1


画面2


画面3


補足

Apache 経由で TCP 80 番ポートでアクセスするには、バーチャルホストと mod_proxy で TCP 8787 番ポートにリバースプロキシを構成すればいいですね。具体的には、httpd.conf に以下のように設定します。

<VirtualHost *:80>
    ServerName rstudio.xxx.com
    <Proxy *>
        Allow from localhost
    </Proxy>
    ProxyPass / http://localhost:8787/
    ProxyPassReverse / http://localhost:8787/
</VirtualHost>

更に、digest 認証をかける場合は、digest 認証と mod_proxy を併用する場合は、以下のように設定します。
の中に digest 認証を設定するのがポイントです。

<VirtualHost *:80>
    ServerName rstudio.xxx.com
    <Proxy *>
        Allow from localhost
        AuthType Digest
        AuthName "Private Page"
        AuthDigestDomain /
        AuthUserFile /etc/httpd/conf/.htdigest_rstudio
        Require valid-user
    </Proxy>
    ProxyPass / http://localhost:8787/
    ProxyPassReverse / http://localhost:8787/
</VirtualHost>

感想

インストールは、想像していたより簡単でした。コード補完機能なども具備されており、大変便利です。また、複数のロケーションで分析作業を行う際にも有用ですね。

R の「作業スペースを保存しますか?」のダイアログを表示させなくする方法

Windows 版 RGui を終了させようとすると、「作業スペースを保存しますか?」というダイアログが表示されます。
これを表示させないようにするには、「--no-save」オプションをつけて起動させれば良いです。

デスクトップのショートカットアイコンを右クリックし、プロパティ画面の「リンク先」の末尾に「--no-save」を付け加えるだけです。

seekR の検索対象サイトに slideshare を追加しました

slideshareFlash だから検索に引っかからないとずっと思い込んでたけど、よく見るとページ下部にテキストが載っていて、スライド内の文章も Google 検索にヒットする、ということで、slideshare を 統計分析環境 R 専門検索エンジン seekR の検索対象に加えました。

今回検索対象に追加した URL は以下です。R に関する日本語のスライドをアップしている、という条件で抽出しました。

http://www.slideshare.net/abicky/
http://www.slideshare.net/akiaki5516/
http://www.slideshare.net/AntiBayesian/
http://www.slideshare.net/bob3/
http://www.slideshare.net/dichika/
http://www.slideshare.net/gepuro/
http://www.slideshare.net/hamadakoichi/
http://www.slideshare.net/holidayworking/
http://www.slideshare.net/horihorio/
http://www.slideshare.net/isseing333/
http://www.slideshare.net/itoyan110/
http://www.slideshare.net/kohta/
http://www.slideshare.net/KojiKosugi/
http://www.slideshare.net/kos59125/
http://www.slideshare.net/langstat/
http://www.slideshare.net/m884/
http://www.slideshare.net/mangantempy/
http://www.slideshare.net/manozo/
http://www.slideshare.net/MasayukiIsobe/
http://www.slideshare.net/mickey24/
http://www.slideshare.net/mozk_/
http://www.slideshare.net/Nikoriks/
http://www.slideshare.net/oshiro40/
http://www.slideshare.net/SachikoHirata/
http://www.slideshare.net/sakaue/
http://www.slideshare.net/sesejun/
http://www.slideshare.net/sfchaos/
http://www.slideshare.net/sleipnir002/
http://www.slideshare.net/syou6162/
http://www.slideshare.net/TakashiYamane1/
http://www.slideshare.net/takemikami/
http://www.slideshare.net/teramonagi/
http://www.slideshare.net/tmr_kohei/
http://www.slideshare.net/tor_ozaki/
http://www.slideshare.net/wakuteka/
http://www.slideshare.net/wdkz/
http://www.slideshare.net/yag_ays/
http://www.slideshare.net/yatsuta/
http://www.slideshare.net/ybenjo/
http://www.slideshare.net/yokkuns/


seekR 統計分析プログラミング言語 R のための検索エンジン
もし、検索対象に入っていないスライド作成者がいましたら連絡ください。すぐ追加します。