LoginSignup
2
0

More than 5 years have passed since last update.

Node-REDでOCIの管理を簡単にする(2)Autonomous Data Warehouseを操作する

Last updated at Posted at 2019-02-10

Node-REDはJSONを扱うのにとっても便利

いまどき、テキストログではなくてjsonで戻してくれるプログラムが増えてずいぶん楽になりました。Node-REDでは、フローをオブジェクトが流れる形でjsonそのまま構造を扱えるので、配列の中を指さしで数えてうんうんうなって調べなくても済みます。

そしてこのNode-REDは、高速かつ本格的な処理ができるのに、直感的に子供もいじれるほどのデザインの良さを感じます。

人に仕事を任せたりする休みのときにも、めんどくさい手順書をかくことなく「こういうときはここのボタンおして」で済みます。

さらに、Google Homeやアレクサからもコントロールができるようにするのもわけありません。音声認識で「Autonomous Databaseをもっと速くして」みたいなこともできるはずです。
https://qiita.com/tstkkmd/items/10fb586be83de96bfe24

手動でためしてみる

コンパートメント内のAutonomous DWの一覧を取るには、execノードにこんなコマンドを入れてあげます -c のあとにはCompartment IDをいれます。

/root/.pyenv/shims/oci db autonomous-data-warehouse list -c ocid1.compartment.oc1..***** --all

Node-RED.png

すると、json形式で返事が帰ってきます。

{
  "data": [
    {
      "compartment-id": "ocid1.compartment.oc1..*****",
      "connection-strings": {
        "all-connection-strings": {
          "HIGH": "adb.us-phoenix-1.oraclecloud.com:1522/*****_siumaaidb_high.adwc.oraclecloud.com",
          "LOW": "adb.us-phoenix-1.oraclecloud.com:1522/*****_siumaaidb_low.adwc.oraclecloud.com",
          "MEDIUM": "adb.us-phoenix-1.oraclecloud.com:1522/*****_siumaaidb_medium.adwc.oraclecloud.com"
        },
        "high": "adb.us-phoenix-1.oraclecloud.com:1522/*****_siumaaidb_high.adwc.oraclecloud.com",
        "low": "adb.us-phoenix-1.oraclecloud.com:1522/*****_siumaaidb_low.adwc.oraclecloud.com",
        "medium": "adb.us-phoenix-1.oraclecloud.com:1522/*****_siumaaidb_medium.adwc.oraclecloud.com"
      },
      "cpu-core-count": 4,
      "data-storage-size-in-tbs": 1,
      "db-name": "siumaaiDB",
      "db-version": "18.4.0.0",
      "defined-tags": {},
      "display-name": "btamari2siumaai",
      "freeform-tags": {},
      "id": "ocid1.autonomousdwdatabase.oc1.phx.*****",
      "license-model": "BRING_YOUR_OWN_LICENSE",
      "lifecycle-details": null,
      "lifecycle-state": "AVAILABLE",
      "service-console-url": "https://adb.us-phoenix-1.oraclecloud.com/console/index.html?tenant_name=OCID1.TENANCY.OC1..*****&database_name=SIUMAAIDB&service_type=ADW",
      "time-created": "2019-01-11T04:58:25.656000+00:00"
    }
  ]
}

あとは、コマンドを実行する>戻り値の配列から必要な要素を取り出す>評価>次のアクションを実行 というだけです。

起動・終了を仕込んでみる

oci cliから操作できるコマンドは以下に説明されています。

情報取得を試しましょう。Execノードに以下のコマンドを入れてください。

oci db autonomous-data-warehouse get --autonomous-data-warehouse-id <Autonomous Data Warehouseインスタンスのocid>

jsonで帰ってくるのをjqで見るのとくらべてどうでしょうか?戻り値を拾って処理ができそうです。属性にマウスオーバーすると、PATHや値がクリップボードにコピーできます。

Node-RED_1.png

Node-RED_2.png

Autonomous data warehouseのlifecycle-stateは payload.data["lifecycle-state"] に格納されており、いじって調べた限り以下の値をとります(たしか異常状態をしめすようなもう一個があったような気もするけれど)

  • AVAILABLE
  • STOPPING
  • STOPPED
  • STARTING
  • SCALE_IN_PROGRESS

以下のようなswitchノードを置いてあげて、5つの処理ごとになにか処理を入れてあげましょう。

Node-RED_3.png

今回、STARTING/STOPPING/SCALE_IN_PROGRESSのときにはなにもしないで、一回押したら起動・終了するだけにしてみましょう。

/root/.pyenv/shims/oci db autonomous-data-warehouse stop --autonomous-data-warehouse-id <Autonomous Data Warehouseインスタンスのocid>
/root/.pyenv/shims/oci db autonomous-data-warehouse start --autonomous-data-warehouse-id <Autonomous Data Warehouseインスタンスのocid>

フローはこんな感じになりました。
Node-RED_1.png

まとめ

左上のタイムスタンプの左のボタンを押すと、START/STOPしてくれるようになりました。
今回は試しに作りたかっただけなのでボタンを一個にまとめてしまいましたが、同じ方法でスケールアップ・ダウンもできます。

Oracle_Cloud_Infrastructure.png

Oracle_Cloud_Infrastructure.png

Oracle_Cloud_Infrastructure_1.png

タイムスタンプノードの設定をいじれば、朝8時に起動・繁忙時間帯だけCPU数を増加、みんなが帰る夜9時過ぎや週末は停止みたいな設定も簡単です。

Node-RED.png

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0