このセクションでは、テレメトリサービス( Ceilometer )をコントローラノードにインストールする前に、メータリングデータを送信するターゲットとして推奨されるエンドポイント である Gnocchi のインストールについて、紹介します。作業は、コントローラノードで実施します。

データベース環境の設定

ここでは、Gnocchi のデータベース環境を設定します。

データベースクライアントを使用して、データベースサーバーに root ユーザーとして接続します。

[root@controller ~]# mysql -u root -p 
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 278
Server version: 10.1.20-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

データベース gnocchi を作成します。

MariaDB [(none)]> create database gnocchi;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> 

データベースに適切なアクセス権を付与します。ここでは gnocchi データベースに接続するパスワードは GNOCCHI_DB_PASS としているので、実際の情報に置き換えてください。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'localhost' \
  IDENTIFIED BY 'GNOCCHI_DB_PASS';
Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> 
MariaDB [(none)]> GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'%' \
  IDENTIFIED BY 'GNOCCHI_DB_PASS';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> 

MariaDB [(none)]> quit
Bye
[root@controller ~]# 

クレデンシャル、エンティティ、エンドポイントの作成

admin クレデンシャルを読み込み、管理者専用 CLI コマンドへのアクセス権を取得します。

[root@controller ~]# . openrc/admin-openrc 
[root@controller ~]# 

gnocchiユーザーを作成します。ここでは gnocchi ユーザーのパスワードは GNOCCHI_PASS としているので、実際の情報に置き換えてください。

[root@controller ~]# openstack user create --domain default --password-prompt gnocchi
User Password: GNOCCHI_PASS
Repeat User Password: GNOCCHI_PASS
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | e8c3d4d3c06d47e1b1b28fea4bc30dbb |
| name                | gnocchi                          |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller ~]# 

gnocchi サービスエンティティを作成します。

[root@controller ~]# openstack service create --name gnocchi \
  --description "Metric Service" metric
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Metric Service                   |
| enabled     | True                             |
| id          | ae3d7a03c20c4e91a7f8b169bb8de6e0 |
| name        | gnocchi                          |
| type        | metric                           |
+-------------+----------------------------------+
[root@controller ~]# 

admin の ロールを gnocchi ユーザーと service プロジェクトに追加します。

[root@controller ~]# openstack role add --project service --user gnocchi admin
[root@controller ~]# 

Metric サービスの API エンドポイントを作成します。

[root@controller ~]# openstack endpoint create --region RegionOne \
  metric public http://controller:8041
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | d5f216b64557428caed5febba275e7e4 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | ae3d7a03c20c4e91a7f8b169bb8de6e0 |
| service_name | gnocchi                          |
| service_type | metric                           |
| url          | http://controller:8041           |
+--------------+----------------------------------+
[root@controller ~]# 
[root@controller ~]# openstack endpoint create --region RegionOne \
  metric internal http://controller:8041
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 8616504ee18445e4929e72679c89b175 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | ae3d7a03c20c4e91a7f8b169bb8de6e0 |
| service_name | gnocchi                          |
| service_type | metric                           |
| url          | http://controller:8041           |
+--------------+----------------------------------+
[root@controller ~]#
[root@controller ~]# openstack endpoint create --region RegionOne \
  metric admin http://controller:8041
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | ebea1eaf559f4dcda1dcf7a3fc3b9933 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | ae3d7a03c20c4e91a7f8b169bb8de6e0 |
| service_name | gnocchi                          |
| service_type | metric                           |
| url          | http://controller:8041           |
+--------------+----------------------------------+
[root@controller ~]# 

コンポーネントのインストールと設定

Gnocchi のパッケージをインストールします。

[root@controller ~]# yum --enablerepo=centos-openstack-rocky -y install openstack-gnocchi-api \
  openstack-gnocchi-metricd python2-gnocchiclient
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.fairway.ne.jp
 * epel: ftp.iij.ad.jp
 * extras: mirror.fairway.ne.jp
 * updates: mirror.fairway.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ gnocchi-api.noarch 0:4.3.0-1.el7 を インストール
--> 依存性の処理をしています: gnocchi-common = 4.3.0-1.el7 のパッケージ: gnocchi-api-4.3.0-1.el7.noarch
---> パッケージ gnocchi-metricd.noarch 0:4.3.0-1.el7 を インストール
---> パッケージ python2-gnocchiclient.noarch 0:7.0.4-1.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ gnocchi-common.noarch 0:4.3.0-1.el7 を インストール
--> 依存性の処理をしています: python-gnocchi = 4.3.0-1.el7 のパッケージ: gnocchi-common-4.3.0-1.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-gnocchi.noarch 0:4.3.0-1.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==============================================================================================================================================================
 Package                                    アーキテクチャー            バージョン                          リポジトリー                                 容量
==============================================================================================================================================================
インストール中:
 gnocchi-api                                noarch                      4.3.0-1.el7                         centos-openstack-rocky                      4.5 k
 gnocchi-metricd                            noarch                      4.3.0-1.el7                         centos-openstack-rocky                      4.3 k
 python2-gnocchiclient                      noarch                      7.0.4-1.el7                         centos-openstack-rocky                       71 k
