2015年1月16日金曜日

PostfixからGmailを経由してメールを送信

http://www.flickr.com/photos/liwyatan/4646929539

特に何も設定していないPostfixから、Gmailなどにメールを送信するとスパム扱いをされてリジェクトされることがよくあります。
例えば以下の様なエラーを返してくることがあります。
Our system has detected 550-5.7.1 that this message is likely unsolicited mail. 
To reduce the amount of 550-5.7.1 spam sent to Gmail, this message has been blocked. 
Please visit 550-5.7.1 http://support.google.com/mail/bin/answer.py?hl=en&answer=188131 for 550 5.7.1 more information. 

これを回避するために、PostfixからGmailを経由してメールを送信することで、スパム扱いを避ける事ができます。
※ 大量メール送信はできないので注意

まず、メール送信用のGmailのアカウントを用意してください。
以下のアカウントを作ったとします。
メールアドレス:xxxxxx@gmail.com
パスワード:your_password

次に、サーバ側の設定をします。
必須ライブラリをインストール
# yum -y install postfix cyrus-sasl-plain cyrus-sasl-md5

postfixの設定ファイルに追記
# emacs /etc/postfix/main.cf
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_tls_CApath = /etc/ssl/certs/ca-certificates.crt
inet_protocols = ipv4

メール送信用Gmailのメールアドレスとパスワードを設定ファイルに記述
# emacs /etc/postfix/sasl_passwd
[smtp.gmail.com]:587    xxxxxx@gmail.com:your_password

ハッシュファイル作成
# postmap /etc/postfix/sasl_passwd
# file /etc/postfix/sasl_passwd.db
/etc/postfix/sasl_passwd.db: Berkeley DB (Hash, version 9, native byte-order)

Postfixをリスタート
# service postfix restart

テストメールを送信
# mail you@gmail.com

メールのログを確認
# tail -f /var/log/maillog
Jan 16 02:31:09 hostname postfix/pickup[24996]: 4E97060352: uid=0 from=
Jan 16 02:31:09 hostname postfix/cleanup[25005]: 4E97060352: message-id=<20150116023109.4E97060352@hostname.localdomain>
Jan 16 02:31:09 hostname postfix/qmgr[24997]: 4E97060352: from=, size=472, nrcpt=1 (queue active)
Jan 16 02:31:13 hostname postfix/smtp[25001]: 4E97060352: to=, relay=smtp.gmail.com[74.125.203.109]:587, delay=4, delays=0.05/0/1.7/2.2, dsn=2.0.0, status=sent (250 2.0.0 OK 1421375473 mr4sm2574221pdb.63 - gsmtp)
Jan 16 02:31:13 hostname postfix/qmgr[24997]: 4E97060352: removed

メールボックスにメールは届いたでしょうか?
Enjoy!

2015年1月6日火曜日

NagiosでMemcachedを監視する

http://www.flickr.com/photos/sukiweb/8080397051

https://github.com/willixix/WL-NagiosPlugins/blob/master/check_memcached.pl
NagiosでMemcachedを監視するプラグインです。
他のプラグインも調査しましたが、このプラグインが最も監視項目が多岐にわたっています。
基本的な監視はこのプラグイン一本で良いのではないでしょうか。


以下、監視オプションの例です。
command[check_memcached]=perl /usr/lib64/nagios/plugins/contrib/check_memcached.pl -H localhost -T ">0.01,>0.02" -U ">50,>70" -a curr_connections -w 10000 -c 20000 -f -A 'utilization,hitrate,response_time,curr_connections,evictions,cmd_set,bytes_written,curr_items,uptime,rusage_system,get_hits,total_connections,get_misses,bytes,time,connection_structures,total_items,limit_maxbytes,rusage_user,cmd_get,bytes_read,threads,rusage_user_ms,rusage_system_ms,cas_hits,conn_yields,incr_misses,decr_misses,delete_misses,incr_hits,decr_hits,delete_hits,cas_badval,cas_misses,cmd_flush,listen_disabled_num,accepting_conns,pointer_size'

それぞれ、オプションの意味は下記のようになります。
-H Memcachedのホスト
-T レスポンスタイム
-U メモリ使用率
-a curr_connections コネクション数
-f -A パフォーマンス情報を出力

Enjoy!

New RelicでMemcachedを監視する

http://www.flickr.com/photos/24293932@N00/2949281301


New RelicのMemcached監視プラグインです。
キャッシュの状態やコネクション数にとどまらず、CPU使用率など、かなり広範囲の監視をカバーしています。


以下、セットアップ方法です。


必須ライブラリをインストール。
# yum -y install java glibc.i686 libstdc++ libstdc++.so.6

New Relic Platform Installer (NPI)をインストール。
# LICENSE_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxx bash -c "$(curl -sSL https://download.newrelic.com/npi/release/install-npi-linux-redhat-x86.sh)"

You are about to download the New Relic Platform Installer v0.1.5.
This will download the 'npi' tool from the following URL: https://download.newrelic.com/npi/v0.1.5/platform_installer-linux-x86-v0.1.5.tar.gz
It will place the tool at '/root/newrelic-npi'.  It will not affect your path or global settings.

Are you sure you want to continue? (y/n) y
Setting default configurations
  user -> root
  license_key -> xxxxxxxxxxxxxxxxxxxxxxxxxxx
  distro -> redhat
Successfully setup the New Relic Platform Installer!

Next steps:
  - Navigate to the directory: '/root/newrelic-npi'
  - Run './npi available' to get a list of available plugins
  - Run './npi install ' to download, configure and start a plugin
  - For additional help run the following './npi --help'

ディレクトリ移動。
# cd /root/newrelic-npi

