Class: Gs2::Watch::Client

Inherits:
Core::AbstractClient
  • Object
show all
Defined in:
lib/gs2/watch/Client.rb

Overview

GS2-Watch クライアント

Author:

  • Game Server Services, Inc.

Constant Summary

@@ENDPOINT =
'watch'
@@VARIATION =
'a'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(region, gs2_client_id, gs2_client_secret) ⇒ Client

コンストラクタ

Parameters:

  • region (String)

    リージョン名

  • gs2_client_id (String)

    GSIクライアントID

  • gs2_client_secret (String)

    GSIクライアントシークレット



18
19
20
# File 'lib/gs2/watch/Client.rb', line 18

def initialize(region, gs2_client_id, gs2_client_secret)
  super(region, gs2_client_id, gs2_client_secret)
end

Class Method Details

.ENDPOINT(v = nil) ⇒ Object

デバッグ用。通常利用する必要はありません。



23
24
25
26
27
28
29
# File 'lib/gs2/watch/Client.rb', line 23

def self.ENDPOINT(v = nil)
  if v
    @@ENDPOINT = v
  else
    return @@ENDPOINT
  end
end

.VARIATION(v = nil) ⇒ Object

デバッグ用。通常利用する必要はありません。



32
33
34
35
36
37
38
# File 'lib/gs2/watch/Client.rb', line 32

def self.VARIATION(v = nil)
  if v
    @@VARIATION = v
  else
    return @@VARIATION
  end
end

Instance Method Details

#create_alerm(request) ⇒ Array

アラームを作成

GS2 内のスタティスティックスに対して監視を行うことができます。
クオータの消費量に対して閾値を設定し、閾値を超えた際に通知を出すことができます。

Parameters:

  • request (Array)
    • name => アラーム名

    • description => 説明文

    • service => 監視対象サービス

    • serviceId => 監視対象サービスID

    • operation => 監視対象オペレーション

    • expression => 演算子(>=, >, <, <=)

    • threshold => 閾値

    • notificationId => 通知ID

Returns:

  • (Array)
    • item

      • alermId => アラームID

      • ownerId => オーナーID

      • name => アラーム名

      • description => 説明文

      • service => 監視対象サービス

      • serviceId => 監視対象サービスID

      • operation => 監視対象オペレーション

      • expression => 演算子

      • threshold => 閾値

      • notificationId => 通知ID

      • createAt => 作成日時

      • updateAt => 更新日時

      • status => ステータス

      • lastStatusChangeAt => 最終ステータス更新日時



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/gs2/watch/Client.rb', line 105

def create_alerm(request)
  if not request; raise ArgumentError.new(); end
  body = {}
  if request.has_key?('name'); body['name'] = request['name']; end
  if request.has_key?('description'); body['description'] = request['description']; end
  if request.has_key?('service'); body['service'] = request['service']; end
  if request.has_key?('serviceId'); body['serviceId'] = request['serviceId']; end
  if request.has_key?('operation'); body['operation'] = request['operation']; end
  if request.has_key?('expression'); body['expression'] = request['expression']; end
  if request.has_key?('threshold'); body['threshold'] = request['threshold']; end
  if request.has_key?('notificationId'); body['notificationId'] = request['notificationId']; end
  query = {}
  return post(
        'Gs2Watch', 
        'CreateAlerm', 
        @@ENDPOINT, 
        @@VARIATION,
        '/alerm',
        body,
        query);
end

#delete_alerm(request) ⇒ Object

アラームを削除

Parameters:

  • request (Array)
    • alermName => アラーム名



209
210
211
212
213
214
215
216
217
218
219
220
221
# File 'lib/gs2/watch/Client.rb', line 209

def delete_alerm(request)
  if not request; raise ArgumentError.new(); end
  if not request.has_key?('alermName'); raise ArgumentError.new(); end
  if not request['alermName']; raise ArgumentError.new(); end
  query = {}
  return delete(
        'Gs2Watch', 
        'DeleteAlerm', 
        @@ENDPOINT, 
        @@VARIATION,
        '/alerm/' + request['alermName'],
        query);
