2013年4月30日火曜日

"Deep Security Manager 9.0"の冗長化

スズキです。

以前、下記で"Deep Security Manager"(EC2 x2)と"RDS"(Multi-AZ)を使った冗長構成を
試したのですが、ちょっとうまく行かず(DSMの追加ができない)止まっていました。

これは、"AddressAndPortsScreen.NewNode=True"がインストール時の設定ファイル
(dsm.properties)に記載されていなかったのが原因でした...

せっかくなので、今回は下記の構築スクリプトまで作成して、再度インストール
(構築)してみました。
# cat suz-lab_dsm
#/bin/sh
set -e

FILE=Manager-Linux-9.0.4017.x64

mkdir /tmp/dsm
cd /tmp/dsm
curl -sOL http://www.trendmicro.com/ftp/products/deepsecurity/$FILE.zip
unzip $FILE.zip
chmod 755 $FILE.sh

cat << EOT > ./dsm.properties
DatabaseScreen.DatabaseType=Oracle
DatabaseScreen.Transport=TCP
AddressAndPortsScreen.NewNode=True
DatabaseScreen.Hostname=$1
DatabaseScreen.DatabaseName=$2
DatabaseScreen.Username=$3
DatabaseScreen.Password=$4
CredentialsScreen.Administrator.Username=$5
CredentialsScreen.Administrator.Password=$6
EOT

./$FILE.sh -q -console -varfile ./dsm.properties
service dsm_s stop
service dsm_s start
chkconfig dsm_s on

cd /tmp
rm -rf dsm

exit 0

実行は下記の通りです。
# ./suz-lab_dsm dsm.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com dsm suzuki suzuki123 TestUser TestPass#123
※ 第一引数: RDSのエンドポイント
※ 第二引数: RDSのデータベース名
※ 第三引数: RDSのユーザー名
※ 第四引数: RDSのパスワード
※ 第五引数: DSMのユーザー名
※ 第六引数: DSMのパスワード

無事構築が完了すると、下記のように冗長構成になっていることが確認できます。


RDSをフェールオーバーさせても、問題なく動作してるっぽい...
--------
http://www.suz-lab.com

2013年4月26日金曜日

"AWS Marketplace"のVyattaを起動してみた

スズキです。

"AWS Marketplace"で「Vyatta」を検索すると下記が見つかります。

このVyattaは、
$0.30 to $1.20/hr for software + AWS usage fees
なのでコストには注意が必要です。正確には下記の通りです。


AMIは下記のように用意されています。

起動はAWSコンソールから直感的にでき、いつも通りの手順となります。

起動したら下記のようにSSHでログインできます。
# ssh -i aws.pem -l vyatta ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com
※鍵は指定する必要があります。
※パスワードも"vyatta"です。

ということで、いろいろいじってみます。
--------
http://www.suz-lab.com

2013年4月25日木曜日

RubyでBacklogの課題の放置対策

スズキです。

よくBacklogを用いてプロジェクト(課題)管理を行うのですが、使ってみると下記のような
課題が、放置気味になりがちです。
  • 担当(assigner)がアサインされていない
  • 期限(due_date)が設定されていない
ということで上記のような課題をRubyで(BacklogのAPIを使って)出力してみました。
※BacklogのAPIの利用は下記でも紹介しています
実際のスクリプトはこんな感じになりました。
$ cat pm.rb
#!/usr/bin/ruby
require "xmlrpc/client"

space       = ARGV[0]
user        = ARGV[1]
password    = ARGV[2]

proxy = XMLRPC::Client.new_from_hash({
    "host"     => space + ".backlog.jp",
    "path"     => "/XML-RPC",
    "port"     => 443,
    "use_ssl"  => true,
    "user"     => user,
    "password" => password
})

