導入対象EC2 が Amazon Linux の記事はよく見かけますが、他のディストリビューションでの情報があまりなかったため比較を行いました。
- 新しい collectd の CloudWatch プラグイン | Amazon Web Services ブログ
- awslabs/collectd-cloudwatch: A collectd plugin for sending data to Amazon CloudWatch
- ディストリビューションと導入しやすさ
— Amazon Linux
— CentOS
—– CentOS 7
—– CentOS 6
— Ubuntu
—– Ubuntu16
—– Ubuntu14 - デフォルト設定での導入結果
— その他
ディストリビューションと導入しやすさ
yum/apt での導入を前提としています。新しめのディストリビューションであれば特に苦労しません。
distribution | Version | python(Default) | collectd | 導入しやすさ |
---|---|---|---|---|
Amazon Linux | 2017.09 | 2.7.12 | 5.7.1 | ◯ |
CentOS | 7.4.1708 | 2.7.5 | 5.7.1 | ◯ |
CentOS | 6.9 | 2.6.6 | 4.10.9 | × |
Ubuntu | 16.04.3 LTS | 3.5.2 | 5.5.1 | ◯ |
Ubuntu | 14.04.5 LTS | 2.7.6 | 5.4.0 | △ |
Amazon Linux
提供元がAWSだけあって Amazon Linux は何も考えずに導入できます。
$ sudo yum install collectd collectd-python $ curl -s -S -O "https://raw.githubusercontent.com/awslabs/collectd-cloudwatch/master/src/setup.py" $ chmod u+x setup.py $ sudo ./setup.py
CentOS
collectd は epel を利用しインストールします。
CentOS 7
README に記載がある collectd-python はパッケージが存在しなかったため未インストールです。
$ sudo yum install epel-release $ sudo yum install collectd $ curl -s -S -O "https://raw.githubusercontent.com/awslabs/collectd-cloudwatch/master/src/setup.py" $ chmod u+x setup.py $ sudo ./setup.py
CentOS 6
collectd 5.0.0 未満では collectd-cloudwatch は使用できません。
collectd は epel を利用してインストールしますが、4.10.9です。 また、 collectd-cloudwatch のインストールでエラーになります。
まず、python 2.6 では setup.py が動作しません。
$ python -V Python 2.6.6 $ sudo ./setup.py Traceback (most recent call last): File "./setup.py", line 28, in <module> from subprocess import check_output, CalledProcessError, Popen, PIPE ImportError: cannot import name check_output
python 2.7 にしても setup.py は別のエラーとなります。
$ python -V Python 2.7.14 $ sudo ./setup.py Traceback (most recent call last): File "./setup.py", line 964, in <module> main() File "./setup.py", line 957, in main install_plugin() File "./setup.py", line 869, in install_plugin install_packages(SYSTEM_DEPENDENCIES) File "./setup.py", line 261, in install_packages command = DISTRIBUTION_TO_INSTALLER[detect_linux_distribution()] + " ".join(packages) File "./setup.py", line 270, in detect_linux_distribution return DISTRO_NAME_REGEX.search(search_string).group(1).strip() AttributeError: 'NoneType' object has no attribute 'group'
ディストリビューションの判断を /etc/os-release
で行っているので、無理矢理通してみるとようやく未サポートのメッセージ表示となりました。
$ sudo ./setup.py Installing dependencies ... OK Installing python dependencies ... OK Downloading plugin ... OK Extracting plugin ... OK Moving to collectd plugins directory ... OK The minimum supported version of collectd is 5.0.0, and your version is 4.10.9. You need to upgrade collectd before proceeding with the plugin installation.
Ubuntu
collectd の設定ファイル格納場所が Redhat系(Amazon Linux含む) とは異なります。
- Amazon Linux / CentOS
- /etc/collectd.conf
- Ubuntu
- /etc/collectd/collectd.conf
Ubuntu16
python 2.7 を使えるようにしておく必要があります。
$ python -V Python 2.7.14 $ sudo apt-get install collectd $ curl -s -S -O "https://raw.githubusercontent.com/awslabs/collectd-cloudwatch/master/src/setup.py" $ chmod u+x setup.py $ sudo ./setup.py
Ubuntu14
インストール自体は他と同様です。
$ sudo apt-get install collectd $ curl -s -S -O "https://raw.githubusercontent.com/awslabs/collectd-cloudwatch/master/src/setup.py" $ chmod u+x setup.py $ sudo ./setup.py
他ディストリビューションと異なり、collectd が5.4のため、インストール時にデフォルトで設定されているメトリクスが使用できません。
公式ブログにもありますが、disk 以外の cpu/memory/swap は、 5.5 からパーセンテージが利用できるようになっています。
バージョン 5.5 以降の collectd を使用している場合は、4 つのメトリックスがデフォルトで発行されるようなりました。
デフォルト設定での導入結果
その他
CloudWatch の Endpoint(monitoring.{{region}}.amazonaws.com) へ送信しているため、Outbound制限を掛けている場合は 443 ポートの許可が必要です。