仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

JUJU + MAAS を使用したOpenstack構築 + 監視設定

JUJU + MAASによるOpenstackの構築と、 Gnocchi Grafanaを使用したリソース監視の作成に挑戦しました。

今回の筆者は コムシス情報システム株式会社 山本 聡(やまもと さとる)です。 以前のエントリーでKubernetesの構築について書かせていただきました。 http://tech.virtualtech.jp/entry/2018/03/29/104216

実行環境

構成はk8s構築で使用した物理サーバを流用します。 また、Openstack外部接続用のネットワークを追加しました。

f:id:virtualtech:20180424130921p:plain

MAASのインストール

MAAS、Ubuntuのインストールを実施します。

以下の設定でUbuntu Serverをインストール

  • インストールモード:Install Ubuntu Server(通常のインストール)

  • Language:日本語

  • Timezone:日本

  • Keyboard:Japanese

  • ソフトウェアの選択:OpenSSH Server

ネットワーク設定からMAAS+JUJUのインストール

JUJUのインストールまで以前のエントリーと同様です。 http://tech.virtualtech.jp/entry/2018/03/29/104216

MAASで認識された各サーバにタグを付与

Openstackのデプロイ用にMAAS上の各ノードにタグを付与します。

  • node01

 コントローラーノードとして設定

  • node02

 コンピュート及びcephノードとして設定

  • node03

 コンピュート及びcephノードとして設定

Openstackデプロイ

Openstackデプロイ用yamlファイルの作成

Openstack自動構築用のyamlファイルを用意します。 "tags="で記述される箇所がMAASのタグと一致するよう注意してください。

$ vim openstack-telemetry.yaml
machines:
  '0':
    series: xenial
    constraints: "arch=amd64 tags=node01"
  '1':
    series: xenial
    constraints: "arch=amd64 tags=node02"
  '2':
    series: xenial
    constraints: "arch=amd64 tags=node03"
relations:
- - nova-compute:amqp
  - rabbitmq-server:amqp
- - neutron-gateway:amqp
  - rabbitmq-server:amqp
- - keystone:shared-db
  - mysql:shared-db
- - nova-cloud-controller:identity-service
  - keystone:identity-service
- - glance:identity-service
  - keystone:identity-service
- - neutron-api:identity-service
  - keystone:identity-service
- - neutron-openvswitch:neutron-plugin-api
  - neutron-api:neutron-plugin-api
- - neutron-api:shared-db
  - mysql:shared-db
- - neutron-api:amqp
  - rabbitmq-server:amqp
- - neutron-gateway:neutron-plugin-api
  - neutron-api:neutron-plugin-api
- - glance:shared-db
  - mysql:shared-db
- - glance:amqp
  - rabbitmq-server:amqp
- - nova-cloud-controller:image-service
  - glance:image-service
- - nova-compute:image-service
  - glance:image-service
- - nova-cloud-controller:cloud-compute
  - nova-compute:cloud-compute
- - nova-cloud-controller:amqp
  - rabbitmq-server:amqp
- - nova-cloud-controller:quantum-network-service
  - neutron-gateway:quantum-network-service
- - nova-compute:neutron-plugin
  - neutron-openvswitch:neutron-plugin
- - neutron-openvswitch:amqp
  - rabbitmq-server:amqp
- - openstack-dashboard:identity-service
  - keystone:identity-service
- - nova-cloud-controller:shared-db
  - mysql:shared-db
- - nova-cloud-controller:neutron-api
  - neutron-api:neutron-api
- - cinder:image-service
  - glance:image-service
- - cinder:amqp
  - rabbitmq-server:amqp
- - cinder:identity-service
  - keystone:identity-service
- - cinder:cinder-volume-service
  - nova-cloud-controller:cinder-volume-service
- - cinder-ceph:storage-backend
  - cinder:storage-backend
- - ceph-mon:client
  - nova-compute:ceph
- - nova-compute:ceph-access
  - cinder-ceph:ceph-access