proxy.call("backlog.getProjects").each do |project|
    if !["XXX", "YYY", "ZZZ"].include?(project["key"])
        proxy.call("backlog.findIssue", {
            "projectId" => project["id"],
            "statusId"  => [1, 2]
        }).each do |issue|
            if issue["assigner"].nil? then
                puts("NA: " + issue["url"])
            elsif issue["due_date"] == "" then
                puts("NE: " + issue["url"])
            elsif (issue["due_date"].to_i - 2) <= Time.now.strftime("%Y%m%d").to_i then
                puts("ED: " + issue["url"])
            end
        end
    end
end
※「完了」「処理済み」の課題は対象外です。
※スペース上のすべてのプロジェクトの課題を対象にしています。
※現在の日付が期限二日前を切ってる課題も出力しています。

実際に実行すると下記のような感じになります。
$ ./pm.rb space user pass
warning: peer certificate won't be verified in this SSL session
NA: https://space.backlog.jp/view/XXX-1
NE: https://space.backlog.jp/view/XXX-9
NE: https://space.backlog.jp/view/YYY-8
NE: https://space.backlog.jp/view/YYY-7
NE: https://space.backlog.jp/view/ZZZ-4
...

さらに上記で出力した課題数をNagiosで監視してアラート通知すれば...
--------
http://www.suz-lab.com

2013年4月24日水曜日

Squidの認証にLDAP(OpenLDAP)を利用

スズキです。

以前、下記のようにSquidを使って、プロキシー経由でAWSのマネジメントコンソールに
アクセスする方法を紹介しました。
Squid経由でAWSマネジメントコンソールにアクセスしてソースIP制限したり
認証したりログを取ったり
そして上記は認証プロキシー(Basic認証)にしており、パスワードファイル(htpasswd)にて
認証を行っていたのですが、下記のようにOpenLDAPに関しても、いろいろと
やっているので、
"phpLDAPadmin"でユーザーを作ったユーザーでCentOSにログイン
今回はOpenLDAPをつかった認証を試してみました。

といってもOpenLDAPサーバが起動して、しかるべきユーザーも作成してあれば、
下記のような設定で実現できます。
# cat /etc/squid/squid.conf
auth_param basic program /usr/lib64/squid/squid_ldap_auth \
    -b "ou=user,dc=suz-lab,dc=com" \
    -f "(&(uid=%s)(objectClass=posixAccount))" \
    -h localhost
auth_param basic children 20
auth_param basic realm SUZ-LAB Proxy Server
auth_param basic credentialsttl 1 hours

acl port_https port       443
acl auth_basic proxy_auth REQUIRED

http_access allow all auth_basic port_https
http_access deny  all
cache       deny  all

http_port 3128
coredump_dir /var/spool/squid
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %h" "%{User-Agent}>h" %Ss:%Sh
access_log /opt/suz-lab/var/log/apache/squid.log combined

ようは"/usr/lib64/squid/squid_ldap_auth"の話です...
--------
http://www.suz-lab.com

2013年4月22日月曜日

Python版AWSコマンドラインツールと"jq"でインスタンスタイプ毎のインスタンス数を集計してみた

スズキです。

いろいろ試行錯誤しましたが、下記が一番いいんじゃないか?と思っています。
# aws ec2 describe-instances \
> | jq \
> '[ .Reservations[] | .Instances[] | { InstanceType } ] | group_by(.InstanceType) | .[] | .[0] + { "Count": length }'
{
  "Count": 55,
  "InstanceType": "c1.xlarge"
}
{
  "Count": 11,
  "InstanceType": "m1.large"
}
{
  "Count": 1,
  "InstanceType": "m1.medium"
}
{
  "Count": 1,
  "InstanceType": "m1.small"
}
{
  "Count": 8,
  "InstanceType": "m1.xlarge"
}
{
  "Count": 1,
  "InstanceType": "t1.micro"
}

ちなみに"jq"は"group_by"以外にも、いろいろな集計ができるようです。
jq Manual

ぶっちゃけ、SDK使ってRubyとかで作った方が楽だったかも...
--------
http://www.suz-lab.com

2013年4月19日金曜日

"DHCP Options Set"で指定したNTPサーバの設定スクリプトを作ってみた

スズキです。