依存性関連でのインストールをします:
 gnocchi-common                             noarch                      4.3.0-1.el7                         centos-openstack-rocky                       10 k
 python-gnocchi                             noarch                      4.3.0-1.el7                         centos-openstack-rocky                      282 k

トランザクションの要約
==============================================================================================================================================================
インストール  3 パッケージ (+2 個の依存関係のパッケージ)

総ダウンロード容量: 372 k
インストール容量: 1.4 M
Downloading packages:
(1/5): gnocchi-common-4.3.0-1.el7.noarch.rpm                                                                                           |  10 kB  00:00:02     
(2/5): gnocchi-api-4.3.0-1.el7.noarch.rpm                                                                                              | 4.5 kB  00:00:02     
(3/5): gnocchi-metricd-4.3.0-1.el7.noarch.rpm                                                                                          | 4.3 kB  00:00:00     
(4/5): python2-gnocchiclient-7.0.4-1.el7.noarch.rpm                                                                                    |  71 kB  00:00:00     
(5/5): python-gnocchi-4.3.0-1.el7.noarch.rpm                                                                                           | 282 kB  00:00:01     
--------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                          101 kB/s | 372 kB  00:00:03     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python-gnocchi-4.3.0-1.el7.noarch                                                                                             1/5 
  インストール中          : gnocchi-common-4.3.0-1.el7.noarch                                                                                             2/5 
  インストール中          : gnocchi-api-4.3.0-1.el7.noarch                                                                                                3/5 
  インストール中          : gnocchi-metricd-4.3.0-1.el7.noarch                                                                                            4/5 
  インストール中          : python2-gnocchiclient-7.0.4-1.el7.noarch                                                                                      5/5 
  検証中                  : gnocchi-api-4.3.0-1.el7.noarch                                                                                                1/5 
  検証中                  : gnocchi-common-4.3.0-1.el7.noarch                                                                                             2/5 
  検証中                  : python-gnocchi-4.3.0-1.el7.noarch                                                                                             3/5 
  検証中                  : gnocchi-metricd-4.3.0-1.el7.noarch                                                                                            4/5 
  検証中                  : python2-gnocchiclient-7.0.4-1.el7.noarch                                                                                      5/5 

インストール:
  gnocchi-api.noarch 0:4.3.0-1.el7               gnocchi-metricd.noarch 0:4.3.0-1.el7               python2-gnocchiclient.noarch 0:7.0.4-1.el7              

依存性関連をインストールしました:
  gnocchi-common.noarch 0:4.3.0-1.el7                                           python-gnocchi.noarch 0:4.3.0-1.el7                                          

完了しました!
[root@controller ~]# 

gnocchi 設定ファイル( /etc/gnocchi/gnocchi.conf )を編集し、以下設定します。

[root@controller ~]# vi /etc/gnocchi/gnocchi.conf

[ DEFAULT ] セクションで、gnocchi のログを出力先を指定します。

[DEFAULT]
...
log_dir = /var/log/gnocchi

[ api ] セクションで、キーストーンを使用するようにgnocchiを設定します。

[api]
auth_mode = keystone

[ keystone_authtoken ] セクションで、キーストーン認証を設定します。ここでは、gnocchi ユーザーのパスワードは GNOCCHI_PASS としているので、実際の情報に置き換えてください。

[keystone_authtoken]
...
auth_type = password
auth_url = http://controller:5000
project_domain_name = Default
user_domain_name = Default
project_name = service
username = gnocchi
password = GNOCCHI_PASS
interface = internalURL
region_name = RegionOne

[ indexer ] セクションで、データベースアクセスを設定します。ここでは、gnocchi データベースへの接続パスワードは GNOCCHI_DB_PASS としているので、実際の情報に置き換えてください。

[indexer]
url = mysql+pymysql://gnocchi:GNOCCHI_DB_PASS@controller/gnocchi

[ storage ]セクションで、メトリックデータを保存する場所を設定します。 この場合、ローカルファイルシステムに保存します。 もっと丈夫でパフォーマンスの良いドライバーのリストについては、Gnocchiのドキュメントを参照してください。

[storage]
...
file_basepath = /var/lib/gnocchi
driver = file

Gnocchi を初期化します。

[root@controller ~]# gnocchi-upgrade
2018-12-01 03:25:21,293 [9912] INFO     gnocchi.service: Gnocchi version 4.3.0
2018-12-01 03:25:21,556 [9912] INFO     gnocchi.cli.manage: Upgrading indexer SQLAlchemyIndexer: mysql+pymysql://gnocchi:Gnoch0527@controller/gnocchi
2018-12-01 03:25:21,778 [9912] INFO     gnocchi.cli.manage: Upgrading storage FileStorage: /var/lib/gnocchi
2018-12-01 03:25:21,780 [9912] INFO     gnocchi.cli.manage: Upgrading incoming storage FileStorage: /var/lib/gnocchi
[root@controller ~]# 