- - cinder:shared-db
  - mysql:shared-db
- - ceph-mon:client
  - cinder-ceph:ceph
- - ceph-mon:client
  - glance:ceph
- - ceph-osd:mon
  - ceph-mon:osd
- - ntp:juju-info
  - nova-compute:juju-info
- - ntp:juju-info
  - neutron-gateway:juju-info
- - ceph-radosgw:mon
  - ceph-mon:radosgw
- - ceph-radosgw:identity-service
  - keystone:identity-service
- - ceilometer:amqp
  - rabbitmq-server:amqp
- - ceilometer-agent:ceilometer-service
  - ceilometer:ceilometer-service
- - ceilometer:identity-notifications
  - keystone:identity-notifications
- - ceilometer-agent:nova-ceilometer
  - nova-compute:nova-ceilometer
- - aodh:shared-db
  - mysql:shared-db
- - aodh:identity-service
  - keystone:identity-service
- - aodh:amqp
  - rabbitmq-server:amqp
- - gnocchi:storage-ceph
  - ceph-mon:client
- - gnocchi:shared-db
  - mysql:shared-db
- - gnocchi:amqp
  - rabbitmq-server:amqp
- - gnocchi:coordinator-memcached
  - memcached:cache
- - gnocchi:metric-service
  - ceilometer:metric-service
- - gnocchi:identity-service
  - keystone:identity-service
- - ceilometer:identity-credentials
  - keystone:identity-credentials