以前、下記のような記事を書き、DHCPで設定ファイルのNTPサーバが書き変わらない
VPCの"DHCP Options Set"でNTPサーバを指定する
方法も紹介しましたが、今回は、その"NTP Server"を設定するスクリプトを作成し、
CloudInit(CloudFormation)を利用して起動時に自動的に"NTP Server"として
構築できるようにしてみました。


実際のスクリプト(suz-lab_ntp)は下記の通りです。
# cat suz-lab_ntp
#/bin/sh
set -e

cat << EOT > /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=on
PEERNTP=no
EOT

service network restart

cat << EOT > /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
EOT

service ntpd restart

exit 0

さらに"User Data"を使ってCloudInitにて起動時に実行して設定することも可能です。

#!/bin/sh
/opt/suz-lab/share/cloud-init/component/suz-lab_ntp 2>&1 | logger -s -t suz-lab_ntp

当然、CloudFormationのテンプレートに組み込むことも可能です。

CloudFormation関係の記事が書きにくい...
--------
http://www.suz-lab.com

2013年4月16日火曜日

NagiosでSQSの(メッセージ数の)監視

スズキです。

よくSQSのメッセージ数の監視をNagiosでやるのですが、そのときのネタです。

当然、キュー内のメッセージ数(ApproximateNumberOfMessagesVisible)を
監視するのですが、メッセージ数が閾値を超えてなくても、
処理数(NumberOfMessagesReceived )が、ある一定の期間0だったら、
アプリケーションの方で障害があって処理できてないと見なし、アラート通知するようにも
してみました。

実際のNagiosプラグインは下記となります。
# cat check_sqs #!/bin/sh
. `dirname $0`/utils.sh

set -e
trap 'echo "UNKNOWN: $?"; exit $STATE_UNKNOWN' ERR

WARN=0
CRIT=0
REVERSE=false

while getopts c:w:q:p: OPTNAME; do
    case $OPTNAME in
    w)
        WARN=$OPTARG
        ;;
    c)
        CRIT=$OPTARG
        ;;
    q)
        QUEUE=$OPTARG
        ;;
    p)
        PERIOD=$OPTARG
        ;;
    *)
        echo "UNKNOWN: Usage"
        exit $STATE_UNKNOWN
        ;;
    esac
done

