目的
タイトルの通り、IBM Cloud の PaaS にある Monitoring サービスを使って、IaaS の仮想サーバーを監視します。
2018年7月現在、Windows はサポートされていないので、Linux で試します。
「collectd」というオープンソースのエージェントを導入して、データを送って、「Grafana」というダッシュボードサービスからグラフを確認します。
IBM Cloud Monitoring を注文する
まずは Catalog - IBM Cloud から Monitoring サービスを注文します。
今回のケースでは、有料の Premium Plan を使う必要があり、それを注文します。
以下のような価格体系になっているので、比較的使いやすいのかなと思います。
- $2.00 USD/Million data points ingested per month
- $0.10 USD/Single metric alerting rules per month
参考:Lite と Premium Plan の違い
参考:Lite Plan で進めると
ちなみに無料の Lite Plan でやろうとすると、以下のエラーが出て怒られました。
[ERROR] IBMCM plugin: client.go:424: Failed acknowledge due to error in metrics. Ignoring compressed pack. Sequence: 0. BXNMSMG02E: Metrics can only be accepted on a paid plan
IBM Cloud 仮想サーバーに設定する
こちらを参考に進めます。
Firewall の設定
以下のエンドポイントに対して、監視データを送信できるようにしておきましょう。
| Region | URL | collectd port |
|:-----------------|:------------------|:------------------|
| Germany | https://metrics.eu-de.bluemix.net | 9095 |
| Sydney | https://metrics.au-syd.bluemix.net | 9095 |
| United Kingdom | https://metrics.eu-gb.bluemix.net | 9095 |
| US South | https://metrics.ng.bluemix.net | 9095 |
設定の確認
こちらの OS を使います。
cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
NTP の設定を確認して、「NTP synchronized: no」と設定されていなければ、時刻同期の設定をおこないます。
timedatectl status
Local time: Thu 2018-07-12 03:27:53 CDT
Universal time: Thu 2018-07-12 08:27:53 UTC
RTC time: Thu 2018-07-12 08:27:53
Time zone: America/Chicago (CDT, -0500)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2018-03-11 01:59:59 CST
Sun 2018-03-11 03:00:00 CDT
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2018-11-04 01:59:59 CDT
Sun 2018-11-04 01:00:00 CST
時刻同期の設定
必要なモジュールのインストール・最新化をおこないます。
yum update -y
yum install chrony -y
yum install ntpdate -y
systemctl stop chronyd
CentOS7 からは ntp ではなく chrony を使用するのが推奨のようなので、その設定をします。
head /etc/chrony.conf -n 3
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server time.service.softlayer.com iburst
事前に手動で時刻同期をおこなっておきます。
ntpdate -u time.service.softlayer.com
12 Jul 03:34:21 ntpdate[13446]: adjust time server 10.0.77.54 offset 0.137563 sec
サービスを開始します。
systemctl start chronyd
systemctl enable chronyd
時刻同期が有効になったのを確認します。
timedatectl status
Local time: Thu 2018-07-12 03:47:44 CDT
Universal time: Thu 2018-07-12 08:47:44 UTC
RTC time: Thu 2018-07-12 08:47:44
Time zone: America/Chicago (CDT, -0500)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2018-03-11 01:59:59 CST
Sun 2018-03-11 03:00:00 CDT
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2018-11-04 01:59:59 CDT
Sun 2018-11-04 01:00:00 CST
Monitoring サービスへの接続情報取得
IBM Cloud CLI を使って事前に接続情報を取得します。
新規インストールは Installing the stand-alone IBM Cloud CLI からどうぞ。
ibmcloud --version
ibmcloud version 0.7.1+8a6d40e-2018-06-07T07:13:39+00:00
Monitoring サービス用の API Key を発行して、変数として定義します。
bx iam api-key-create ibmcloud-monitoring-key -d "ibmcloud-monitoring-key"
export APIKEY="kjshdgf...ldkdjdj"
Monitoring サービスのエンドポイントを、変数として定義します。
export METRIC_ENDPOINT="metrics.au-syd.bluemix.net"
スペース ID を取得して、変数として定義します。
bx iam space Sydney --guid
32247b60-827f-4e8a-b4e9-8918d77073ad
export SpaceID="32247b60-827f-4e8a-b4e9-8918d77073ad"
Monitoring エージェント (collectd) の導入
必要なモジュールのインストールをおこないます。
yum install epel-release -y
yum install collectd -y
wget -O - https://downloads.opvis.bluemix.net/client/IBM_Logmet_repo_install.sh | bash
yum install ibmcloud-monitoring -y
Monitoring サービス用の設定作成コマンドを CentOS7 で実行するとエラーになります。
/opt/ibmcloud_monitoring/configure -e $METRIC_ENDPOINT -a $APIKEY -s s-$SpaceID
Collectd configuration file '/etc/collectd/collectd.conf' does not exist
原因は、collectd の設定ファイル格納場所が以下で異なるからです。
- CentOS --- /etc/collectd.conf
- Ubuntu --- /etc/collectd/collectd.conf
気を取り直して、「-d /etc」のオプションをつけて再度実行します。
/opt/ibmcloud_monitoring/configure -e $METRIC_ENDPOINT -a $APIKEY -s s-$SpaceID -d /etc
Successfully configured IBM Cloud Monitoring Plugin for collectd at /etc/ibmcloud-monitoring.conf
Monitoring サービス用の設定が追加されたことを確認します。
tail /etc/collectd.conf -n 1
Include "/etc/ibmcloud-monitoring.conf"
今回は CPU 使用率をみるために、一部設定を変更します。
vi /etc/collectd.conf
#CPU時間情報を取得
LoadPlugin cpu
#CPU使用率として取得
<Plugin cpu>
ReportByCpu true
ReportByState true
ValuesPercentage true
</Plugin>
サービスを再起動します。
systemctl restart collectd
以下のようなサービスログがみえていれば問題ありません。
systemctl status collectd -l
● collectd.service - Collectd statistics daemon
Loaded: loaded (/usr/lib/systemd/system/collectd.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2018-07-12 04:52:16 CDT; 29s ago
Docs: man:collectd(1)
man:collectd.conf(5)
Main PID: 25561 (collectd)
CGroup: /system.slice/collectd.service
└─25561 /usr/sbin/collectd
Jul 12 04:52:16 khayama-collectd.ibmcloud.com collectd[25561]: [INFO] IBMCM plugin:Fetching Configuration for IBMCloudMonitoring plugin
Jul 12 04:52:16 khayama-collectd.ibmcloud.com collectd[25561]: plugin_load: plugin "IBMCloudMonitoring" successfully loaded.
Jul 12 04:52:16 khayama-collectd.ibmcloud.com systemd[1]: Started Collectd statistics daemon.
Jul 12 04:52:16 khayama-collectd.ibmcloud.com collectd[25561]: Systemd detected, trying to signal readyness.
Jul 12 04:52:16 khayama-collectd.ibmcloud.com collectd[25561]: [INFO] IBMCM plugin:Successfully validated configuration.
Jul 12 04:52:16 khayama-collectd.ibmcloud.com collectd[25561]: Initialization complete, entering read-loop.
Jul 12 04:52:16 khayama-collectd.ibmcloud.com collectd[25561]: configfile: Cannot get unknown global option `Flushinterval'.
Jul 12 04:52:16 khayama-collectd.ibmcloud.com collectd[25561]: [INFO] IBMCM plugin:Found Flushinterval = 64424509440
Jul 12 04:52:16 khayama-collectd.ibmcloud.com collectd[25561]: [INFO] IBMCM plugin:==========Configuration======
Name: au-syd
Server: metrics.au-syd.bluemix.net:9095
Scope ID: s-32247b60-827f-4e8a-b4e9-8918d77073ad
Prefix: .
Postfix: .
Apikey: *******
Version: 3
Buffer Size: 1000
Interval: 60sec
SkipInternalPrefixForStatsd: false
RateCounter: false
MaxConnections: 10
Escapechar: _
SeparateInstances: false
Debug: false
Trace Metrics: false
Jul 12 04:52:16 khayama-collectd.ibmcloud.com collectd[25561]: [INFO] IBMCM plugin:Successfully registered writer - IBMCloudMonitoring
systemctl status collectd -l
● collectd.service - Collectd statistics daemon
Loaded: loaded (/usr/lib/systemd/system/collectd.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2018-07-12 04:52:16 CDT; 2min 42s ago
Docs: man:collectd(1)
man:collectd.conf(5)
Main PID: 25561 (collectd)
CGroup: /system.slice/collectd.service
└─25561 /usr/sbin/collectd
Jul 12 04:52:16 khayama-collectd.ibmcloud.com collectd[25561]: [INFO] IBMCM plugin:==========Configuration======
Name: au-syd
Server: metrics.au-syd.bluemix.net:9095
Scope ID: s-32247b60-827f-4e8a-b4e9-8918d77073ad
Prefix: .
Postfix: .
Apikey: *******
Version: 3
Buffer Size: 1000
Interval: 60sec
SkipInternalPrefixForStatsd: false
RateCounter: false
MaxConnections: 10
Escapechar: _
SeparateInstances: false
Debug: false
Trace Metrics: false
Jul 12 04:52:16 khayama-collectd.ibmcloud.com collectd[25561]: [INFO] IBMCM plugin:Successfully registered writer - IBMCloudMonitoring
Jul 12 04:53:16 khayama-collectd.ibmcloud.com collectd[25561]: [WARN] IBMCM plugin:client.go:334: Sending 181 metrics in Buffer.
Jul 12 04:53:16 khayama-collectd.ibmcloud.com collectd[25561]: [NOTICE] IBMCM plugin:client.go:490: Connecting to metrics.au-syd.bluemix.net:9095
Jul 12 04:53:16 khayama-collectd.ibmcloud.com collectd[25561]: [NOTICE] IBMCM plugin:client.go:573: Successfully established a connection with metrics.au-syd.bluemix.net
Jul 12 04:53:16 khayama-collectd.ibmcloud.com collectd[25561]: [NOTICE] IBMCM plugin:client.go:435: Successfully wrote 181 metrics to the socket.
Jul 12 04:54:16 khayama-collectd.ibmcloud.com collectd[25561]: [WARN] IBMCM plugin:client.go:334: Sending 162 metrics in Buffer.
Jul 12 04:54:16 khayama-collectd.ibmcloud.com collectd[25561]: [NOTICE] IBMCM plugin:client.go:490: Connecting to metrics.au-syd.bluemix.net:9095
Jul 12 04:54:16 khayama-collectd.ibmcloud.com collectd[25561]: [NOTICE] IBMCM plugin:client.go:573: Successfully established a connection with metrics.au-syd.bluemix.net
Jul 12 04:54:16 khayama-collectd.ibmcloud.com collectd[25561]: [NOTICE] IBMCM plugin:client.go:435: Successfully wrote 162 metrics to the socket.
Grafana ダッシュボードの確認
取得したデータをダッシュボードから確認します。
IBM Cloud Monitoring : https://metrics.au-syd.bluemix.net/app/#/grafana4
新規にダッシュボードを作成します。
グラフ作成を選択します。
グラフタイトルから「edit」を選び、メトリクスから CPU 使用率を表示できます。
細かくみると、1分ごとにデータが送られていることがわかります。
さいごに
IBM Cloud Monitoring は、仮想サーバーと同時に、コンテナや PaaS アプリの監視を一元的にできるところが特徴です。
システムの監視サービスに何を使うかを迷う方もいると思いますが、今回のように PaaS で提供されている安定したサービス基盤に対して、API Key ベースの連携でデータを一元的に監視できる、というのは1つの選択肢になるのではと思います。