series: xenial
services:
  aodh:
    annotations:
      gui-x: '1500'
      gui-y: '0'
    charm: cs:aodh-12
    num_units: 1
    options:
      openstack-origin: cloud:xenial-queens
    to:
    - lxd:0
  ceilometer:
    annotations:
      gui-x: '1250'
      gui-y: '0'
    charm: cs:ceilometer-252
    num_units: 1
    options:
      openstack-origin: cloud:xenial-queens
    to:
    - lxd:2
  ceilometer-agent:
    annotations:
      gui-x: '1250'
      gui-y: '500'
    charm: cs:ceilometer-agent-243
    num_units: 0
  ceph-mon:
    annotations:
      gui-x: '750'
      gui-y: '500'
    charm: cs:ceph-mon-23
    num_units: 2
    options:
      expected-osd-count: 2
      monitor-count: 2
      source: cloud:xenial-queens
    to:
    - lxd:1
    - lxd:2
  ceph-osd:
    annotations:
      gui-x: '1000'
      gui-y: '500'
    charm: cs:ceph-osd-257
    num_units: 2
    options:
      osd-devices: /dev/sdb
      osd-reformat: 'yes'
      source: cloud:xenial-queens
    to:
    - '1'
    - '2'
  ceph-radosgw:
    annotations:
      gui-x: '1000'
      gui-y: '250'
    charm: cs:ceph-radosgw-256
    num_units: 1
    options:
      source: cloud:xenial-queens
    to:
    - lxd:1
  cinder:
    annotations:
      gui-x: '750'
      gui-y: '0'
    charm: cs:cinder-268
    num_units: 1
    options:
      block-device: None
      glance-api-version: 2
      openstack-origin: cloud:xenial-queens
      worker-multiplier: 0.25
    to:
    - lxd:2
  cinder-ceph:
    annotations:
      gui-x: '750'
      gui-y: '250'
    charm: cs:cinder-ceph-231
    num_units: 0
  glance:
    annotations:
      gui-x: '250'
      gui-y: '0'
    charm: cs:glance-263
    num_units: 1
    options:
      openstack-origin: cloud:xenial-queens
      worker-multiplier: 0.25
    to:
    - lxd:2
  gnocchi:
    annotations:
      gui-x: '1500'
      gui-y: '250'
    charm: cs:gnocchi-7
    num_units: 1
    options:
      openstack-origin: cloud:xenial-queens
    to:
    - lxd:0
  keystone:
    annotations:
      gui-x: '500'
      gui-y: '0'
    charm: cs:keystone-275
    num_units: 1
    options:
      admin-password: openstack
      openstack-origin: cloud:xenial-queens
      worker-multiplier: 0.25
    to:
    - lxd:1
  memcached:
    annotations:
      gui-x: '1500'
      gui-y: '500'
    charm: cs:memcached-18
    num_units: 1
    to:
    - lxd:2
  mysql:
    annotations:
      gui-x: '0'
      gui-y: '250'
    charm: cs:percona-cluster-259
    num_units: 1
    options:
      innodb-buffer-pool-size: 256M
      max-connections: 1000
    to:
    - lxd:2
  neutron-api:
    annotations:
      gui-x: '500'
      gui-y: '500'
    charm: cs:neutron-api-258
    num_units: 1
    options:
      flat-network-providers: physnet1
      neutron-security-groups: true
      openstack-origin: cloud:xenial-queens
      worker-multiplier: 0.25
    to:
    - lxd:2
  neutron-gateway:
    annotations:
      gui-x: '0'
      gui-y: '0'
    charm: cs:neutron-gateway-247
    num_units: 1
    options:
      bridge-mappings: physnet1:br-ex
      data-port: br-ex:eno2
      openstack-origin: cloud:xenial-queens
      worker-multiplier: 0.25
    to:
    - '0'
  neutron-openvswitch:
    annotations:
      gui-x: '250'
      gui-y: '500'
    charm: cs:neutron-openvswitch-249
    num_units: 0
  nova-cloud-controller:
    annotations:
      gui-x: '0'
      gui-y: '500'
    charm: cs:nova-cloud-controller-306
    num_units: 1
    options:
      network-manager: Neutron
      openstack-origin: cloud:xenial-queens
      worker-multiplier: 0.25
    to:
    - lxd:0
  nova-compute:
    annotations:
      gui-x: '250'
      gui-y: '250'
    charm: cs:nova-compute-282
    num_units: 2
    options:
      config-flags: default_ephemeral_format=ext4
      enable-live-migration: true
      enable-resize: true
      migration-auth-type: ssh
      openstack-origin: cloud:xenial-queens
    to:
    - '1'
    - '2'
  ntp:
    annotations:
      gui-x: '1000'
      gui-y: '0'
    charm: cs:ntp-24
    num_units: 0
  openstack-dashboard:
    annotations:
      gui-x: '500'
      gui-y: '-250'
    charm: cs:openstack-dashboard-257
    num_units: 1
    options:
      openstack-origin: cloud:xenial-queens
    to:
    - lxd:0
  rabbitmq-server:
    annotations:
      gui-x: '500'
      gui-y: '250'
    charm: cs:rabbitmq-server-72
    num_units: 1
    to:
    - lxd:0
  grafana:
    charm: "cs:xenial/grafana-9"
    num_units: 1
    options:
      install_method: apt
      admin_password: password5656
    annotations:
      gui-x: '132.75'
      gui-y: '1066'
    to:
      - lxd:1

設定値のポイント解説

  • osd-devices: /dev/sdb

ceph-osdが設定されるサーバはディスクが2つ設定されている必要があります。

  • bridge-mappings: physnet1:br-ex
  • data-port: br-ex:eno2

サーバが認識するネットワークポートと一致させる必要があります。

  • config-flags: default_ephemeral_format=ext4

今回はext4で構成しますが、異なるファイルシステムも使用することが出来ます。

juju deploy を実行

$ juju deploy openstack-telemetry.yaml

openstackclientをインストール

Openstackを操作するためのクライアントをインストールします。

$ sudo apt install python-openstackclient

novarc_autoファイルの作成

Openstackクライアントの動作に必要なrcファイルを作成します

$ vim novarc_auto
_OS_PARAMS=$(env | awk 'BEGIN {FS="="} /^OS_/ {print $1;}' | paste -sd ' ')
for param in $_OS_PARAMS; do
    unset $param
done
unset _OS_PARAMS