START_TIME=`date -u -d '10 minutes ago' +%Y-%m-%dT%TZ`
END_TIME=`date -u +%Y-%m-%dT%TZ`
DIMENSIONS={\"name\":\"QueueName\",\"value\":\"$QUEUE\"}

METRIC_DATA=`aws cloudwatch get-metric-statistics \
--namespace   AWS/SQS \
--metric-name ApproximateNumberOfMessagesVisible \
--dimensions  $DIMENSIONS \
--statistics  Average \
--period      60 \
--start-time  $START_TIME \
--end-time    $END_TIME \
| jq '.Datapoints[0] | .Average' \
| cut -d\" -f2`

CRIT_STATUS=`echo "$METRIC_DATA > $CRIT" | bc`
WARN_STATUS=`echo "$METRIC_DATA > $WARN" | bc`
OK_STATUS=`echo "$METRIC_DATA == 0" | bc`

if   [ $CRIT_STATUS -eq 1 ]; then
    echo "CRITICAL ApproximateNumberOfMessagesVisible: $METRIC_DATA"
    exit $STATE_CRITICAL
elif [ $WARN_STATUS -eq 1 ]; then
    echo "WARNING ApproximateNumberOfMessagesVisible: $METRIC_DATA"
    exit $STATE_WARNING
elif [ $OK_STATUS -eq 1 ]; then
    echo "OK ApproximateNumberOfMessagesVisible: $METRIC_DATA"
    exit $STATE_OK
fi

METRIC_DATA=`aws cloudwatch get-metric-statistics \
--namespace   AWS/SQS \
--metric-name NumberOfMessagesReceived \
--dimensions  $DIMENSIONS \
--statistics  Average \
--period      $PERIOD \
--start-time  $START_TIME \
--end-time    $END_TIME \
| jq '.Datapoints[0] | .Average' \
| cut -d\" -f2`

RECEIVE_STATUS=`echo "$METRIC_DATA == 0" | bc`

if   [ $RECEIVE_STATUS -eq 1 ]; then
    echo "CRITICAL NumberOfMessagesReceived: $METRIC_DATA"
    exit $STATE_CRITICAL
elif [ $RECEIVE_STATUS -eq 0 ]; then
    echo "OK ApproximateNumberOfMessagesVisible: $METRIC_DATA"
    exit $STATE_OK
fi

echo "UNKNOWN: End"; exit $STATE_UNKNOWN
※同一ディレクトリに"utils.sh"(/usr/lib64/nagios/plugins/utils.sh)が必要です
※下記のようにbcをインストールしておく必要があります。
# yum -y install bc

実行は下記の通りです。
# ./check_sqs -c 3 -w 3 -q suz-lab-queue -p 600
OK ApproximateNumberOfMessagesVisible: 0.0
"-q"でキュー名を指定して、"-p"で処理数をチェックする期間を指定しています。

NagiosプラグインもどこかでまとめてGitHubに置きたい...
--------
http://www.suz-lab.com

2013年4月12日金曜日

Backlogの未完了課題数をNagiosで監視

スズキです。

下記のようにNagiosのアラート通知をBacklogの課題として登録することが
できるようになったので、
最後に、Backlogに溜まってる未完了の課題を、またNagiosでチェックする
Nagiosプラグインを作成してみました。
(このアラート通知はBacklogの課題として登録しないように)

まず、未完了課題の数を取得するRubyのスクリプトです。
# cat /tmp/count-issue-uncompleted
#!/usr/bin/ruby
require "xmlrpc/client"

space       = ARGV[0]
project     = ARGV[1]
user        = ARGV[2]
password    = ARGV[3]

proxy = XMLRPC::Client.new_from_hash({
    "host"     => space + ".backlog.jp",
    "path"     => "/XML-RPC",
    "port"     => 443,
    "use_ssl"  => true,
    "user"     => user,
    "password" => password
})

result = proxy.call("backlog.countIssue", {
    "projectId" => project,
    "statusId"  => [1, 2, 3]
})

p result
仕様は下記を参照。
backlog.countIssue
次に、未完了課題の数をチェックするNagiosプラグインです。
# cat check_issue_count
#!/bin/sh

. `dirname $0`/utils.sh

set -e
trap 'echo "UNKNOWN: $?"; exit $STATE_UNKNOWN' ERR

WARN=0
CRIT=0

while getopts c:w:s:i:u:p: OPTNAME; do
    case $OPTNAME in
    w)
        WARN=$OPTARG
        ;;
    c)
        CRIT=$OPTARG
        ;;
    s)
        SPACE=$OPTARG
        ;;
    i)
        ID=$OPTARG
        ;;
    u)
        USER=$OPTARG
        ;;
    p)
        PASS=$OPTARG
        ;;
    *)
        echo "UNKNOWN: Usage"
        exit $STATE_UNKNOWN
        ;;
    esac
done

COUNT=`/tmp/count-issue-uncompleted $SPACE $ID $USER $PASS`

if   [ $COUNT -gt $CRIT ]; then
    echo "CRITICAL Issue Count $COUNT"
    exit $STATE_CRITICAL
elif [ $COUNT -gt $WARN ]; then
    echo "WARNING Issue Count $COUNT"
    exit $STATE_WARNING
elif [ $COUNT -eq 0 ]; then
    echo "OK Issue Count $COUNT"
    exit $STATE_OK
fi

echo "UNKNOWN: End"; exit $STATE_UNKNOWN
※"utils.sh(/usr/lib64/nagios/plugins/utils.sh)"が存在するディレクトリに配置して
実行する必要があります。

最後に、実行して確認してみます。
# cd /usr/lib64/nagios/plugins
# ./check_issue_count -c 0 -w 0 -s space -i 0000000000 -u user -p pass
CRITICAL Issue Count 45

これで課題の放置もなくなるはず...
--------
http://www.suz-lab.com

