IBM Cloud: CIS(Cloud Internet Service)でGraphQLを試してみる


1. はじめに

IBM CloudのCIS(Cloud Internet Service)では、GraphQLを使ってログなどを取得することが可能になりました(GraphQLはAPI用のクエリ言語です。ググったらもっといい情報が出てきます)。
本稿では、IBM Cloud docsに従って、GraphQLを試してみたいと思います。なお、CISでGraphQLを利用するためにはEnterprise Planである必要があります。

2. GraphiQLの導入とセットアップ

  1. ここからダウンロード可能。私の環境はMacなので、GraphiQL-0.7.2.dmgをダウンロードしてダブルクリックから導入した。

  2. GraphQL Endpointの設定。

    • endpoint情報はhttps://api.cis.cloud.ibm.com/v1/<crn>/zones/<zoneid>/graphqlとなる。
    • <crn>および、zoneid(Domain ID)は以下から取得可能。
  3. Edit HTTP Headerを押下

  4. ヘッダ情報を設定

    • X-Auth-User-Tokenの値は、IAMの認証トークン情報であり、取得方法はここを参照。
    • Content-Typeの値は、application/json

3. テスト

IBM Cloud docsにあるサンプルを利用してみた。
ツールの左側に以下のQueryを入れて、実行ボタンを押下すると、右側に結果が表示される。

3.1 Case1

Domain IDは適宜調整してください。

Queryの例
{
  viewer {
    zones(filter: {zoneTag: "<Domain ID>"}) {
      settings {
        browserInsightsAdaptiveGroups {
          maxDuration
          maxNumberOfFields
          maxPageSize
          enabled
          notOlderThan
        }
      }
    }
  }
}

3.2 Case2

Domain IDおよび日付は適宜調整してください。

Queryの例
{
  viewer {
    zones(filter: {zoneTag: "<Domain ID>"}) {
      httpRequests1hGroups(limit: 5, filter: {datetime_gt: "2020-11-08T00:00:00Z", datetime_lt: "2020-11-10T23:59:59Z"}) {
        sum {
          countryMap {
            bytes
            clientCountryName
          }
        }
        dimensions {
          date
          datetime
        }
      }
      firewallEventsAdaptiveGroups(limit: 10, filter: {datetime_gt: "2020-11-09T00:00:00Z", datetime_lt: "2020-11-10T23:59:59Z"}) {
        count
        dimensions {
          clientCountryName
          clientAsn
          datetimeHour
        }
      }
    }
  }
}