keystone_unit=$(juju status keystone|grep -i workload -A1|tail -n1|awk '{print $1}'|tr -d '*')
echo Keystone unit: ${keystone_unit}
if ! curl -qs `juju run --unit ${keystone_unit} "unit-get private-address"`:5000/v3 | grep 404 ;
then
echo Using keystone v3 api
export OS_AUTH_URL=${OS_AUTH_PROTOCOL:-http}://`juju run --unit ${keystone_unit} "unit-get private-address"`:5000/v3
export OS_USERNAME=admin
export OS_PASSWORD=openstack
export OS_DOMAIN_NAME=admin_domain
export OS_USER_DOMAIN_NAME=admin_domain
export OS_PROJECT_DOMAIN_NAME=admin_domain
export OS_PROJECT_NAME=admin
export OS_REGION_NAME=RegionOne
export OS_IDENTITY_API_VERSION=3
# Swift needs this:
export OS_AUTH_VERSION=3
else
echo Using keystone v2 api
export OS_USERNAME=admin
export OS_PASSWORD=openstack
export OS_TENANT_NAME=admin
export OS_REGION_NAME=RegionOne
export OS_AUTH_URL=${OS_AUTH_PROTOCOL:-http}://`juju run --unit ${keystone_unit} "unit-get private-address"`:5000/v2.0

rcファイルの読み込み

$ source novarc_auto

監視確認

Openstack状態の確認

デプロイがすべて完了したことをjuju statusコマンドで確認後、 実際にOpenstackが操作できるかをコマンドで打ってみましょう。

$ openstack service list

+----------------------------------+-----------+--------------+
| ID                               | Name      | Type         |
+----------------------------------+-----------+--------------+
| 0a6aac12ae71496494a3b0748e17021b | aodh      | alarming     |
| 2447939369d74795a0ee65bda1bfe3a1 | swift     | object-store |
| 4a1d931905fd43c3bf3403eb25a96bd4 | placement | placement    |
| 4a40e8739f9046d7978422e5331c8383 | gnocchi   | metric       |
| 5586181aad80426392ee40c41ab9b19a | keystone  | identity     |
| 56608d839340422a8b02af265de70ce9 | neutron   | network      |
| 5e1abf112ca44857a347ba0bd471720e | nova      | compute      |
| 671b147f8d06417fa1b9ff14475d0f40 | glance    | image        |
| 9820e33afcf3467da93a7138632ea917 | cinderv3  | volumev3     |
| bfb458d163314bdeaefd1e867de2ead9 | cinderv2  | volumev2     |
+----------------------------------+-----------+--------------+

上記のような応答があれば成功です。

Ceilometerを有効化

今回の構成のようにCeilometerとGnocchiを連携する場合、 以下のコマンドで有効化する必要があります。

$ juju run-action ceilometer/0 ceilometer-upgrade

Dashboardにアクセス

Dashboardにアクセスします。 juju statusコマンドでopenstack-dashboardのIPアドレスを確認し、 http://xx.xx.xx.xx/horizon のURLでブラウザからアクセスしてください。 yamlファイルに認証の変更を加えていなければ、以下の情報でログインできます。

  • ドメイン:admin_domain
  • ユーザ名:admin
  • パスワード:openstack

インスタンスの作成

監視データの蓄積をするため、監視対象となるインスタンスの作成を行います。 jujuで構築したOpenstackは初期状態においてインスタンス作成に必要な下記項目が設定されていないので、 Dashboardから設定を行ってください。

  • イメージの登録
  • ルーターの作成
  • 内部ネットワークの作成
  • 内部ネットワークサブネットの作成
  • フレーバーの作成

CirrOS等の軽量イメージを使用してインスタンスを稼働しましょう。

メトリックデータの取得

実際に監視データが取得できているかを確認します。 まずはリソースの一覧から表示してみましょう。

$ openstack metric resource list