インストール可能なNew Relicプラグインの一覧を表示
# ./npi available
Available NPI compatible plugins on New Relic:
  ar.com.3legs.newrelic.cassandra (2.0.0)                      Java
  ar.com.3legs.newrelic.jmxremote (2.0.0)                      Java
  ar.com.3legs.newrelic.varnish (2.0.0)                        Java
  nrwikipedia_dotnet -> com.newrelic.dotnet.wikipedia (1.0.0)  .NET
  nrwikipedia_java -> com.newrelic.examples.wikipedia (1.0.8)  Java
  nrmssql -> com.newrelic.platform.microsoft.sqlserver (2.0.1) .NET
  nrmemcached -> com.newrelic.plugins.memcached (2.0.1)        Java
  nrmysql -> com.newrelic.plugins.mysql.instance (2.0.0)       Java
  com.rekko.newrelic.storm.kafka (1.0.0)                       Java
  com.sparkred.EndecaPlugin (0.1)                              Java
  com.sparkred.plugins.oracle.db (1.0.0)                       Java

Memcachedプラグインをインストール。質問には基本的に y と入力していけばOKです。
# ./npi install com.newrelic.plugins.memcached
Enter your New Relic license key (xxxxxxxxxxxxxxxxxxxxxxxxxxx): 
[13:22:30] [INFO] operations - Using license key: xxxxxxxxxxxxxxxxxxxxxxxxxxx
[13:22:30] [INFO] operations - Fetching the plugin to your file system...
You are about to download the following plugin:
- com.newrelic.plugins.memcached:
  - Details:
      download_url           https://github.com/newrelic-platform/newrelic_memcached_java_plugin/raw/master/dist/newrelic_memcached_plugin-2.0.1.tar.gz
      implementation         Java
      publisher_name         New Relic Inc.
      publisher_support_url  http://newrelic.com/support
      version                2.0.1

Are you sure you want to continue? (y/n): y
[13:22:35] [INFO] platform_helpers - Downloading compressed archive for 'com.newrelic.plugins.memcached'...
[13:22:37] [INFO] platform_helpers - Extracting archive for 'com.newrelic.plugins.memcached'...

Current state for the plugin: com.newrelic.plugins.memcached
- com.newrelic.plugins.memcached:
  - State:
      Downloaded   [x]
      Prepared     [ ]
      Installed    [ ]
      Running      [ ]

[13:22:37] [INFO] operations - Configuring the plugin to run...
[13:22:37] [INFO] operations - Generating 'newrelic.json' file for plugin...
Configure the plugin in a text editor before continuing? (y/n): y
{
  "agents": [
    {
      "name" : "[ホスト名を入力]",
      "host" : "localhost",
      "port" : 11211
    }
  ]
}

Current state for the plugin: com.newrelic.plugins.memcached
- com.newrelic.plugins.memcached:
  - State:
      Downloaded   [x]
      Prepared     [x]
      Installed    [ ]
      Running      [ ]

[13:22:52] [INFO] operations - Setting the plugin as a background process...
Do you want to set this plugin as a background process? (y/n): y
[13:22:59] [INFO] platform_helpers - Writing service script to: /etc/init.d/newrelic_plugin_com.newrelic.plugins.memcached...
[13:22:59] [INFO] platform_helpers - Changing permissions on service script to 0755...
[13:22:59] [INFO] platform_helpers - Running 'chkconfig' with arguments: ["--add","newrelic_plugin_com.newrelic.plugins.memcached"]
[13:22:59] [INFO] platform_helpers - Received '--start' flag, attempting to start the background service.
Starting newrelic_plugin_com.newrelic.plugins.memcached
Successfully added background service for 'com.newrelic.plugins.memcached'!

Next steps:
  Start plugin in the background:     npi start com.newrelic.plugins.memcached
[13:22:59] [INFO] operations - Plugin 'com.newrelic.plugins.memcached' has been successfully setup on your machine.  Run 'npi list com.newrelic.plugins.memcached' to see more information

Current state for the plugin: com.newrelic.plugins.memcached
- com.newrelic.plugins.memcached:
  - State:
      Downloaded   [x]
      Prepared     [x]
      Installed    [x]
      Running      [x]

Runningに [x] が付いていれば、Memcachedプラグインが立ち上がっています。

Memcachedプラグインのプロセスを確認。
# ps auxf | grep ewrelic_memcached_plugin | grep -v grep
root      6931  0.0  0.2  90464  2768 pts/0    S    13:26   0:00 sudo -u root java -Xmx128m -Dnewrelic.platform.config.dir=/root/newrelic-npi/plugins/com.newrelic.plugins.memcached/newrelic_memcached_plugin-2.0.1/config -jar /root/newrelic-npi/plugins/com.newrelic.plugins.memcached/newrelic_memcached_plugin-2.0.1/plugin.jar
root      6932  2.0  4.6 965852 47828 pts/0    Sl   13:26   0:01  \_ java -Xmx128m -Dnewrelic.platform.config.dir=/root/newrelic-npi/plugins/com.newrelic.plugins.memcached/newrelic_memcached_plugin-2.0.1/config -jar /root/newrelic-npi/plugins/com.newrelic.plugins.memcached/newrelic_memcached_plugin-2.0.1/plugin.jar

ログを確認します。
# tail -f /root/newrelic-npi/plugins/com.newrelic.plugins.memcached/newrelic_memcached_plugin-2.0.1/daemon.log

New Relicにログインして確認しましょう。
ダッシュボード -> PLUGINS -> Memcached

Memcachedプラグインのプロセスをストップ・スタートするには、serviceコマンドから可能です。
# service newrelic_plugin_com.newrelic.plugins.memcached stop/start

Enjoy!