end

#describe_alerm(pageToken = nil, limit = nil) ⇒ Array

アラームリストを取得

Parameters:

  • pageToken (String) (defaults to: nil)

    ページトークン

  • limit (Integer) (defaults to: nil)

    取得件数

Returns:

  • (Array)
    • items

      Array
      • alermId => アラームID

      • ownerId => オーナーID

      • name => アラーム名

      • description => 説明文

      • service => 監視対象サービス

      • serviceId => 監視対象サービスID

      • operation => 監視対象オペレーション

      • expression => 演算子

      • threshold => 閾値

      • notificationId => 通知ID

      • createAt => 作成日時

      • updateAt => 更新日時

      • status => ステータス

      • lastStatusChangeAt => 最終ステータス更新日時

    • nextPageToken => 次ページトークン



62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/gs2/watch/Client.rb', line 62

def describe_alerm(pageToken = nil, limit = nil)
  query = {}
  if pageToken; query['pageToken'] = pageToken; end
  if limit; query['limit'] = limit; end
  return get(
        'Gs2Watch', 
        'DescribeAlerm', 
        @@ENDPOINT, 
        @@VARIATION,
        '/alerm',
        query);
end

#describe_alerm_event(request, pageToken = nil, limit = nil) ⇒ Array

アラームイベントリストを取得

過去にアラームが発生した履歴などを確認できます。

Parameters:

  • request (Array)
    • alermName => アラーム名

  • pageToken (String) (defaults to: nil)

    ページトークン

  • limit (Integer) (defaults to: nil)

    取得件数

Returns:

  • (Array)
    • items

      Array
      • eventId => アラームイベントID

      • alermId => アラームID

      • type => イベントの種類

      • eventAt => イベント発生日時

    • nextPageToken => 次ページトークン



239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
# File 'lib/gs2/watch/Client.rb', line 239

def describe_alerm_event(request, pageToken = nil, limit = nil)
  if not request; raise ArgumentError.new(); end
  if not request.has_key?('alermName'); raise ArgumentError.new(); end
  if not request['alermName']; raise ArgumentError.new(); end
  query = {}
  if pageToken; query['pageToken'] = pageToken; end
  if limit; query['limit'] = limit; end
  return get(
      'Gs2Watch',
      'DescribeAlermEvent',
      @@ENDPOINT,
      @@VARIATION,
      '/alerm/' + request['alermName'] + '/event',
      query);
end

#describe_operation(request) ⇒ Array

オペレーション名リストを取得

アラームを設定する際に指定できるオペレーションの一覧を取得できます。

Parameters:

  • request (Array)
    • serviceName => サービス名

Returns:

  • (Array)

    オペレーション名リスト



279
280
281
282
283
284
285
286
287
288
289
290
291
292
# File 'lib/gs2/watch/Client.rb', line 279

def describe_operation(request)
  if not request; raise ArgumentError.new(); end
  if not request.has_key?('serviceName'); raise ArgumentError.new(); end
  if not request['serviceName']; raise ArgumentError.new(); end
  query = {}
  result = get(
      'Gs2Watch',
      'DescribeOperation',
      @@ENDPOINT,
      @@VARIATION,
      '/service/' + request['serviceName'] + '/operation',
      query);
  return result['items'];
end

#describe_serviceArray

サービス名リストを取得

アラームを設定する際に指定できるサービスの一覧を取得できます。

Returns:

  • (Array)

    サービス名リスト



260
261
262
263
264
265
266
267
268
269
270
# File 'lib/gs2/watch/Client.rb', line 260

def describe_service()
  query = {}
  result = get(
      'Gs2Watch',
      'DescribeService',
      @@ENDPOINT,
      @@VARIATION,
      '/service',
      query);
  return result['items'];
end

#get_alerm(request) ⇒ Array

アラームを取得

Parameters:

  • request (Array)
    • alermName => アラーム名