2013年4月11日木曜日

Nagiosのアラート通知をBacklogの課題として登録

スズキです。

下記でBacklogに課題を追加するスクリプトを作成したので、

RubyでBacklogのAPIを利用して課題を追加してみる
今回はNagiosのアラート通知で上記のスクリプトを利用して、Backlogに通知情報を
課題として登録してみました。

Nagiosの設定ファイルは下記のようにしています。
# cat /etc/nagios/objects/commands.cfg
...
# 'notify-host-by-backlog' command definition
define command {
  command_name  notify-host-by-backlog
  command_line  /tmp/create-issue "space" "0000000000" "user" "password" "$HOSTSTATE$: $HOSTNAME$" "$LONGDATETIME$, $HOSTSTATE$, $HOSTNAME$, $HOSTOUTPUT$" >>/tmp/create-issue.log 2>&1
}
# 'notify-host-by-backlog' command definition
define command {
  command_name  notify-service-by-backlog
  command_line  /tmp/create-issue "space" "0000000000" "user" "password" "$SERVICESTATE$: $HOSTNAME$/$SERVICEDESC$" "$LONGDATETIME$, $SERVICESTATE$, $HOSTNAME$/$SERVICEDESC$, $SERVICEOUTPUT$" >>/tmp/create-issue.log 2>&1
}
...
# cat /etc/nagios/objects/contacts.cfg
...
define contact {
  contact_name                   nagiosadmin
  use                            generic-contact
  alias                          Nagios Admin
  service_notification_commands  notify-service-by-backlog
  host_notification_commands     notify-host-by-backlog
  email                          suzuki@suz-lab.com
}
...

実際に通知すると下記のようにBacklogの課題として登録されました。


最後にBacklogの課題が一定数以上残ってたら、Nagiosでアラート通知するところを
作って終了の予定...
--------
http://www.suz-lab.com

2013年4月10日水曜日

RubyでBacklogのAPIを利用して課題を追加してみる

スズキです。

Nagiosの監視とBacklogを連動したくなって、まずはAPIから試してみました。
Backlog API

Rubyの処理系は次の通りです。
# yum -y install ruby
...
# ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]

で、課題の追加は下記のようなスクリプトで可能となります。
# cat create-issue
#!/usr/bin/ruby
require "xmlrpc/client"

space       = ARGV[0]
project     = ARGV[1]
user        = ARGV[2]
password    = ARGV[3]
summary     = ARGV[4]
description = ARGV[5]

proxy = XMLRPC::Client.new_from_hash({
    "host"     => space + ".backlog.jp",
    "path"     => "/XML-RPC",
    "port"     => 443,
    "use_ssl"  => true,
    "user"     => user,
    "password" => password
})

proxy.call("backlog.createIssue", {
    "projectId"   => project,
    "summary"     => summary,
    "description" => description
})

実行は次の通りです。(引数の意味合いはソースを参照)
# ./create-issue space 0000000000 user password "test summary" "test description"
...

すると実際に、下記のようにBacklogに課題が追加されます。



次は、これをNagiosのアラートと連動...
--------
http://www.suz-lab.com

2013年4月9日火曜日

"dstat(fluent-plugin-dstat)"の情報をCloudWatchに登録してみた(その2)

スズキです。

以前、下記のような記事を書きましたが、そのアップデートです。
"dstat(fluent-plugin-dstat)"の情報をCloudWatchに登録してみた
要は上記の方法で、より下記の形に近づけたって感じになります。
Amazon CloudWatch Monitoring Scripts for Linux
まずは"dstat"からですが、下記が参考になります。
Dstatでディスク使用量を確認する
今回利用するオプションは下記とします。
# dstat --load --swap --mem --freespace
---load-avg--- ----swap--- ------memory-usage----- -----/-----
 1m   5m  15m | used  free| used  buff  cach  free| used  free
   0    0    0|   0  1024M| 119M  120M  306M 45.1M|3053M 2994M
...
これで、ロードアベレージとスワップ使用量とメモリ使用量とディスク使用量を
チェックすることが可能になります。