+--------------------------------------+----------------------------+----------------------------------+----------------------------------+-----------------------------------------------------------------------+----------------------------------+----------+----------------------------------+--------------+-------------------------------------------------------------------+
| id                                   | type                       | project_id                       | user_id                          | original_resource_id                                                  | started_at                       | ended_at | revision_start                   | revision_end | creator                                                           |
+--------------------------------------+----------------------------+----------------------------------+----------------------------------+-----------------------------------------------------------------------+----------------------------------+----------+----------------------------------+--------------+-------------------------------------------------------------------+
| 579ef430-4278-51ca-ad28-4edd6897fee6 | instance_network_interface | d948eedc6f1047bfaf9539e6526dd919 | 8981ef1a6dcb4683b97b82925fd87a9f | instance-00000001-bd7f158f-369c-41dc-81b1-84487a583c6e-tap91c4a8f8-9d | 2018-04-24T01:12:48.853092+00:00 | None     | 2018-04-24T01:12:48.853151+00:00 | None         | 1cf01d45402749e286c098b89caf5eaf:5f5d5bfecb944273a00697e59eafc436 |
| b39ba0c5-860f-598a-b0f4-82ab5afb5c50 | instance_disk              | d948eedc6f1047bfaf9539e6526dd919 | 8981ef1a6dcb4683b97b82925fd87a9f | bd7f158f-369c-41dc-81b1-84487a583c6e-vdb                              | 2018-04-24T01:12:48.941122+00:00 | None     | 2018-04-24T01:12:48.941142+00:00 | None         | 1cf01d45402749e286c098b89caf5eaf:5f5d5bfecb944273a00697e59eafc436 |
| 3f830f79-7cf9-5060-affd-5e4d43196ffc | instance_disk              | d948eedc6f1047bfaf9539e6526dd919 | 8981ef1a6dcb4683b97b82925fd87a9f | bd7f158f-369c-41dc-81b1-84487a583c6e-vda                              | 2018-04-24T01:12:49.119669+00:00 | None     | 2018-04-24T01:12:49.119688+00:00 | None         | 1cf01d45402749e286c098b89caf5eaf:5f5d5bfecb944273a00697e59eafc436 |
| bd7f158f-369c-41dc-81b1-84487a583c6e | instance                   | d948eedc6f1047bfaf9539e6526dd919 | 8981ef1a6dcb4683b97b82925fd87a9f | bd7f158f-369c-41dc-81b1-84487a583c6e                                  | 2018-04-24T01:17:48.346622+00:00 | None     | 2018-04-24T01:17:48.346641+00:00 | None         | 1cf01d45402749e286c098b89caf5eaf:5f5d5bfecb944273a00697e59eafc436 |
+--------------------------------------+----------------------------+----------------------------------+----------------------------------+-----------------------------------------------------------------------+----------------------------------+----------+----------------------------------+--------------+-------------------------------------------------------------------+

次にリソースの詳細です、instanceの詳細を表示してみます。

$ openstack metric resource show bd7f158f-369c-41dc-81b1-84487a583c6e