Returns:

  • (Array)
    • item

      • alermId => アラームID

      • ownerId => オーナーID

      • name => アラーム名

      • description => 説明文

      • service => 監視対象サービス

      • serviceId => 監視対象サービスID

      • operation => 監視対象オペレーション

      • expression => 演算子

      • threshold => 閾値

      • notificationId => 通知ID

      • createAt => 作成日時

      • updateAt => 更新日時

      • status => ステータス

      • lastStatusChangeAt => 最終ステータス更新日時



147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/gs2/watch/Client.rb', line 147

def get_alerm(request)
  if not request; raise ArgumentError.new(); end
  if not request.has_key?('alermName'); raise ArgumentError.new(); end
  if not request['alermName']; raise ArgumentError.new(); end
  query = {}
  return get(
      'Gs2Watch',
      'GetAlerm',
      @@ENDPOINT,
      @@VARIATION,
      '/alerm/' + request['alermName'],
      query);
end

#get_metric(request) ⇒ Array

メトリクスを取得

過去のサービスの利用状況を取得します。

Parameters:

  • request (Array)
    • serviceId => サービスID

    • operation => オペレーション名

    • begin => メトリクス取得開始日時(unixepoch)

    • end => メトリクス取得終了日時(unixepoch)

    • allowLongTerm => 7日以上の期間のデータを取得することを許可するか(OPTIONAL)

    • serviceId => サービスID

Returns:

  • (Array)
    • items

      Array
      • timestamp => タイムスタンプ(YYYY-MM-DD HH:mm:SS)

      • value => 値



310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
# File 'lib/gs2/watch/Client.rb', line 310

def get_metric(request)
  if not request; raise ArgumentError.new(); end
  if not request.has_key?('serviceId'); raise ArgumentError.new(); end
  if not request['serviceId']; raise ArgumentError.new(); end
  if not request.has_key?('operation'); raise ArgumentError.new(); end
  if not request['operation']; raise ArgumentError.new(); end
  query = {}
  if request.has_key?('begin'); query['begin'] = request['begin']; end
  if request.has_key?('end'); query['end'] = request['end']; end
  if request.has_key?('allowLongTerm'); query['allowLongTerm'] = request['allowLongTerm']; end
  return get(
      'Gs2Watch',
      'GetMetric',
      @@ENDPOINT,
      @@VARIATION,
      '/metric/' + request['serviceId'] + '/' + request['operation'],
      query);
end

#update_alerm(request) ⇒ Array

アラームを更新

Parameters:

  • request (Array)
    • alermName => アラーム名

    • description => 説明文

    • expression => 演算子(>=, >, <, <=)

    • threshold => 閾値

    • notificationId => 通知ID

Returns:

  • (Array)
    • item

      • alermId => アラームID

      • ownerId => オーナーID

      • name => アラーム名

      • description => 説明文

      • service => 監視対象サービス

      • serviceId => 監視対象サービスID

      • operation => 監視対象オペレーション

      • expression => 演算子

      • threshold => 閾値

      • notificationId => 通知ID

      • createAt => 作成日時

      • updateAt => 更新日時

      • status => ステータス

      • lastStatusChangeAt => 最終ステータス更新日時



185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# File 'lib/gs2/watch/Client.rb', line 185

def update_alerm(request)
  if not request; raise ArgumentError.new(); end
  if not request.has_key?('alermName'); raise ArgumentError.new(); end
  if not request['alermName']; raise ArgumentError.new(); end
  body = {}
  if request.has_key?('description'); body['description'] = request['description']; end
  if request.has_key?('expression'); body['expression'] = request['expression']; end
  if request.has_key?('threshold'); body['threshold'] = request['threshold']; end
  if request.has_key?('notificationId'); body['notificationId'] = request['notificationId']; end
  query = {}
  return put(
      'Gs2Watch',
      'UpdateAlerm',
      @@ENDPOINT,
      @@VARIATION,
      '/alerm/' + request['alermName'],
      body,
      query);
end