次に"fluent-plugin-dstat"ですが、設定ファイルに下記のように上記のオプションを
指定します。
# cat /etc/td-agent/td-agent.conf
<source>
    type   dstat
    tag    dstat
    option --load --swap --mem --freespace
    delay  300
</source>
<match dstat>
    type copy
    <store>
        type file
        path /tmp/dstat
    </store>
</match>
("delay"オプションで)5分(300秒)毎に出力されるようにしており、ログは下記の通りです。
# cat /tmp/dstat.20130402.b4d94e2fc68c46642
2013-04-02T00:22:19+09:00       dstat   {"hostname":"ip-10-0-0-76","dstat":{"load avg":{"1m":"0.030","5m":"0.010","15m":"0.0"},"swap":{"used":"0.0","free":"1073733632.0"},"memory usage":{"used":"126222336.0","buff":"125665280.0","cach":"324575232.0","free":"42729472.0"},"/":{"used":"3202244608.0","free":"3139084288.0"}}}
2013-04-02T00:23:19+09:00       dstat   {"hostname":"ip-10-0-0-76","dstat":{"load avg":{"1m":"0.010","5m":"0.0","15m":"0.0"},"swap":{"used":"0.0","free":"1073733632.0"},"memory usage":{"used":"126791680.0","buff":"125677568.0","cach":"324628480.0","free":"42094592.0"},"/":{"used":"3202232320.0","free":"3139096576.0"}}}
...

さらにCloudWatchへのPutです。下記のプラグイン(自作自演...)を利用しています。
FluentdのCloudWatchプラグイン(fluent-plugin-cloudwatch_ya)を
"RubyGems.org"に公開してみた
実際の設定ファイルは下記の通りです。
<source>
    type   dstat
    tag    dstat
    option --load --swap --mem --freespace
    delay  300
</source>
<match dstat>
    type copy
    <store>
        type file
        path /tmp/dstat
    </store>
    <store>
        type                 cloudwatch_ya
        buffer_type          file
        buffer_path          /opt/suz-lab/var/lib/td-agent/buf/cloudwatch.dstat
        flush_interval       5m
        cloud_watch_endpoint monitoring.ap-northeast-1.amazonaws.com
        namespace            SUZ-LAB/CentOS
        <metric>
            metric_name LoadAvg5m
            value_key                   $['dstat']['load avg']['5m']
            unit                        None
            outcast_no_dimension_metric yes
            <dimensions>
                instance_id yes
            </dimensions>
        </metric>
        <metric>
            metric_name SwapUsed
            value_key                   $['dstat']['swap']['used']
            unit                        Bytes
            outcast_no_dimension_metric yes
            <dimensions>
                instance_id yes
            </dimensions>
        </metric>
        <metric>
            metric_name MemoryFree
            value_key                   $['dstat']['memory usage']['free']
            unit                        Bytes
            outcast_no_dimension_metric yes
            <dimensions>
                instance_id yes
            </dimensions>
        </metric>
        <metric>
            metric_name DiskRootFree
            value_key                   $['dstat']['/']['free']
            unit                        Bytes
            outcast_no_dimension_metric yes
            <dimensions>
                instance_id yes
            </dimensions>
        </metric>
    </store>
</match>
こちらも5分毎(flush_interval 5m)にCloudWatchにPutするようにしています。

実際にAWSマネジメントコンソールで確認すると、下記のようにカスタムメトリックスが
登録されているのが確認できます。






さらに下記のNagiosプラグインで監視することも可能です。
NagiosのCloudWatchプラグイン(Python版AWSコマンドラインツール版)

ブログのペースが...
--------
http://www.suz-lab.com

2013年4月1日月曜日

Dstatでディスク使用量を確認する

スズキです。

下記のDstatのヘルプで確認できる項目を調べると、ディスク使用量に関する
オプションが見当たらず、できないのかなーと、あきらめかけたのですが...
# dstat -h
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics

