このセクションでは、Couchbase管理のREST APIの操作について説明します。
Couchbase Webコンソールの起動
厳格にはREST APIではないものも一部ありますが、Couchbase Webコンソールは非常に多くのREST APIエンドポイントを管理や情報収集に利用しています。
Couchbase Webコンソールは一般的なWebブラウザのユーザエージェントでロードおよび実行します。それは、HTMLページ、画像、CSS、およびJavaScriptで構成されています。サポートされるブラウザの一覧については、 システム要件を参照してください。システムの各ノードから部分的なUI階層がCouchbase Webコンソールへ提供されます(ルート"/"へ問い合わせた場合、ユーザエージェントにリダイレクトされます)。Couchbase Webコンソールを起動するには、ブラウザから適切なホストとポートにアクセスします:
GET https://node.in.pool.com/
ブートストラッピング
クライアントは、RESTfulなサービスへのエントリポイントを取得するブートストラップを行う必要があります。ブートストラッピングは以下のリクエストに示すようにプールを探す必要があります。Couchbaseの実装でのURI空間は非常に特別なURIであるように見えるかもしれませんし、ある点ではRPCのようなその他のHTTPメソッドと仕組みを利用したアーキテクチャスタイルに見えるかもしれません。しかし、それはCouchbaseが決めたURIとしての文字列でしかありません。クライアントは適切にRESTfulな処理をすればよく、リソースを表すURI構造について慣例通りであると推定したり、リソースの命名規則について指示を受けることは期待しないでしょう。構造内のさまざまな部分で類似しているため、以下に示す階層は表現上再利用していることに注意してください。
リクエスト
GET /pools Host: node.in.your.pool.com Authorization: Basic xxxxxxxxxxxxxxxxxxx Accept: application/json X-memcachekv-Store-Client-Specification-Version: 0.1
レスポンス
HTTP/1.1 200 OK Content-Type: application/json Content-Length: nnn { "implementationVersion": "253", "pools" : [ { "name": "Default Pool", "uri": "/pools/default", }, { "name": "Couchbase kvcaching pool name", "uri": "/pools/anotherpool", }, { "name": "A pool elsewhere", "uri": "https://a.node.in.another.pool.com:4321/pools/default" } ] "uri": "https://node.in.your.pool.com/pools", "specificationVersion": [ "0.1" ] }
システムグループ内で1つのプールのみが分かればよく、それは通常defaultという名前になります。プールを変更してPOSTすると403が返却されます。
実装の"ビルド"番号がimplementation_versionに、サポートされる仕様がspecificationVersionに表示されます。このノードがメンバになれるのは1つのプールだけですが、どのノードも他のプールを認識することができる柔軟性があります。
リクエストのClient-Specification-Versionは省略可能ですが、できれば設定してください。これにより、下位互換性が望まれる場合、クライアントに送信する内容を調整することができます。
ノードのプロビジョニング
ノードをクラスタで使用できるようにするには、いくつかの設定を行う必要があります。具体的には、新しいクラスタを作成する場合、そのクラスタのノードあたりのメモリ割り当てを設定する必要があります。ノードが既存のクラスタに参加するのか、新しいクラスタを起動するかどうかで、ストレージのパスを設定する必要があります。
新規クラスタの作成または既存クラスタへのノードの追加は、プロビジョニングと呼ばれ、いくつかのステップが必要です。ブートストラップ後に次の手順を実行してください。
ノードのディスクパスを設定します。
クラスタのメモリの割り当て量を設定します。これは省略可能です。ノードがクラスタに参加する場合はクラスタのメモリ割り当てを継承し、設定を省略した場合、物理メモリの80%がデフォルト値として設定されます。
次のステップは、新しいクラスタが作成されているか、または既存のクラスタに結合されるかどうかによって異なります。新しいクラスタを作成する場合は、次の手順が必要です。
"セキュア"にするため、管理者のユーザ名とパスワードを指定します。ノードが別のクラスタに参加する場合、それはそのクラスターのRESTインターフェースの接続先と、認証情報が必要になります。
ノードのディスクパスを設定する
ノードのリソースはノード上のコントローラを介して設定できます。設定対象のリソースはノード上の永続ファイルのパスです。これは、新しいクラスタを作成、または既存のクラスタにノードを追加する前に設定する必要があります。
リクエスト
POST /nodes/self/controller/settings HTTP/1.1 Host: node.in.your.cluster:8091 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Authorization: Basic YWRtaW46YWRtaW4= Content-Length: xx path=/var/tmp/test
レスポンス
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 0
例
shell> curl -d path=/var/tmp/test http://localhost:8091/nodes/self/controller/settings
クラスタのメモリ割り当ての設定リクエスト
POST /pools/default HTTP/1.1 Host: node.in.your.cluster:8091 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Authorization: Basic YWRtaW46YWRtaW4= Content-Length: xx memoryQuota=400
レスポンス
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 0
例
shell> curl -d memoryQuota=400 http://localhost:8091/pools/default
ノードのユーザ名とパスワードを設定する
任意の時点で行うことができますが、これはノードを新規のクラスタとしてプロビジョニングする際の最後のステップです。パラメータが受理されると、レスポンスは新しいベースURIを示します。クライアントは、この応答に基づいて再びブートストラッピングする場合があります。
リクエストとレスポンス
POST /settings/web HTTP/1.1 Host: node.in.your.cluster:8091 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Authorization: Basic YWRtaW46YWRtaW4= Content-Length: xx username=Administrator&password=letmein&port=8091
HTTP/1.1 200 OK Content-Type: application/json Server: Couchbase Server 1.6.0 Pragma: no-cache Date: Mon, 09 Aug 2010 18:50:00 GMT Content-Type: application/json Content-Length: 39 Cache-Control: no-cache no-store max-age=0 {"newBaseUri":"http://localhost:8091/"}
例
curl -d username=Administrator -d password=letmein -d port=8091 http://localhost:8091/settings/web
変更しない場合でも、ポート番号を指定する必要があります。
グローバル設定
統計情報を外部に送信するかどうかを設定する
これはすべてのクラスタのグローバル設定です。この値を変更するには、認証が必要です。
リクエスト
POST /settings/stats HTTP/1.1 Host: node.in.your.cluster:8091 Content-Type: application/x-www-form-urlencoded Authorization: Basic YWRtaW46YWRtaW4= Content-Length: 14 sendStats=true
レスポンス
200 OK、400 不正なリクエスト:"sendStats"の値はtrueまたはfalseでなければなりません。401 認証不可
例
curl -i -u Administrator:letmein -d sendStats=true http://localhost:8091/settings/stats
統計情報を外部に送信するかどうかを取得
これはすべてのクラスタのグローバル設定です。この値を読み取るには認証が必要です。
リクエスト
GET /settings/stats HTTP/1.1 Host: node.in.your.pool.com Authorization: Basic YWRtaW46YWRtaW4= Accept: */*
レスポンス
HTTP/1.1 200 OK Content-Type: application/json Content-Length: nnn
例
curl -u Administrator:letmein http://localhost:8091/settings/stats
自動フェイルオーバーを有効にするかどうかの設定
このエンドポイントは現在利用できません。
これはすべてのクラスタのグローバル設定です。この値を変更するには、認証が必要です。
設定可能なパラメータは次のとおりです。
enabled (true|false):自動フェイルオーバーを有効(true)または無効(false)にする
timeout (30以上の整数、enabled=trueのとき必須):ノードがダウンしていると判断され、フェイルオーバされるまでの待ち時間
リクエスト
POST /settings/autoFailover HTTP/1.1 Host: node.in.your.cluster:8091 Content-Type: application/x-www-form-urlencoded Authorization: Basic YWRtaW46YWRtaW4= Content-Length: 14 enabled=true&timeout=60
レスポンス
200 OK、400不正な要求:"enabled"の値はtrueかfalseでなければいけません。400 不正な要求:"timeout"の値は30以上の整数でなければいけません。401 認証不可
例
curl -i -u Administrator:letmein -d enabled=true&timeout=60http://localhost:8091/settings/autoFailover
自動フェイルオーバーの設定情報の取得
このエンドポイントは現在利用できません。
これはすべてのクラスタのグローバル設定です。この値を読み取るには認証が必要です。
リクエストとレスポンス
GET /settings/autoFailover HTTP/1.1 Host: node.in.your.pool.com Authorization: Basic YWRtaW46YWRtaW4= Accept: */*
HTTP/1.1 200 OK Content-Type: application/json Content-Length: nnn { "enabled": true, "timeout": 60, "count": 0 }
例
curl -u Administrator:letmein http://localhost:8091/settings/autoFailover
自動フェイルオーバ回数をリセットする
このエンドポイントは現在利用できません。
これはすべてのクラスタのグローバル設定です。この値を変更するには、認証が必要です。自動的にフェイルオーバされたノードの数をリセットします。パラメータなし
リクエスト
POST /settings/autoFailover/resetCount HTTP/1.1 Host: node.in.your.cluster:8091 Content-Type: application/x-www-form-urlencoded Authorization: Basic YWRtaW46YWRtaW4=
レスポンス
200 OK、 401 認証不可
例
curl -i -u Administrator:letmein http://localhost:8091/settings/autoFailover/resetCount
電子メール通知を有効にするかどうかの設定
このエンドポイントは現在利用できません。
これはすべてのクラスタのグローバル設定です。この値を変更するには、認証が必要です。
特定のイベントが発生したときにメールを送信します(現在は自動フェールオーバーが原因のイベントのみをサポート)。
設定可能なパラメータは次のとおりです。
enabled (true|false) (必須):電子メール通知を有効(true)または無効(false)に設定
sender (文字列) (省略可, デフォルト値: couchbase@localhost):メール送信者のアドレス
recipients(文字列)(必須):アラート電子メールの受信者、カンマで区切られたリスト。
emailHost(文字列)(省略可、デフォルトはlocalhost):SMTPサーバのホストアドレス
emailPort(整数)(省略可、デフォルト:25):SMTPサーバのポート
emailEncrypt(true|false)(省略可、デフォルト:false):TLSを使用するか否か
emailUser(文字列)(省略可、デフォルト:""):SMTPサーバのユーザ名
emailPass(文字列)(省略可、デフォルト:""):SMTPサーバのパスワード
アラート(文字列)(省略可、デフォルト:auto_failover_node, auto_failover_maximum_reached, auto_failover_other_nodes_down, auto_failover_cluster_too_small):電子メールを送信するアラートのリスト、カンマ区切り。可能な値は次のとおりです。auto_failover_maximum_reached, auto_failover_node, auto_failover_other_nodes_down, auto_failover_cluster_too_small。
リクエスト
POST /settings/alerts HTTP/1.1 Host: node.in.your.cluster:8091 Content-Type: application/x-www-form-urlencoded Authorization: Basic YWRtaW46YWRtaW4= Content-Length: 14 enabled=true&sender=couchbase@localhost&recipients=admin@localhost,membi@localhost&emailHost=localhost&emailPort=25&emailEncrypt=false
レスポンス
200 OK、400不正な要求:エラー情報JSONオブジェクト({"errors": {"key": "error"}})。発生し得るエラーは次のとおりです。
alerts:無効なキーが含まれています。有効なキーは次のとおりです。[list_of_keys]。
email_encrypt:emailEncryptはtrueまたはfalseのどちらかでなければなりません。
email_port:emailPortは、65536未満の正の整数でなければなりません。
enabled:trueまたはfalseのどちらかでなければなりません。
recipients:有効な電子メールアドレスのカンマ区切りのリストでなければなりません。
sender:有効な電子メールアドレスでなければなりません。
general:有効なパラメータが与えられていない場合。
401 認証不可
例
curl -i -u Administrator:letmein -d 'enabled=true&sender=couchbase@localhost&recipients=admin@localhost,membi@localhost&emailHost=localhost&emailPort=25&emailEncrypt=false' http://localhost:8091/settings/alerts
電子メール通知の設定情報の取得
このエンドポイントは現在利用できません。
これはすべてのクラスタのグローバル設定です。この値を読み取るには認証が必要です。
リクエスト
GET /settings/alerts HTTP/1.1 Host: node.in.your.pool.com Authorization: Basic YWRtaW46YWRtaW4= Accept: */*
レスポンス
HTTP/1.1 200 OK Content-Type: application/json Content-Length: nnn { "alerts": [ "auto_failover_node", "auto_failover_maximum_reached" ], "emailServer": { "encrypt": false, "host": "localhost", "pass": "", "port": 25, "user": "" }, "enabled": true, "recipients": [ "user@localhost" ], "sender": "couchbase@localhost" }
curl -u Administrator:letmein http://localhost:8091/settings/alerts
テストメールの送信
このエンドポイントは現在利用できません。
これはすべてのクラスタのグローバル設定です。この値を変更するには、認証が必要です。現在の構成でテストメールを送信します(メールアラートのセクションを参照してください)。
/settings/alertsと同じパラメータを指定します。加えて:subject (文字列)(必須):テスト電子メールのタイトル、body (文字列)(必須):電子メール本文
リクエスト
POST /settings/alerts/sendTestEmail HTTP/1.1 Host: node.in.your.cluster:8091 Content-Type: application/x-www-form-urlencoded Authorization: Basic YWRtaW46YWRtaW4=
レスポンス
200 OK、400 不正な要求、401 認証不可
例
curl -i -u Administrator:letmein http://localhost:8091/settings/alerts/sendTestEmail -d 'subject=Test+email+from+Couchbase&body=This+email+was+sent+to+you+to+test+the+email+alert+email+server+settings.&enabled=true&recipients=vmx%40localhost&sender=couchbase%40localhost&emailUser=&emailPass=&emailHost=localhost&emailPort=25&emailEncrypt=false&alerts=auto_failover_node%2Cauto_failover_maximum_reached%2Cauto_failover_other_nodes_down%2Cauto_failover_cluster_too_small'
プールの詳細情報を取得
リクエスト
GET /pools/default Host: node.in.your.pool.com Authorization: Basic xxxxxxxxxxxxxxxxxxx Accept: application/json X-memcachekv-Store-Client-Specification-Version: 0.1
レスポンス
HTTP/1.1 200 OK Content-Type: application/json Content-Length: nnn { "name":"default", "nodes":[{ "hostname":"10.0.1.20", "status":"healthy", "uptime":"14", "version":"1.6.0", "os":"i386-apple-darwin9.8.0", "memoryTotal":3584844000.0, "memoryFree":74972000, "mcdMemoryReserved":64, "mcdMemoryAllocated":48, "ports":{ "proxy":11213, "direct":11212 }, "otpNode":"ns_1@node.in.your.pool.com", "otpCookie":"fsekryjfoeygvgcd", "clusterMembership":"active" }], "storageTotals":{ "ram":{ "total":2032558080, "used":1641816064 }, "hdd":{ "total":239315349504.0, "used": 229742735523.0 } }, "buckets":{ "uri":"/pools/default/buckets" }, "controllers":{ "ejectNode":{ > "uri":"/pools/default/controller/ejectNode" }, "addNode":{ "uri":"/controller/addNode" }, "rebalance":{ "uri":"/controller/rebalance" }, "failover":{ "uri":"/controller/failOver" }, "reAddNode":{ "uri":"/controller/reAddNode" }, "stopRebalance":{ "uri":"/controller/stopRebalance" } }, "rebalanceProgress":{ "uri":"/pools/default/rebalanceProgress" }, "balanced": true, "etag":"asdas123", "initStatus": "stats":{ "uri":"/pools/default/stats" } }
プールはクラスタの詳細情報を表示(前述の通り)。クラスタの属性を定義するさま表示な設定と、クラスタに対し特定のリクエストを送信できる"controllers"の情報を公開します。
バケットの名前が変更され、プールのデフォルトのバケットが何であるかを判別する方法がない可能性があるので、システムは非SASLで非プロキシの"default"という名前のバケットに接続を試みます。それが存在しない場合は、接続が切断されます。
クライアントは"サーバリスト"を作成するために、"default"が返すノードリストに頼ってはいけません。代わりに、ノードリストを取得するためには特定のバケットに対しHTTP GETリクエストを発行しなければなりません。
この"controllers"は、x-www-form-urlencoded パラメータを受け取り、次の表に示す機能を実行します:
表8.3 コントローラ機能
関数 | 内容 |
---|---|
ejectNode | クラスタからノードを排出します。必須パラメータ:"otpNode"、排出されるノード。 |
addNode | このクラスタにノードを追加します。必要なパラメータ:"hostname"、"user"(ノードの管理者ユーザー)、および"password"。 |
rebalance | 既存のクラスタのリバランス。 このコントローラは、"knownNodes"と"ejectedNodes"の両方が必要です。これにより、クライアントはこの単一の操作でクラスタに残すノードと、削除するノードを明示できます。また、クライアントが最後にノードのリストを取得してからクラスタの状態に変化がないことを確認するために、これらの値を設定する必要があります。リストがノードのセットと一致しない場合、リクエストは不一致を示すHTTP 400で失敗します。リバランスの進捗はrebalanceProgress URIで確認できます。 |
failover | 特定のノードを、そのvBucketのレプリカデータを持つノードへとフェイルオーバします。"otpNode"パラメータは必須で、フェールオーバーするノードを指定しています。 |
reAddNode | "otpNode"パラメータは必須で、再度追加するノードを指定します。 |
stopRebalance | 現在実行中のリバランスを停止します。パラメータはありません。 |
"nodes"のリストは、クラスタ内の各ノードが一覧表示されます。さらに、ノードの属性が一覧表示されます。
表8.4 ノードの属性
属性 | 内容 |
---|---|
memoryTotal | Couchbaseに利用できるメモリの総容量、割り当て済と空き容量。システムに設定されているメモリの量と一致しないことがあります。 |
memoryFree | 割り当て可能なメモリの量。これは、memoryTotalから、ホストオペレーティングシステムによって割り当てられたすべてのメモリーを引いた容量に等しくなります。 |
mcdMemoryReserved | このノード上で、全てのバケットを含むCouchbaseの利用用に予約されたメモリの量。この値はノード内のアイテム管理やレプリケーション処理およびTAPストリームのオーバヘッドは含みません。 |
mcdMemoryAllocated | 実際にこのノード上のすべてのバケットが使用しているメモリの量。 |
バケット一覧とバケットの操作
システムへのクライアントは、プロキシパスまたはダイレクトパスのどちらを使用するかを選択できます。ダイレクトパスを使用する場合は、バケットの設定が変更た場合、ほとんどの場合接続を維持できません。これはバケットの設定が変化した際に、バケットのURIをポーリングしたり、ストリーミングURIへの接続が必要であることを意味します。これは例えば、ノードが追加、削除、あるいは不安定な状態に陥った場合に発生します。
リクエスト
GET /pools/default/buckets Host: node.in.your.pool.com Authorization: Basic xxxxxxxxxxxxxxxxxxx Accept: application/json X-memcachekv-Store-Client-Specification-Version: 0.1
レスポンス
HTTP/1.1 200 OK Server: Couchbase Server 1.6.0 Pragma: no-cache Date: Wed, 03 Nov 2010 18:12:19 GMT Content-Type: application/json Content-Length: nnn Cache-Control: no-cache no-store max-age=0 [ { "name": "default", "bucketType": "couchbase", "authType": "sasl", "saslPassword": "", "proxyPort": 0, "uri": "/pools/default/buckets/default", "streamingUri": "/pools/default/bucketsStreaming/default", "flushCacheUri": "/pools/default/buckets/default/controller/doFlush", "nodes": [ { "uptime": "784657", "memoryTotal": 8453197824.0, "memoryFree": 1191157760, "mcdMemoryReserved": 6449, "mcdMemoryAllocated": 6449, "clusterMembership": "active", "status": "unhealthy", "hostname": "10.1.15.148:8091", "version": "1.6.0", "os": "windows", "ports": { "proxy": 11211, "direct": 11210 } } ], "stats": { "uri": "/pools/default/buckets/default/stats" }, "nodeLocator": "vbucket", "vBucketServerMap": { "hashAlgorithm": "CRC", "numReplicas": 1, "serverList": [ "192.168.1.2:11210" ], "vBucketMap": [ [ 0, -1 ], [ 0, -1 ], [ 0, -1 ], [ 0, -1 ], [ 0, -1 ], [ 0, -1 ]] }, "replicaNumber": 1, "quota": { "ram": 104857600, "rawRAM": 104857600 }, "basicStats": { "quotaPercentUsed": 24.360397338867188, "opsPerSec": 0, "diskFetches": 0, "itemCount": 0, "diskUsed": 0, "memUsed": 25543728 } }, { "name": "test-application", "bucketType": "memcached", "authType": "sasl", "saslPassword": "", "proxyPort": 0, "uri": "/pools/default/buckets/test-application", "streamingUri": "/pools/default/bucketsStreaming/test-application", "flushCacheUri": "/pools/default/buckets/test-application/controller/doFlush", "nodes": [ { "uptime": "784657", "memoryTotal": 8453197824.0, "memoryFree": 1191157760, "mcdMemoryReserved": 6449, "mcdMemoryAllocated": 6449, "clusterMembership": "active", "status": "healthy", "hostname": "192.168.1.2:8091", "version": "1.6.0", "os": "windows", "ports": { "proxy": 11211, "direct": 11210 } } ], "stats": { "uri": "/pools/default/buckets/test-application/stats" }, "nodeLocator": "ketama", "replicaNumber": 0, "quota": { "ram": 67108864, "rawRAM": 67108864 }, "basicStats": { "quotaPercentUsed": 4.064150154590607, "opsPerSec": 0, "hitRatio": 0, "itemCount": 1385, "diskUsed": 0, "memUsed": 2727405 } } ]
名前つきバケットとバケットストリーミングURI
ここのバケットリクエストは前述の全バケットリスト配列から得られる情報と全く同じものです。streamingUriはHTTPチャンクをチャンクしたエンコーディングを利用してストリーミングしています。"\n\n\n\n"がチャンクの区切りです。これは将来のリリースで"zero chunk"に置き換えられる予定があり、streamingUriは現在開発中であるものと考えるべきです。
リクエスト
GET /pools/default/buckets/default Host: node.in.your.pool.com Authorization: Basic xxxxxxxxxxxxxxxxxxx Accept: application/json X-memcachekv-Store-Client-Specification-Version: 0.1
レスポンス
HTTP/1.1 200 OK Content-Type: application/json Content-Length: nnn { "name": "default", "bucketType": "couchbase", "authType": "sasl", "saslPassword": "", "proxyPort": 0, "uri": "/pools/default/buckets/default", "streamingUri": "/pools/default/bucketsStreaming/default", "flushCacheUri": "/pools/default/buckets/default/controller/doFlush", "nodes": [ { "uptime": "308", "memoryTotal": 3940818944.0, "memoryFree": 1608724480, "mcdMemoryReserved": 3006, "mcdMemoryAllocated": 3006, "replication": 1.0, "clusterMembership": "active", "status": "healthy", "hostname": "172.25.0.2:8091", "clusterCompatibility": 1, "version": "1.6.4r_107_g49a149d", "os": "i486-pc-linux-gnu", "ports": { "proxy": 11211, "direct": 11210 } }, { "uptime": "308", "memoryTotal": 3940818944.0, "memoryFree": 1608724480, "mcdMemoryReserved": 3006, "mcdMemoryAllocated": 3006, "replication": 1.0, "clusterMembership": "active", "status": "healthy", "hostname": "172.25.0.3:8091", "clusterCompatibility": 1, "version": "1.6.4r_107_g49a149d", "os": "i486-pc-linux-gnu", "ports": { "proxy": 11211, "direct": 11210 } }, { "uptime": "308", "memoryTotal": 3940818944.0, "memoryFree": 1608597504, "mcdMemoryReserved": 3006, "mcdMemoryAllocated": 3006, "replication": 1.0, "clusterMembership": "active", "status": "healthy", "hostname": "172.25.0.4:8091", "clusterCompatibility": 1, "version": "1.6.4r_107_g49a149d", "os": "i486-pc-linux-gnu", "ports": { "proxy": 11211, "direct": 11210 } } ], "stats": { "uri": "/pools/default/buckets/default/stats" }, "nodeLocator": "vbucket", "vBucketServerMap": { "hashAlgorithm": "CRC", "numReplicas": 1, "serverList": [ "172.25.0.2:11210", "172.25.0.3:11210", "172.25.0.4:11210" ], "vBucketMap": [ [1,0], [2,0], [1,2], [2,1], [1,2], [0,2], [0,1], [0,1] ] }, "replicaNumber": 1, "quota": { "ram": 1887436800, "rawRAM": 629145600 }, "basicStats": { "quotaPercentUsed": 14.706055058373344, "opsPerSec": 0, "diskFetches": 0, "itemCount": 65125, "diskUsed": 139132928, "memUsed": 277567495 } }
バケットのフラッシュ
この操作は、バケット内の全てのアイテムを削除します。誤って使用すると、データを破壊することになります。 サービスはユーザ対して厳重なチェックを要求しません。 単純に実行するだけです。 これを利用するクライアントアプリケーションはエンドユーザと良く確認してから実行することをお勧めします。
Couchbase 1.6の時点では、RESP API経由のフラッシュ操作はサポートされていません。memcachedプロトコルを利用すればフラッシュできます。
REST APIの返却するバケットの詳細情報には、フラッシュ操作のリクエストを送信するためのバケットURLが記載されています。
リクエスト
POST /pools/default/buckets/default/controller/doFlush Host: node.in.your.pool.com Authorization: Basic xxxxxxxxxxxxxxxxxxx X-memcachekv-Store-Client-Specification-Version: 0.1
任意のパラメータが受け入れられます。URIはバケット詳細情報で定義されており、このサービスの詳細な動作を制御するオプションはありません。システムが保護されている場合、POST時に適切なAuthorizationヘッダが必要です。
レスポンス
204 No Content - フラッシュ成功 404 Not Found - URIが不正かバケット用URIではない場合
バケットの削除
この操作は、バケットを削除します。誤って使用すると、データを破壊することになります。 サービスはユーザ対して厳重なチェックを要求ません。 単純に実行するだけです。 これを利用するクライアントアプリケーションはエンドユーザと良く確認してから実行することをお勧めします。
リクエスト
DELETE /pools/default/buckets/default Host: node.in.your.pool.com Authorization: Basic xxxxxxxxxxxxxxxxxxx X-memcachekv-Store-Client-Specification-Version: 0.1
レスポンス
統計の取得
統計情報はバケットレベルのRESTインターフェースにより収集できます。統計情報のURLはバケット情報の応答内、stats.uri プロパティから取得してください。デフォルトでは直近1分のstatsサンプル値とホットキーを返します。クエリパラメータを設定し、別のズームレベルを要求することができます。
zoom - 統計のズームレベル(minute | hour | day | week | month | year)
resampleForUI - 60のサンプルが必要な場合は1を指定してください
haveTStamp - 指定されたタイムスタンプより新しいサンプルのみを要求する場合
リクエストとレスポンス
GET /pools/default/stats Host: node.in.your.pool.com Authorization: Basic xxxxxxxxxxxxxxxxxxx Accept: application/json X-memcachekv-Store-Client-Specification-Version: 0.1
HTTP/1.1 200 OK Content-Type: application/json Content-Length: nnn { "op": { "samples": { "hit_ratio": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_cache_miss_rate": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_resident_items_rate": [ 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0 ], "ep_replica_resident_items_rate": [ 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0 ], "bytes_read": [ 151, 130, 72, 158, 120, 223, 103, 127, 127, 127, 103, 130, 72, 158, 72, 220, 103, 175, 130, 127, 103, 127, 120, 158, 72, 271, 103, 124, 130, 127, 103, 130, 72, 155, 72, 223, 103, 124, 178, 127, 103, 130, 72, 206, 69, 223, 103, 175, 130, 127, 103, 130, 72, 155, 72, 223, 103, 127, 130 ], "bytes_written": [ 36776, 40699, 15212, 41705, 15260, 41326, 36728, 20360, 40658, 20388, 36728, 40699, 15212, 41705, 15212, 41283, 36764, 20408, 40700, 20369, 36728, 40656, 15274, 41705, 15212, 41374, 36728, 20338, 40700, 20388, 36728, 40699, 15212, 41662, 15212, 41366, 36728, 20338, 40748, 20388, 36728, 40699, 15212, 41753, 15195, 41326, 36728, 20408, 40739, 20369, 36728, 40699, 15212, 41662, 15212, 41366, 36728, 20360, 40700 ], "cas_badval": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "cas_hits": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "cas_misses": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "cmd_get": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "cmd_set": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "curr_connections": [ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139 ], "curr_items": [ 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125 ], "curr_items_tot": [ 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250 ], "decr_hits": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "decr_misses": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "delete_hits": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "delete_misses": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "disk_writes": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_bg_fetched": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_flusher_todo": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_io_num_read": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_keys_size": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_num_active_non_resident": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_num_eject_replicas": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_num_non_resident": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_num_not_my_vbuckets": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_num_value_ejects": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_oom_errors": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_overhead": [ 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200, 399200 ], "ep_queue_size": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_tap_bg_fetched": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_tmp_oom_errors": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_total_persisted": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ep_values_size": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "evictions": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "get_hits": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "get_misses": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "incr_hits": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "incr_misses": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "mem_used": [ 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950, 275869950 ], "misses": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "ops": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "replica_resident_items_tot": [ 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250, 130250 ], "resident_items_tot": [ 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125, 65125 ], "timestamp": [ 1292513719166.0, 1292513720166.0, 1292513721166.0, 1292513722166.0, 1292513723166.0, 1292513724166.0, 1292513725166.0, 1292513726166.0, 1292513727167.0, 1292513728166.0, 1292513729166.0, 1292513730166.0, 1292513731166.0, 1292513732166.0, 1292513733166.0, 1292513734167.0, 1292513735166.0, 1292513736166.0, 1292513737166.0, 1292513738166.0, 1292513739166.0, 1292513740167.0, 1292513741166.0, 1292513742166.0, 1292513743166.0, 1292513744166.0, 1292513745166.0, 1292513746167.0, 1292513747167.0, 1292513748166.0, 1292513749166.0, 1292513750166.0, 1292513751166.0, 1292513752167.0, 1292513753167.0, 1292513754166.0, 1292513755166.0, 1292513756167.0, 1292513757167.0, 1292513758166.0, 1292513759166.0, 1292513760166.0, 1292513761166.0, 1292513762166.0, 1292513763167.0, 1292513764167.0, 1292513765167.0, 1292513766167.0, 1292513767166.0, 1292513768166.0, 1292513769166.0, 1292513770166.0, 1292513771166.0, 1292513772167.0, 1292513773167.0, 1292513774166.0, 1292513775166.0, 1292513776166.0, 1292513777166.0 ], "updates": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }, "samplesCount": 60, "isPersistent": true, "lastTStamp": 1292513777166.0, "interval": 1000 }, "hot_keys": [ { "name": "48697", "ops": 0.0009276437847866419 }, { "name": "8487", "ops": 0.0009276437847866419 }, { "name": "77262", "ops": 0.0009276437847866419 }, { "name": "58495", "ops": 0.0009276437847866419 }, { "name": "21003", "ops": 0.0009276437847866419 }, { "name": "26850", "ops": 0.0009276437847866419 }, { "name": "73717", "ops": 0.0009276437847866419 }, { "name": "86218", "ops": 0.0009276437847866419 }, { "name": "80344", "ops": 0.0009276437847866419 }, { "name": "83457", "ops": 0.0009276437847866419 } ] }
バケットリソースの管理
poolのURIに対してPOSTリクエストを送信することで、新規バケットを作成できます。これは、couchbaseまたはmemcachedタイプのバケットを作成するために使用することができます。バケット名は、先頭にアンダースコアを設定できません。
バケットを作成するときは、authTypeパラメータを指定する必要があります。
authTypeが"none"の場合、proxyPortを指定する必要があります。
authTypeが"SASL"の場合、"saslPassword"パラメータを指定することができます(省略可能)。1.6.0のリリースでは、すべてのSASL認証ベースのアクセスはポート番号11211に固定されているプロキシを通過する必要があります。
ramQuotaMB属性は、ユーザーが各ノード上でバケットに割り当てられるメモリー量(MB単位)を指定することができます。
memcachedバケットの場合には、ramQuotaMBを超えた場合、アイテムはおおよそのLRUに基づいてメモリから排出されるようになります。排出されるアイテムはオブジェクトのサイズが原因で、現在参照されているかいないかに関わらず、正確なLRUではない場合があります。
couchbaseバケットでramQuotaMBに達した場合、システムは一時的にエラーを返すことがあります。システムは新規アイテム用に、メモリを占有している古いアイテムを排出することで、利用可能なramQuotaMBの25%の空き容量を保持しようとします。これらの項目が後で要求されたら、それらはディスクから取得されます。
memcachedバケットを作成する
リクエスト
POST /pools/default/buckets HTTP/1.1 Host: node.in.your.cluster:8091 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Authorization: Basic YWRtaW46YWRtaW4= Content-Length: xx name=newcachebucket&ramQuotaMB=128&authType=none&proxyPort=11216&bucketType=memcached
レスポンス
202: locationヘッダが返却され、バケットは非同期に作成されます。
この操作の完了をチェックするURIはありませんが、ほとんどのバケット作成は数秒で完了します。
例
curl -d name=newcachebucket -d ramQuotaMB=128 -d authType=none -d proxyPort=11216 -d bucketType=memcached http://localhost:8080/pools/default/buckets
Couchbaseバケットを作成する
前述のパラメータに加えて、replicaNumberのパラメータは、レプリカ数を指定します。
リクエスト
POST /pools/default/buckets HTTP/1.1 Host: node.in.your.cluster:8080 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Authorization: Basic YWRtaW46YWRtaW4= Content-Length: xx name=newbucket&ramQuotaMB=20&authType=none&replicaNumber=2&proxyPort=11215
レスポンス
202: バケットは非同期に作成されます。
curl -d name=newbucket -d ramQuotaMB=20 -d authType=none -d replicaNumber=2 -d proxyPort=11215 http://localhost:8080/pools/default/buckets
バケットを取得するGETリクエスト
GET /pools/default/buckets/Another bucket
レスポンス
HTTP/1.1 200 OK Content-Type: application/com.couchbase.store+json Content-Length: nnn { "name" : "Another bucket" "bucketRules" : { "cacheRange" : { "min" : 1, "max" : 599 }, "replicationFactor" : 2 } "nodes" : [ { "hostname" : "10.0.1.20", "uri" : "/addresses/10.0.1.20", "status" : "healthy", "ports" : { "routing" : 11211, "kvcache" : 11311 } }, { "hostname" : "10.0.1.21", "uri" : "/addresses/10.0.1.21", "status" : "healthy", "ports" : { "routing" : 11211, "kvcache" : 11311 } } ] }
クライアントは正しいノードに接続するために、pool内ではなく、bucket内のノードリストを利用しなければいけません。
バケットのプロパティ変更
バケットはバケット作成時と同様のパラメータをバケットのURIにPOSTすることで変更できます。パラメータを省略すると、空で設定することを意味するため、クライアントは既存のパラメータを取得し、必要な変更を施してから、URIに対してPOSTするようにしてください。バケット名は変更できません。
バケットのメモリ割り当ての増加
バケットのramQuotaMBを増やすことができます。couchbaseバケットタイプの場合ramQuotaMBを減らすことはできません、memcachedバケットタイプの場合ramQuotaMBを変更するとフラッシュされます。
1.6.0時点では、memcachedバケットタイプのramQuotaMBの変更に関わるいくつかの既知のバグがあります。
リクエスト(curl)
curl -d ramQuotaMB=25 -d authType=none -d proxyPort=11215 http://localhost:8080/pools/default/buckets/newbucket
レスポンス
結果コードは202になります。これはクラスタ内の各サーバの割り当て量が非同期に変更されたことを示します。
HTTP/1.1 202 OK Server: Couchbase Server 1.6.0 Pragma: no-cache Date: Wed, 29 Sep 2010 20:01:37 GMT Content-Length: 0 Cache-Control: no-cache no-store max-age=0
バケットの認証を変更する
バケットの認証方法をポートベースの認証からSASL認証に変更するには以下のリクエストを送信します:
curl -d ramQuotaMB=130 -d authType=sasl -d saslPassword=letmein http://localhost:8080/pools/default/buckets/acache
クラスタおよびプールの操作
新しいプールの作成は、現在サポートされていません。新しいプールは、将来のリリースでサポートされる可能性があります。その場合、/pools のURIにPOSTすることで新規のプールを作成します。
リクエスト
POST /pools/mynewpool name=mynewpool
レスポンス
201:プールが作成されました。作成されたプールを参照するためのURIが返却されます。 403:ユーザはこの操作を許可されていません(もしくは全てのユーザがこの操作を許可されない設定となっています)
現在のリリースではこのメソッドは許可されておらず、常に405が返されます。
クラスタに参加する
複数のノードで構成されている複数のクラスタ(別名:プール)はマージできません。単一ノードはクラスタに参加することを要求できます。クラスタへの参加プロセスにはいくつかのパラメータが必要になります。
リクエスト
POST /node/controller/doJoinCluster Host: target.node.to.do.join.from:8091 Authorization: Basic xxxxxxxxxxxx Accept: */* Content-Length: xxxxxxxxxx Content-Type: application/x-www-form-urlencoded clusterMemberHostIp=192.168.0.1&clusterMemberPort=8091&user=admin&password=admin123
次の引数が必要です:
表8.5 クラスタ参加時の引数:
引数 | 内容 |
---|---|
clusterMemberHostIp | このRESTリクエストを受信するサーバが参加する、参加先のクラスタ内サーバのホスト名かIPアドレス。 |
clusterMemberPort | システムへのRESTfulインターフェース用ポート番号 |
Couchbase Webコンソールからサーバが「保護」されている場合、次の引数も必要です:
レスポンス
200:OK - 正常に参加しました。参加したプール詳細へのlocationヘッダが返却されます。 400:Bad Request - パラメータが不足している等。 401:Unauthorized - 認証情報が必要ですが、指定されませんでした。 403:Forbidden bad credentials - 不正な認証情報です。
例(curl)
curl -d clusterMemberHostIp=192.168.0.1 -d clusterMemberPort=8091 -d user=admin -d password=admin123 http://localhost:8091/node/controller/doJoinCluster
クラスタからノードを排出
ノードが一時的または恒久的にダウンしている状況では、そのノードをクラスタから排出する必要があることがあります。同一のクラスタに参加している他のノードからノード情報を除去することも重要です。
リクエスト
POST /controller/ejectNode Host: altnernate.node.in.cluster:8091 Authorization: Basic xxxxxxxxxxxx Accept: */* Content-Length: xxxxxxxxxx Content-Type: application/x-www-form-urlencoded otpNode=ns_1@192.168.0.1
レスポンス
200:OK - ノードを排出しました。 400:Error - 対象のノードが存在しません。401:Unauthorized - 必要な認証情報が不足しています。403 Forbidden - 認証情報は指定されましたが、不正です。
例(curl)
curl -d otpNode=ns_1@192.168.0.107 http://192.168.0.106:8091/controller/ejectNode
システムログ
システムモジュールは、このインタフェースを介して、利用可能な様々なメッセージをログに記録します。これらのログメッセージは、モジュールによって分類することができます。一般的な最新のログリストと、特定のカテゴリの最新のリストが利用できます。特定のカテゴリを指定せずGETすると、全てのカテゴリが返却されます。
返却されるタイプには"info"、"crit"、"warn"があります。システムが保護されている場合、ログにアクセスするには管理者の認証情報が必要です。
リクエスト
GET /pools/default/logs?cat=crit Host: node.in.your.pool.com Authorization: Basic xxxxxxxxxxxxxxxxxxx Accept: application/json X-memcachekv-Store-Client-Specification-Version: 0.1
レスポンス
201: bucket was created and valid URIs returned HTTP/1.1 200 OK Content-Type: application/json Content-Length: nnn [{"cat":"info", "date": "", "code": "302", "message": "Some information for you."}, {"cat":"warn", "date": "", "code": "502", "message": "Something needs attention."}]
クライアントログ記録インタフェース
クライアントがサービスのログにエントリを追加したい場合があります。これらのエントリは、サーバのレスポンスを処理するのが困難な場合など、例外的な情報を記録するのが典型的です。例えばWeb UIはクライアントのエラー情報を記録するためにこの機能を利用しています。
リクエスト
POST /logClientError Host: node.in.your.pool.com Authorization: Basic xxxxxxxxxxxxxxxxxxx Accept: application/json X-memcachekv-Store-Client-Specification-Version: 0.1
レスポンス
200 - OK