+-----------------------+---------------------------------------------------------------------+
| Field                 | Value                                                               |
+-----------------------+---------------------------------------------------------------------+
| created_by_project_id | 5f5d5bfecb944273a00697e59eafc436                                    |
| created_by_user_id    | 1cf01d45402749e286c098b89caf5eaf                                    |
| creator               | 1cf01d45402749e286c098b89caf5eaf:5f5d5bfecb944273a00697e59eafc436   |
| ended_at              | None                                                                |
| id                    | bd7f158f-369c-41dc-81b1-84487a583c6e                                |
| metrics               | compute.instance.booting.time: 41aa5d18-772c-49ef-b1f6-26ce117d9290 |
|                       | cpu.delta: f76b4f69-8a30-4565-95af-bbf5f080cb85                     |
|                       | cpu: f9e7437c-6346-49d1-bd93-e82320afad90                           |
|                       | cpu_l3_cache: fbbb5723-f24a-4376-8253-c9b69768022c                  |
|                       | cpu_util: 5c22865d-6727-4c6c-ba3d-37a6d8ee6f4c                      |
|                       | disk.allocation: cb44a188-0d14-443e-aa4b-f85cc502d021               |
|                       | disk.capacity: 8fae7b4d-43f7-4357-8250-e7644e93cd3c                 |
|                       | disk.ephemeral.size: 07eb3f61-6faa-481d-aa4a-6d2e66591b05           |
|                       | disk.iops: 62c81e4c-fb7d-4d96-8657-9e9884dc3aef                     |
|                       | disk.latency: 17f8f246-36c4-4096-8901-c32d5a0ecf42                  |
|                       | disk.read.bytes.rate: 7a7776a4-abe9-4c81-8981-d2c560f52f12          |
|                       | disk.read.bytes: bbe8c0a0-a7bc-4c67-9c62-b500f20fa7d2               |
|                       | disk.read.requests.rate: 4508526a-af1c-4289-b340-0255f012c042       |
|                       | disk.read.requests: 36e36446-fc08-4e20-8d1e-ffaa5c8543c5            |
|                       | disk.root.size: 504a2693-5083-4c2b-9653-1394ad3ed415                |
|                       | disk.usage: 8afdfafe-e499-4c8a-b6e8-c9b60fb61504                    |
|                       | disk.write.bytes.rate: 422f0e51-1fca-4762-b418-c6de634601f7         |
|                       | disk.write.bytes: d21bd9f7-c441-4f95-ad0f-1e29fc799231              |
|                       | disk.write.requests.rate: 114edd3e-ce8e-4fd7-b96e-5fe2808de96e      |
|                       | disk.write.requests: 6e15ee6b-965d-46e7-82a7-bd869464c956           |
|                       | memory.bandwidth.local: a05a8117-2364-47a1-8eb8-4335227b89f2        |
|                       | memory.bandwidth.total: 6ea4ed00-bcca-49bc-96a7-a089577f08aa        |
|                       | memory.resident: 72564fd4-e3df-46f2-b2a5-0da106e749ce               |
|                       | memory.swap.in: 8c150408-0952-4a56-8c49-7bf196d3382d                |
|                       | memory.swap.out: ba87a10a-7e53-46e4-ba0d-40285990d5e6               |
|                       | memory.usage: 8c1008d1-a1ca-4986-8526-d95fd1a91886                  |
|                       | memory: 111aae74-7814-4228-b959-b0133b70a600                        |
|                       | perf.cache.misses: 76ac152a-cd9f-4593-be95-c586cc65471e             |
|                       | perf.cache.references: 44dae2f5-67b2-4509-8457-b6b512fee081         |
|                       | perf.cpu.cycles: 6fdcae77-b548-4cd9-b78f-fdbf5dc9057c               |
|                       | perf.instructions: 09357908-90bb-43bb-a74b-8cb86dda8833             |
|                       | vcpus: d1ad1631-b464-4179-95fe-573b2d83ee69                         |
| original_resource_id  | bd7f158f-369c-41dc-81b1-84487a583c6e                                |
| project_id            | d948eedc6f1047bfaf9539e6526dd919                                    |
| revision_end          | None                                                                |
| revision_start        | 2018-04-24T01:17:48.346641+00:00                                    |
| started_at            | 2018-04-24T01:17:48.346622+00:00                                    |
| type                  | instance                                                            |
| user_id               | 8981ef1a6dcb4683b97b82925fd87a9f                                    |
+-----------------------+---------------------------------------------------------------------+

監視の値を取得してみます、memory.usageの表示です。

$ openstack metric measures show 8c1008d1-a1ca-4986-8526-d95fd1a91886
+---------------------------+-------------+-------+
| timestamp                 | granularity | value |
+---------------------------+-------------+-------+
| 2018-04-24T10:15:00+09:00 |       300.0 |  45.0 |
+---------------------------+-------------+-------+

Grafanaによるグラフ化

GrafanaへGnocchi-Pluginのインストール