Dstat options:
  -c, --cpu              enable cpu stats
     -C 0,3,total           include cpu0, cpu3 and total
  -d, --disk             enable disk stats
     -D total,hda           include hda and total
  -g, --page             enable page stats
  -i, --int              enable interrupt stats
     -I 5,eth2              include int5 and interrupt used by eth2
  -l, --load             enable load stats
  -m, --mem              enable memory stats
  -n, --net              enable network stats
     -N eth1,total          include eth1 and total
  -p, --proc             enable process stats
  -r, --io               enable io stats (I/O requests completed)
  -s, --swap             enable swap stats
     -S swap1,total         include swap1 and total
  -t, --time             enable time/date output
  -T, --epoch            enable time counter (seconds since epoch)
  -y, --sys              enable system stats

  --aio                  enable aio stats
  --fs, --filesystem     enable fs stats
  --ipc                  enable ipc stats
  --lock                 enable lock stats
  --raw                  enable raw stats
  --socket               enable socket stats
  --tcp                  enable tcp stats
  --udp                  enable udp stats
  --unix                 enable unix stats
  --vm                   enable vm stats

  --plugin-name          enable plugins by plugin name (see manual)
  --list                 list all available plugins

  -a, --all              equals -cdngy (default)
  -f, --full             automatically expand -C, -D, -I, -N and -S lists
  -v, --vmstat           equals -pmgdsc -D total

  --bw, --blackonwhite   change colors for white background terminal
  --float                force float values on screen
  --integer              force integer values on screen
  --nocolor              disable colors (implies --noupdate)
  --noheaders            disable repetitive headers
  --noupdate             disable intermediate updates
  --output file          write CSV output to file

delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)
実は"--plugin-name"というオプションで可能でした!

この"--plugin-name"というオプションは、そのまま利用するのではなく、
プラグインの名前を指定します。(ちょっと文章で説明するのが難しいですが...)

プラグインは、下記のように確認することができます。
# cd /usr/share/dstat
# ls *.py
dstat.py                 dstat_mysql5_io.py    dstat_top_bio.py
dstat_battery.py         dstat_mysql5_keys.py  dstat_top_cpu.py
dstat_battery_remain.py  dstat_mysql_io.py     dstat_top_cputime.py
dstat_cpufreq.py         dstat_mysql_keys.py   dstat_top_cputime_avg.py
dstat_dbus.py            dstat_net_packets.py  dstat_top_io.py
dstat_disk_util.py       dstat_nfs3.py         dstat_top_latency.py
dstat_fan.py             dstat_nfs3_ops.py     dstat_top_latency_avg.py
dstat_freespace.py       dstat_nfsd3.py        dstat_top_mem.py
dstat_gpfs.py            dstat_nfsd3_ops.py    dstat_top_oom.py
dstat_gpfs_ops.py        dstat_ntp.py          dstat_utmp.py
dstat_helloworld.py      dstat_postfix.py      dstat_vm_memctl.py
dstat_innodb_buffer.py   dstat_power.py        dstat_vmk_hba.py
dstat_innodb_io.py       dstat_proc_count.py   dstat_vmk_int.py
dstat_innodb_ops.py      dstat_rpc.py          dstat_vmk_nic.py
dstat_lustre.py          dstat_rpcd.py         dstat_vz_cpu.py
dstat_memcache_hits.py   dstat_sendmail.py     dstat_vz_io.py
dstat_mysql5_cmds.py     dstat_snooze.py       dstat_vz_ubc.py
dstat_mysql5_conn.py     dstat_thermal.py      dstat_wifi.py
上記の中に"dstat_freespace.py"というプラグインがあり、これを利用することで、
ディスク使用量を確認することができます。

実際に、このプラグインは下記のように使います。
# dstat --freespace
-----/-----
 used  free
3053M 2995M
...
つまり上述した"--plugin-name"は"--プラグイン名"のことで、プラグイン名は、
"dstat_プラグイン名.py"といったルールになります。
※プラグイン名のアンダースコア(_)はオプション指定時はハイフン(-)になります。

ということで、Fluentdへ...
--------
http://www.suz-lab.com