インストールの最後

Gnocchi サービスの自動起動を有効化します。

■ 自動起動の有効化
[root@controller ~]# systemctl enable openstack-gnocchi-api.service \
  openstack-gnocchi-metricd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/gnocchi-api.service to /usr/lib/systemd/system/gnocchi-api.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/gnocchi-metricd.service to /usr/lib/systemd/system/gnocchi-metricd.service.
[root@controller ~]# 

■ 自動起動の状態確認
[root@controller ~]# systemctl is-enabled openstack-gnocchi-api.service   openstack-gnocchi-metricd.service
enabled
enabled
[root@controller ~]# 

Gnocchi サービスを起動します。

■ 起動
[root@controller ~]# systemctl start openstack-gnocchi-api.service \
  openstack-gnocchi-metricd.service
[root@controller ~]#

■ 起動状態の確認
[root@controller ~]# systemctl status openstack-gnocchi-api.service openstack-gnocchi-metricd.service
● gnocchi-api.service - Gnocchi API service
   Loaded: loaded (/usr/lib/systemd/system/gnocchi-api.service; enabled; vendor preset: disabled)
   Active: active (running) since 土 2018-12-01 18:51:01 JST; 1min 47s ago
 Main PID: 1066 (uwsgi)
   CGroup: /system.slice/gnocchi-api.service
           ├─1066 /usr/bin/uwsgi --if-not-plugin python --plugin python --endif --http 0.0.0.0:8041 --master --enable-threads --thunder-lock --hook-master-...
           ├─2070 /usr/bin/uwsgi --if-not-plugin python --plugin python --endif --http 0.0.0.0:8041 --master --enable-threads --thunder-lock --hook-master-...
           ├─2071 /usr/bin/uwsgi --if-not-plugin python --plugin python --endif --http 0.0.0.0:8041 --master --enable-threads --thunder-lock --hook-master-...
           ├─2072 /usr/bin/uwsgi --if-not-plugin python --plugin python --endif --http 0.0.0.0:8041 --master --enable-threads --thunder-lock --hook-master-...
           └─2073 /usr/bin/uwsgi --if-not-plugin python --plugin python --endif --http 0.0.0.0:8041 --master --enable-threads --thunder-lock --hook-master-...

12月 01 18:51:10 controller gnocchi-api[1066]: *** uWSGI is running in multiple interpreter mode ***
12月 01 18:51:10 controller gnocchi-api[1066]: spawned uWSGI master process (pid: 1066)
12月 01 18:51:10 controller gnocchi-api[1066]: spawned uWSGI worker 1 (pid: 2070, cores: 2)
12月 01 18:51:10 controller gnocchi-api[1066]: spawned uWSGI worker 2 (pid: 2071, cores: 2)
12月 01 18:51:10 controller gnocchi-api[1066]: spawned uWSGI worker 3 (pid: 2072, cores: 2)
12月 01 18:51:10 controller gnocchi-api[1066]: spawned uWSGI http 1 (pid: 2073)
12月 01 18:51:10 controller gnocchi-api[1066]: running "unix_signal:15 gracefully_kill_them_all" (master-start)...
12月 01 18:51:19 controller gnocchi-api[1066]: WSGI app 0 (mountpoint='') ready in 9 seconds on interpreter 0x965970 pid: 2072 (default app)
12月 01 18:51:19 controller gnocchi-api[1066]: WSGI app 0 (mountpoint='') ready in 9 seconds on interpreter 0x965970 pid: 2070 (default app)
12月 01 18:51:19 controller gnocchi-api[1066]: WSGI app 0 (mountpoint='') ready in 9 seconds on interpreter 0x965970 pid: 2071 (default app)

● gnocchi-metricd.service - Gnocchi metricd service
   Loaded: loaded (/usr/lib/systemd/system/gnocchi-metricd.service; enabled; vendor preset: disabled)
   Active: active (running) since 土 2018-12-01 18:51:01 JST; 1min 47s ago
 Main PID: 1078 (gnocchi-metricd)
   CGroup: /system.slice/gnocchi-metricd.service
           ├─1078 gnocchi-metricd: master process [/usr/bin/gnocchi-metricd --log-file /var/log/gnocchi/metricd.log]
           ├─2051 gnocchi-metricd: processing worker(0)
           ├─2052 gnocchi-metricd: processing worker(1)
           ├─2053 gnocchi-metricd: reporting worker(0)
           └─2054 gnocchi-metricd: janitor worker(0)

12月 01 18:51:01 controller systemd[1]: Started Gnocchi metricd service.
12月 01 18:51:01 controller systemd[1]: Starting Gnocchi metricd service...
[root@controller ~]# 

補足

gnocchi-api.service が起動しない場合には、こちら を確認してください。

gnocchi-api.service 起動時に、gnocchi の API ログ( /var/log/gnocchi/api.log )に、” WARNING gnocchi.cli.api: No need to pass `–‘ in gnocchi-api … ” といった警告がでる場合には、こちら を確認してください。