{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/community/pulls/comments/97911489","pull_request_review_id":18537168,"id":97911489,"diff_hunk":"@@ -0,0 +1,65 @@\n+# Cloud Provider (specifically GCE and AWS) metrics for Storage API calls\n+\n+## Goal\n+\n+Kubernetes should provide metrics such as - count & latency percentiles\n+for cloud provider API it uses to provision persistent volumes.\n+\n+In a ideal world - we would want these metrics for all cloud providers\n+and for all API calls kubernetes makes but to limit the scope of this feature\n+we will implement metrics for:\n+\n+* GCE\n+* AWS\n+\n+We will also implement metrics only for storage API calls for now. This feature\n+does introduces hooks into kubernetes code which can be used to add additonal metrics\n+but we only focus on storage API calls here.\n+\n+## Motivation\n+\n+* Cluster admins should be able to monitor Cloud API usage of Kubernetes. It will help\n+  them detect problems in certain scenarios which can blow up the API quota of Cloud\n+  provider.\n+* Cluster admins should also be able to monitor health and latency of Cloud API on\n+  which kubernetes depends on.\n+\n+## Implementation\n+\n+### Metric format and collection\n+\n+Metrics emitted from cloud provider will fall under category of service metrics\n+as defined in [Kubernetes Monitoring Architecture](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/monitoring_architecture.md).\n+\n+\n+The metrics will be emitted using [Prometheus format](https://prometheus.io/docs/instrumenting/exposition_formats/) and available for collection\n+from `/metrics` HTTP endpoint of kubelet, controller etc. All Kubernetes core components already emit\n+metrics on `/metrics` HTTP endpoint. This proposal merely extends available metrics to include Cloud provider metrics as well.\n+\n+\n+Any collector which can parse Prometheus metric format should be able to collect\n+metrics from these endpoints.\n+\n+A more detailed description of monitoring pipeline can be found here - https://github.com/kubernetes/community/blob/master/contributors/design-proposals/monitoring_architecture.md#monitoring-pipeline\n+\n+\n+#### Metric Types\n+\n+Since we are mostly interested in count of API calls and its latency - [Summary](https://prometheus.io/docs/concepts/metric_types/#summary) metric type should do the job.\n+Summary type will enable us to compute percentiles and count easily. We do take a hit\n+in accuracy when it comes to percentile computation but I think we should be fine with that.\n+\n+We will be using `SummaryVec` type so as we can attach dimensions at runtime. Whenever available\n+`namespace` will reported as a dimension with the metric.\n+\n+### GCE Implementation","path":"contributors/design-proposals/cloudprovider-storage-metrics.md","position":55,"original_position":55,"commit_id":"cfb95cbdbc21dee9fdc3aed6f9a7d56218192ddf","original_commit_id":"cfb95cbdbc21dee9fdc3aed6f9a7d56218192ddf","user":{"login":"saad-ali","id":10052848,"avatar_url":"https://avatars.githubusercontent.com/u/10052848?v=3","gravatar_id":"","url":"https://api.github.com/users/saad-ali","html_url":"https://github.com/saad-ali","followers_url":"https://api.github.com/users/saad-ali/followers","following_url":"https://api.github.com/users/saad-ali/following{/other_user}","gists_url":"https://api.github.com/users/saad-ali/gists{/gist_id}","starred_url":"https://api.github.com/users/saad-ali/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/saad-ali/subscriptions","organizations_url":"https://api.github.com/users/saad-ali/orgs","repos_url":"https://api.github.com/users/saad-ali/repos","events_url":"https://api.github.com/users/saad-ali/events{/privacy}","received_events_url":"https://api.github.com/users/saad-ali/received_events","type":"User","site_admin":false},"body":"Could you be more specific in the implementations for both AWS and GCE. e.g. \"We will instrument the following API calls for latency, success/failures...\"","created_at":"2017-01-26T00:31:05Z","updated_at":"2017-01-26T00:31:09Z","html_url":"https://github.com/kubernetes/community/pull/288#discussion_r97911489","pull_request_url":"https://api.github.com/repos/kubernetes/community/pulls/288","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/community/pulls/comments/97911489"},"html":{"href":"https://github.com/kubernetes/community/pull/288#discussion_r97911489"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/community/pulls/288"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/community/pulls/288","id":103050427,"html_url":"https://github.com/kubernetes/community/pull/288","diff_url":"https://github.com/kubernetes/community/pull/288.diff","patch_url":"https://github.com/kubernetes/community/pull/288.patch","issue_url":"https://api.github.com/repos/kubernetes/community/issues/288","number":288,"state":"open","locked":false,"title":"Proposal for cloudprovider storage metrics","user":{"login":"gnufied","id":278,"avatar_url":"https://avatars.githubusercontent.com/u/278?v=3","gravatar_id":"","url":"https://api.github.com/users/gnufied","html_url":"https://github.com/gnufied","followers_url":"https://api.github.com/users/gnufied/followers","following_url":"https://api.github.com/users/gnufied/following{/other_user}","gists_url":"https://api.github.com/users/gnufied/gists{/gist_id}","starred_url":"https://api.github.com/users/gnufied/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnufied/subscriptions","organizations_url":"https://api.github.com/users/gnufied/orgs","repos_url":"https://api.github.com/users/gnufied/repos","events_url":"https://api.github.com/users/gnufied/events{/privacy}","received_events_url":"https://api.github.com/users/gnufied/received_events","type":"User","site_admin":false},"body":"cc @childsb @kubernetes/sig-storage-feature-requests \r\n","created_at":"2017-01-25T03:43:26Z","updated_at":"2017-01-26T00:31:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b5174ac47f67fa86606de846656272a62cc825e6","assignee":{"login":"saad-ali","id":10052848,"avatar_url":"https://avatars.githubusercontent.com/u/10052848?v=3","gravatar_id":"","url":"https://api.github.com/users/saad-ali","html_url":"https://github.com/saad-ali","followers_url":"https://api.github.com/users/saad-ali/followers","following_url":"https://api.github.com/users/saad-ali/following{/other_user}","gists_url":"https://api.github.com/users/saad-ali/gists{/gist_id}","starred_url":"https://api.github.com/users/saad-ali/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/saad-ali/subscriptions","organizations_url":"https://api.github.com/users/saad-ali/orgs","repos_url":"https://api.github.com/users/saad-ali/repos","events_url":"https://api.github.com/users/saad-ali/events{/privacy}","received_events_url":"https://api.github.com/users/saad-ali/received_events","type":"User","site_admin":false},"assignees":[{"login":"saad-ali","id":10052848,"avatar_url":"https://avatars.githubusercontent.com/u/10052848?v=3","gravatar_id":"","url":"https://api.github.com/users/saad-ali","html_url":"https://github.com/saad-ali","followers_url":"https://api.github.com/users/saad-ali/followers","following_url":"https://api.github.com/users/saad-ali/following{/other_user}","gists_url":"https://api.github.com/users/saad-ali/gists{/gist_id}","starred_url":"https://api.github.com/users/saad-ali/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/saad-ali/subscriptions","organizations_url":"https://api.github.com/users/saad-ali/orgs","repos_url":"https://api.github.com/users/saad-ali/repos","events_url":"https://api.github.com/users/saad-ali/events{/privacy}","received_events_url":"https://api.github.com/users/saad-ali/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/community/pulls/288/commits","review_comments_url":"https://api.github.com/repos/kubernetes/community/pulls/288/comments","review_comment_url":"https://api.github.com/repos/kubernetes/community/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/community/issues/288/comments","statuses_url":"https://api.github.com/repos/kubernetes/community/statuses/cfb95cbdbc21dee9fdc3aed6f9a7d56218192ddf","head":{"label":"gnufied:cloudprovider-storage-metrics","ref":"cloudprovider-storage-metrics","sha":"cfb95cbdbc21dee9fdc3aed6f9a7d56218192ddf","user":{"login":"gnufied","id":278,"avatar_url":"https://avatars.githubusercontent.com/u/278?v=3","gravatar_id":"","url":"https://api.github.com/users/gnufied","html_url":"https://github.com/gnufied","followers_url":"https://api.github.com/users/gnufied/followers","following_url":"https://api.github.com/users/gnufied/following{/other_user}","gists_url":"https://api.github.com/users/gnufied/gists{/gist_id}","starred_url":"https://api.github.com/users/gnufied/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnufied/subscriptions","organizations_url":"https://api.github.com/users/gnufied/orgs","repos_url":"https://api.github.com/users/gnufied/repos","events_url":"https://api.github.com/users/gnufied/events{/privacy}","received_events_url":"https://api.github.com/users/gnufied/received_events","type":"User","site_admin":false},"repo":{"id":78148627,"name":"community","full_name":"gnufied/community","owner":{"login":"gnufied","id":278,"avatar_url":"https://avatars.githubusercontent.com/u/278?v=3","gravatar_id":"","url":"https://api.github.com/users/gnufied","html_url":"https://github.com/gnufied","followers_url":"https://api.github.com/users/gnufied/followers","following_url":"https://api.github.com/users/gnufied/following{/other_user}","gists_url":"https://api.github.com/users/gnufied/gists{/gist_id}","starred_url":"https://api.github.com/users/gnufied/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnufied/subscriptions","organizations_url":"https://api.github.com/users/gnufied/orgs","repos_url":"https://api.github.com/users/gnufied/repos","events_url":"https://api.github.com/users/gnufied/events{/privacy}","received_events_url":"https://api.github.com/users/gnufied/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gnufied/community","description":"Kubernetes community content","fork":true,"url":"https://api.github.com/repos/gnufied/community","forks_url":"https://api.github.com/repos/gnufied/community/forks","keys_url":"https://api.github.com/repos/gnufied/community/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gnufied/community/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gnufied/community/teams","hooks_url":"https://api.github.com/repos/gnufied/community/hooks","issue_events_url":"https://api.github.com/repos/gnufied/community/issues/events{/number}","events_url":"https://api.github.com/repos/gnufied/community/events","assignees_url":"https://api.github.com/repos/gnufied/community/assignees{/user}","branches_url":"https://api.github.com/repos/gnufied/community/branches{/branch}","tags_url":"https://api.github.com/repos/gnufied/community/tags","blobs_url":"https://api.github.com/repos/gnufied/community/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gnufied/community/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gnufied/community/git/refs{/sha}","trees_url":"https://api.github.com/repos/gnufied/community/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gnufied/community/statuses/{sha}","languages_url":"https://api.github.com/repos/gnufied/community/languages","stargazers_url":"https://api.github.com/repos/gnufied/community/stargazers","contributors_url":"https://api.github.com/repos/gnufied/community/contributors","subscribers_url":"https://api.github.com/repos/gnufied/community/subscribers","subscription_url":"https://api.github.com/repos/gnufied/community/subscription","commits_url":"https://api.github.com/repos/gnufied/community/commits{/sha}","git_commits_url":"https://api.github.com/repos/gnufied/community/git/commits{/sha}","comments_url":"https://api.github.com/repos/gnufied/community/comments{/number}","issue_comment_url":"https://api.github.com/repos/gnufied/community/issues/comments{/number}","contents_url":"https://api.github.com/repos/gnufied/community/contents/{+path}","compare_url":"https://api.github.com/repos/gnufied/community/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gnufied/community/merges","archive_url":"https://api.github.com/repos/gnufied/community/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gnufied/community/downloads","issues_url":"https://api.github.com/repos/gnufied/community/issues{/number}","pulls_url":"https://api.github.com/repos/gnufied/community/pulls{/number}","milestones_url":"https://api.github.com/repos/gnufied/community/milestones{/number}","notifications_url":"https://api.github.com/repos/gnufied/community/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gnufied/community/labels{/name}","releases_url":"https://api.github.com/repos/gnufied/community/releases{/id}","deployments_url":"https://api.github.com/repos/gnufied/community/deployments","created_at":"2017-01-05T21:11:59Z","updated_at":"2017-01-05T21:12:02Z","pushed_at":"2017-01-25T22:54:16Z","git_url":"git://github.com/gnufied/community.git","ssh_url":"git@github.com:gnufied/community.git","clone_url":"https://github.com/gnufied/community.git","svn_url":"https://github.com/gnufied/community","homepage":"","size":7006,"stargazers_count":0,"watchers_count":0,"language":"Makefile","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"kubernetes:master","ref":"master","sha":"53b81981ee50a637a0a7d697434b4db6ad6cc50b","user":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"repo":{"id":57939112,"name":"community","full_name":"kubernetes/community","owner":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kubernetes/community","description":"Kubernetes community content","fork":false,"url":"https://api.github.com/repos/kubernetes/community","forks_url":"https://api.github.com/repos/kubernetes/community/forks","keys_url":"https://api.github.com/repos/kubernetes/community/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/community/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/community/teams","hooks_url":"https://api.github.com/repos/kubernetes/community/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/community/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/community/events","assignees_url":"https://api.github.com/repos/kubernetes/community/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/community/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/community/tags","blobs_url":"https://api.github.com/repos/kubernetes/community/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/community/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/community/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/community/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/community/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/community/languages","stargazers_url":"https://api.github.com/repos/kubernetes/community/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/community/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/community/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/community/subscription","commits_url":"https://api.github.com/repos/kubernetes/community/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/community/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/community/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/community/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/community/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/community/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/community/merges","archive_url":"https://api.github.com/repos/kubernetes/community/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/community/downloads","issues_url":"https://api.github.com/repos/kubernetes/community/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/community/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/community/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/community/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/community/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/community/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/community/deployments","created_at":"2016-05-03T03:36:05Z","updated_at":"2017-01-25T18:15:50Z","pushed_at":"2017-01-26T00:24:46Z","git_url":"git://github.com/kubernetes/community.git","ssh_url":"git@github.com:kubernetes/community.git","clone_url":"https://github.com/kubernetes/community.git","svn_url":"https://github.com/kubernetes/community","homepage":"","size":7098,"stargazers_count":152,"watchers_count":152,"language":"Makefile","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":160,"mirror_url":null,"open_issues_count":57,"forks":160,"open_issues":57,"watchers":152,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/community/pulls/288"},"html":{"href":"https://github.com/kubernetes/community/pull/288"},"issue":{"href":"https://api.github.com/repos/kubernetes/community/issues/288"},"comments":{"href":"https://api.github.com/repos/kubernetes/community/issues/288/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/community/pulls/288/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/community/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/community/pulls/288/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/community/statuses/cfb95cbdbc21dee9fdc3aed6f9a7d56218192ddf"}}}}
{"actor":{"display_login":"saad-ali"}}