コマンドラインで監視データが取得できたので、今度はグラフ化に挑みます。 まずはGrafanaへGnocchiをデータソースとして利用するためのプラグインを入れます。

$ juju ssh grafana/0
$ sudo grafana-cli plugins install gnocchixyz-gnocchi-datasource
installing gnocchixyz-gnocchi-datasource @ 1.7.0
from url: https://grafana.com/api/plugins/gnocchixyz-gnocchi-datasource/versions/1.7.0/download
into: /var/lib/grafana/plugins

Failed downloading. Will retry once.
✔ Installed gnocchixyz-gnocchi-datasource successfully 

Restart grafana after installing plugins . <service grafana-server restart>

Grafanaサービスをリスタートし、Grafanaサーバから抜けます。

$ sudo service grafana-server restart
$ exit

Grafanaログイン情報の表示

Grafanaへログインするためのパスワードを表示します。

unit-grafana-0:
  id: 57b95cec-fb95-43e1-86c5-86ad0f274c33
  results:
    password: password5656
  status: completed
  timing:
    completed: 2018-04-24 01:29:02 +0000 UTC
    enqueued: 2018-04-24 01:29:01 +0000 UTC
    started: 2018-04-24 01:29:02 +0000 UTC
  unit: grafana/0

Grafanaへ接続

Grafanaデプロイ先アドレスにWebアクセスします。 ユーザ名はadmin、パスワードは上記で表示されたものを使用します。

http://xx.xx.xx.xx:3000

Data Sourceの設定

続いてData Sourceを設定します。 Gnocchi-Pluginがインストールされていれば、TypeにGnocchiを選択できます。

f:id:virtualtech:20180424131020p:plain

しかしここで問題発生、Gnocchiへの認証モードがkeystoneを使用すると通りません。

f:id:virtualtech:20180424131023p:plain

どうやらCORSを設定しなければならないようですが、jujuの設定項目で解決ができない範囲のようです。

https://blog.sileht.net/configuring-cors-for-gnocchi-and-keystone.html

何とか出来ないものかとpluginの設定項目を探すと、認証にtokenを指定できるのを見つけました。 強引ですが、tokenを引っ張ってきて設定してみます。

$ curl -i -X POST -H "Content-Type: application/json" -d '
{
  "auth": {
    "identity": {
      "methods": [
        "password"
      ],
      "password": {
        "user": {
          "name": "admin",
          "password": "openstack",
          "domain": {
            "name": "admin_domain"
          }
        }
      }
    },
    "scope": {
      "project": {
        "name": "admin",
        "domain": {
          "name": "admin_domain"
        }
      }
    }
  }
}' http://172.17.30.89:5000/v3/auth/tokens

HTTP/1.1 201 Created
Date: Tue, 24 Apr 2018 01:42:59 GMT
Server: Apache/2.4.18 (Ubuntu)
X-Subject-Token: 830d04244cfc4598b8c5cbb4f2fdc31c
Vary: X-Auth-Token
X-Distribution: Ubuntu
x-openstack-request-id: req-ceae75ca-0b04-4fe0-bb3e-cacb630a3a1c
Content-Length: 6557
Content-Type: application/json

{"token": {"is_domain": false, "methods": ["password"], "roles": [{"id": "097ec800c2f64a438a787f058066fbc3", "name": "Admin"}, {"id": "b6b8500fe90048e7b4700bea94ffdb31", "name": "Member"}], (省略)

tokenを渡した所、正常にData Sourceを設定できたようです。

f:id:virtualtech:20180424131025p:plain

グラフ化

設定したDeta Sourceを指定してグラフを表示させてみます。 metric IDを直接指定する方式で値が取れているのがわかります。

f:id:virtualtech:20180424131027p:plain

認証の問題

何とかグラフ化に成功しましたが、tokenの期限が切れてしまうとData Sourceが機能しなくなってしまうため、別の手法を模索する必要があると感じました。 引き続き調査したいと思います。