{"action":"created","comment":{"url":"https://api.github.com/repos/openshift/openshift-docs/pulls/comments/77648911","id":77648911,"diff_hunk":"@@ -0,0 +1,254 @@\n+[[install-config-aggregate-logging-sizing]]\n+= Aggregate Logging Sizing Guidelines \n+:data-uri:\n+:icons:\n+:experimental:\n+:toc: macro\n+:toc-title:\n+:prewrap!:\n+\n+toc::[]\n+\n+== Overview\n+The xref:../install_config/aggregate_logging.adoc#overview[ElasticSearch, Fluentd and Kibana] (EFK) stack aggregates logs from nodes and applications running inside your {product-title} installation.\n+Once deployed it uses link:http://www.fluentd.org/architecture[Fluentd] to aggregate event logs from all nodes, projects and pods into link:https://www.elastic.co/products/elasticsearch[Elasticsearch]. It also provides a centralized link:https://www.elastic.co/guide/en/kibana/current/introduction.html[Kibana] web UI where users and administrators can create rich visualizations and dashboards with the aggregated data.\n+\n+Fluentd link:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html[bulk uploads] logs to an index, in json format, and ElasticSearch then routes your search requests to the appropriate shards.\n+\n+[[install-config-aggregate-logging-sizing-guidelines-installation]]\n+== Installation\n+The general procedure for installing an aggregate logging stack in {product-title} is described in xref:../install_config/aggregate_logging.adoc[Aggregating Container Logs].\n+There are some important things to keep in mind while going through the installation guide:\n+\n+In order for the logging pods to spread evenly across your cluster, an empty xref:../admin_guide/managing_projects.adoc#using-node-selectors[node selector] should be used.\n+\n+----\n+$ oadm new-project logging --node-selector=\"\"\n+----\n+\n+In conjunction with node labeling, which is done later, this controls pod placement across the logging project. +\n+You can now create the logging project.\n+\n+----\n+$ oc project logging\n+----\n+\n+If you are installing in a PoC or testing environment, a local openshift-ansible template install is recommended.\n+\n+----\n+$ oc create -f ${OPENSHIFT_ANSIBLE_REPO}/roles/openshift_examples/files/examples/${VERSION}/infrastructure-templates/origin/logging-deployer.yaml\n+----\n+\n+Elasticsearch (ES) should be deployed with a cluster size of at least three for resiliency to node failures. This is specified by passing the `*ES_CLUSTER_SIZE*` parameter to the installer.\n+\n+----\n+$ oc new-app logging-deployer-template \\\n+                        --param ES_CLUSTER_SIZE=3 \\\n+                        --param PUBLIC_MASTER_URL=$PUBLIC_MASTER_URL \\\n+                        --param KIBANA_HOSTNAME=$KIBANA_URL\n+----\n+\n+Refer to xref:../install_config/aggregate_logging.adoc#deploying-the-efk-stack[Deploying the EFK Stack] for a full list of parameters. +\n+ +\n+If you do not have an existing Kibana installation, you can use *kibana.example.com* as a value to `*KIBANA_HOSTNAME*`. +\n+Now ensure Fluentd pod spreading through labeling.\n+\n+----\n+$ oc label nodes --all logging-infra-fluentd=true\n+----\n+\n+This operation requires the `cluster-admin` default role. +\n+Installation can take some time depending on whether the images were already retrieved from the registry or not, and on the size of your cluster. \n+\n+\n+Inside the *logging* namespace, you can check your deployment with `oc get all`.\n+\n+----\n+$ oc get all\n+\n+NAME                          REVISION                 REPLICAS      TRIGGERED BY\n+logging-curator               1                        1             \n+logging-es-6cvk237t           1                        1             \n+logging-es-e5x4t4ai           1                        1             \n+logging-es-xmwvnorv           1                        1             \n+logging-kibana                1                        1             \n+NAME                          DESIRED                  CURRENT       AGE\n+logging-curator-1             1                        1             3d\n+logging-es-6cvk237t-1         1                        1             3d\n+logging-es-e5x4t4ai-1         1                        1             3d\n+logging-es-xmwvnorv-1         1                        1             3d\n+logging-kibana-1              1                        1             3d\n+NAME                          HOST/PORT                PATH          SERVICE              TERMINATION   LABELS\n+logging-kibana                kibana.example.com                     logging-kibana       reencrypt     component=support,logging-infra=support,provider=openshift\n+logging-kibana-ops            kibana-ops.example.com                 logging-kibana-ops   reencrypt     component=support,logging-infra=support,provider=openshift\n+NAME                          CLUSTER-IP               EXTERNAL-IP   PORT(S)              AGE\n+logging-es                    172.24.155.177           <none>        9200/TCP             3d\n+logging-es-cluster            None                     <none>        9300/TCP             3d\n+logging-es-ops                172.27.197.57            <none>        9200/TCP             3d\n+logging-es-ops-cluster        None                     <none>        9300/TCP             3d\n+logging-kibana                172.27.224.55            <none>        443/TCP              3d\n+logging-kibana-ops            172.25.117.77            <none>        443/TCP              3d\n+NAME                          READY                    STATUS        RESTARTS             AGE\n+logging-curator-1-6s7wy       1/1                      Running       0                    3d\n+logging-deployer-un6ut        0/1                      Completed     0                    3d\n+logging-es-6cvk237t-1-cnpw3   1/1                      Running       0                    3d\n+logging-es-e5x4t4ai-1-v933h   1/1                      Running       0                    3d\n+logging-es-xmwvnorv-1-adr5x   1/1                      Running       0                    3d\n+logging-fluentd-156xn         1/1                      Running       0                    3d\n+logging-fluentd-40biz         1/1                      Running       0                    3d\n+logging-fluentd-7dtom         0/1                      Pending       0                    2d\n+logging-fluentd-8k847         1/1                      Running       0                    3d\n+----\n+\n+You should end up with a similar setup to the below.\n+\n+----\n+$ oc get pods -o wide\n+\n+NAME                          READY     STATUS      RESTARTS   AGE       NODE\n+logging-curator-1-6s7wy       1/1       Running     0          3d        ip-172-31-24-239.us-west-2.compute.internal\n+logging-deployer-un6ut        0/1       Completed   0          3d        ip-172-31-6-152.us-west-2.compute.internal\n+logging-es-6cvk237t-1-cnpw3   1/1       Running     0          3d        ip-172-31-24-238.us-west-2.compute.internal\n+logging-es-e5x4t4ai-1-v933h   1/1       Running     0          3d        ip-172-31-24-235.us-west-2.compute.internal\n+logging-es-xmwvnorv-1-adr5x   1/1       Running     0          3d        ip-172-31-24-233.us-west-2.compute.internal\n+logging-fluentd-156xn         1/1       Running     0          3d        ip-172-31-24-241.us-west-2.compute.internal\n+logging-fluentd-40biz         1/1       Running     0          3d        ip-172-31-24-236.us-west-2.compute.internal\n+logging-fluentd-7dtom         0/1       Pending     0          2d        ip-172-31-24-243.us-west-2.compute.internal\n+logging-fluentd-8k847         1/1       Running     0          3d        ip-172-31-24-237.us-west-2.compute.internal\n+logging-fluentd-9a3qx         1/1       Running     0          3d        ip-172-31-24-231.us-west-2.compute.internal\n+logging-fluentd-abvgj         1/1       Running     0          3d        ip-172-31-24-228.us-west-2.compute.internal\n+logging-fluentd-bh74n         1/1       Running     0          3d        ip-172-31-24-238.us-west-2.compute.internal\n+...\n+...\n+\n+----\n+\n+Notice how the pods are placed in different cluster nodes. +\n+\n+\n+By default the amount of RAM allocated to each ES instance is 8GB. `*ES_INSTANCE_RAM*` is the parameter used in the openshift-ansible link:https://github.com/openshift/openshift-ansible/blob/master/roles/openshift_examples/files/examples/v1.3/infrastructure-templates/enterprise/logging-deployer.yaml[template]. Keep in mind that *half* of this value will be passed to the individual elasticsearch pods java processes link:https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html#_give_half_your_memory_to_lucene[heap size].\n+\n+Further information regarding installing EFK can be found in the openshift-docs repository xref:../install_config/aggregate_logging.adoc[documentation]. \n+\n+[[install-config-aggregate-logging-sizing-guidelines-rate-limiting]]\n+== Systemd-journald and rsyslog \n+\n+*Rate-limiting*\n+\n+In RHEL7 the `systemd-journald.socket` unit creates `/dev/log` during the boot process, and then passes input to systemd-journald.service. Every `syslog()` call goes to the journal. +\n+Rsyslog uses the `imjournal` module as a default input mode for journal files. Refer to link:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html-single/System_Administrators_Guide/index.html#s1-interaction_of_rsyslog_and_journal[Interaction of rsyslog and journal] for detailed information about this topic.\n+\n+We have used a simple test harness which uses link:http://linux.die.net/man/1/logger[logger] across the cluster nodes to make entries of different sizes at different rates in the system log. During testing simulations under a default RHEL7 installation with `systemd-219-19.el7.x86_64` at certain logging rates (~40 log lines per second), we encountered the default rate limit of `rsyslogd`. After adjusting these limits, we noticed that entries stopped being written to journald due to local journal file corruption.  This issue is resolved in later versions of systemd: link:https://rhn.redhat.com/errata/RHBA-2016-1026.html[errata]\n+\n+*Scaling up* +\n+\n+As you scale up your project, the default logging environment might need some adjustments.\n+After updating to `systemd-219-22.el7.x86_64`, we've added:\n+\n+----\n+$IMUXSockRateLimitInterval 0\n+$IMJournalRatelimitInterval 0\n+----\n+\n+to `/etc/rsyslog.conf` and:\n+\n+----\n+# Disable rate limiting\n+RateLimitInterval=1s\n+RateLimitBurst=10000\n+Storage=volatile\n+Compress=no\n+MaxRetentionSec=5s\n+----\n+\n+to `/etc/systemd/journald.conf`. \n+\n+Now restart the services.\n+\n+----\n+$ systemctl restart systemd-journald.service\n+$ systemctl restart rsyslog.service\n+----\n+\n+These settings account for the 'bursty' nature of uploading in bulk.\n+After removing the rate limit, you may see increased CPU utilization on the system logging daemons as it processes any messages that would have previously been throttled.\n+\n+\n+Rsyslog is configured (see ratelimit.interval, ratelimit.burst) to rate-limit entries read from the journal at 10,000 messages in 300 seconds. A good rule of thumb is to ensure that the rsyslog rate-limits account for the systemd-journald rate-limits.\n+\n+[[install-config-aggregate-logging-sizing-guidelines-scaling-up]]\n+== Scaling up EFK logging \n+\n+If you don't indicate the desired scale at first deployment, the least disruptive way of adjusting your cluster is by re-running the deployer with the updated `*ES_CLUSTER_SIZE*` value and using the `MODE=reinstall` template parameter. Refer to the developers xref:../install_config/aggregate_logging.adoc#aggregate-logging-performing-elasticsearch-maintenance-operations[documentation] for more in depth information about this topic.\n+\n+----\n+$ oc edit configmap logging-deployer\n+  [change es-cluster-size value to 5]\n+\n+$ oc new-app logging-deployer-template --param MODE=reinstall\n+----\n+\n+[[install-config-aggregate-logging-sizing-guidelines-storage]]\n+== Storage Considerations \n+An Elasticsearch index is a collection of shards and its corresponding replica shards. This is how ES implements high availability internally, therefore there is little need to use hardware based mirroring RAID variants. RAID 0 can still be used to increase overall disk performance. +\n+Every search request needs to hit a copy of every shard in the index.\n+Each ES instance requires its own individual storage, but an {product-title} deployment can only provide volumes shared by all of its pods, which again means that Elasticsearch shouldn't be implemented with a single node. +\n+\n+A xref:../install_config/persistent_storage/index.adoc#install-config-persistent-storage-index[persistent volume] should be added to each Elasticsearch deployment configuration so that we have one volume per link:https://www.elastic.co/guide/en/elasticsearch/guide/current/replica-shards.html[replica shard]. On {product-title} this is often achieved through xref:../architecture/additional_concepts/storage.adoc#persistent-volume-claims[Persistent Volume Claims] +\n+\n+* 1 volume per shard\n+\n+* 1 volume per replica shard\n+  \n+The PVCs must be named based on the `es-pvc-prefix` setting. Refer to xref:../install_config/aggregate_logging.adoc#overview[Persistent Elasticsearch Storage] for more details. Below are capacity planning guidelines for {product-title} Aggregated Logging.\n+\n+*Example scenario*\n+\n+Assumptions: +\n+1) Which app: Apache +\n+2) Bytes per line: 256 +\n+3) Lines per second load on app: 1 +\n+4) Raw text data -> json +\n+\n+\n+Baseline (256 characters per minute -> 15KB/min)\n+\n+[cols=\"3,4\",options=\"header\"]\n+|===\n+|Logging infra pods\n+|Storage throughput\n+\n+|3 es +\n+1 kibana +\n+1 curator +\n+1 fluentd +\n+| 6 pods total: 90000 x 86400 = 7,7 GB/day\n+\n+|3 es +\n+1 kibana +\n+1 curator +\n+11 fluentd \n+| 16 pods total: 225000 x 86400 = 24,0 GB/day\n+\n+|3 es +\n+1 kibana +\n+1 curator +\n+20 fluentd \n+|25 pods total: 225000 x 86400 = 32,4 GB/day\n+|===\n+\n+\n+Calculating total logging throughput and disk space required for your logging environment requires knowledge of your application. For example, if one of your applications on average logs 10 lines-per-second, each 256 bytes-per-line, calculate per-application throughput and disk space as follows:\n+\n+----\n+ (bytes-per-line * (lines-per-second) = 2560 bytes per app per second\n+ (2560) * (number-of-pods-per-node,100) = 256,000 bytes per second per node\n+ 256k * (number-of-nodes) = total logging throughput per cluster\n+----\n+\n+Fluentd ships any logs from `/var/log/messages` and `/var/lib/docker/containers/*` to Elasticsearch. +\n+More details xref:../install_config/install/prerequisites.adoc#managing-docker-container-logs[here].","path":"install_config/aggregate_logging_sizing.adoc","position":250,"original_position":250,"commit_id":"bb846c81cd94f3e355743a3db5c83cb7e8bfc230","original_commit_id":"bb846c81cd94f3e355743a3db5c83cb7e8bfc230","user":{"login":"ahardin-rh","id":16197393,"avatar_url":"https://avatars.githubusercontent.com/u/16197393?v=3","gravatar_id":"","url":"https://api.github.com/users/ahardin-rh","html_url":"https://github.com/ahardin-rh","followers_url":"https://api.github.com/users/ahardin-rh/followers","following_url":"https://api.github.com/users/ahardin-rh/following{/other_user}","gists_url":"https://api.github.com/users/ahardin-rh/gists{/gist_id}","starred_url":"https://api.github.com/users/ahardin-rh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahardin-rh/subscriptions","organizations_url":"https://api.github.com/users/ahardin-rh/orgs","repos_url":"https://api.github.com/users/ahardin-rh/repos","events_url":"https://api.github.com/users/ahardin-rh/events{/privacy}","received_events_url":"https://api.github.com/users/ahardin-rh/received_events","type":"User","site_admin":false},"body":"Reword this directive. Perhaps:\r\nxref:../install_config/install/prerequisites.adoc#managing-docker-container-log[Learn more].","created_at":"2016-09-06T14:43:15Z","updated_at":"2016-09-06T14:43:15Z","html_url":"https://github.com/openshift/openshift-docs/pull/2723#discussion_r77648911","pull_request_url":"https://api.github.com/repos/openshift/openshift-docs/pulls/2723","_links":{"self":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/comments/77648911"},"html":{"href":"https://github.com/openshift/openshift-docs/pull/2723#discussion_r77648911"},"pull_request":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/2723"}}},"pull_request":{"url":"https://api.github.com/repos/openshift/openshift-docs/pulls/2723","id":82541830,"html_url":"https://github.com/openshift/openshift-docs/pull/2723","diff_url":"https://github.com/openshift/openshift-docs/pull/2723.diff","patch_url":"https://github.com/openshift/openshift-docs/pull/2723.patch","issue_url":"https://api.github.com/repos/openshift/openshift-docs/issues/2723","number":2723,"state":"open","locked":false,"title":"Aggregate logging sizing guidelines","user":{"login":"rflorenc","id":14233925,"avatar_url":"https://avatars.githubusercontent.com/u/14233925?v=3","gravatar_id":"","url":"https://api.github.com/users/rflorenc","html_url":"https://github.com/rflorenc","followers_url":"https://api.github.com/users/rflorenc/followers","following_url":"https://api.github.com/users/rflorenc/following{/other_user}","gists_url":"https://api.github.com/users/rflorenc/gists{/gist_id}","starred_url":"https://api.github.com/users/rflorenc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rflorenc/subscriptions","organizations_url":"https://api.github.com/users/rflorenc/orgs","repos_url":"https://api.github.com/users/rflorenc/repos","events_url":"https://api.github.com/users/rflorenc/events{/privacy}","received_events_url":"https://api.github.com/users/rflorenc/received_events","type":"User","site_admin":false},"body":"@timothysc \r\n@jeremyeder \r\n@jmencak ","created_at":"2016-08-24T13:29:27Z","updated_at":"2016-09-06T14:43:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"eb233f398b404d6142225513cf404ddce20601d2","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/openshift/openshift-docs/pulls/2723/commits","review_comments_url":"https://api.github.com/repos/openshift/openshift-docs/pulls/2723/comments","review_comment_url":"https://api.github.com/repos/openshift/openshift-docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openshift/openshift-docs/issues/2723/comments","statuses_url":"https://api.github.com/repos/openshift/openshift-docs/statuses/bb846c81cd94f3e355743a3db5c83cb7e8bfc230","head":{"label":"rflorenc:efk_cp_docs","ref":"efk_cp_docs","sha":"bb846c81cd94f3e355743a3db5c83cb7e8bfc230","user":{"login":"rflorenc","id":14233925,"avatar_url":"https://avatars.githubusercontent.com/u/14233925?v=3","gravatar_id":"","url":"https://api.github.com/users/rflorenc","html_url":"https://github.com/rflorenc","followers_url":"https://api.github.com/users/rflorenc/followers","following_url":"https://api.github.com/users/rflorenc/following{/other_user}","gists_url":"https://api.github.com/users/rflorenc/gists{/gist_id}","starred_url":"https://api.github.com/users/rflorenc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rflorenc/subscriptions","organizations_url":"https://api.github.com/users/rflorenc/orgs","repos_url":"https://api.github.com/users/rflorenc/repos","events_url":"https://api.github.com/users/rflorenc/events{/privacy}","received_events_url":"https://api.github.com/users/rflorenc/received_events","type":"User","site_admin":false},"repo":{"id":66082886,"name":"openshift-docs","full_name":"rflorenc/openshift-docs","owner":{"login":"rflorenc","id":14233925,"avatar_url":"https://avatars.githubusercontent.com/u/14233925?v=3","gravatar_id":"","url":"https://api.github.com/users/rflorenc","html_url":"https://github.com/rflorenc","followers_url":"https://api.github.com/users/rflorenc/followers","following_url":"https://api.github.com/users/rflorenc/following{/other_user}","gists_url":"https://api.github.com/users/rflorenc/gists{/gist_id}","starred_url":"https://api.github.com/users/rflorenc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rflorenc/subscriptions","organizations_url":"https://api.github.com/users/rflorenc/orgs","repos_url":"https://api.github.com/users/rflorenc/repos","events_url":"https://api.github.com/users/rflorenc/events{/privacy}","received_events_url":"https://api.github.com/users/rflorenc/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rflorenc/openshift-docs","description":"OpenShift Documentation","fork":true,"url":"https://api.github.com/repos/rflorenc/openshift-docs","forks_url":"https://api.github.com/repos/rflorenc/openshift-docs/forks","keys_url":"https://api.github.com/repos/rflorenc/openshift-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rflorenc/openshift-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rflorenc/openshift-docs/teams","hooks_url":"https://api.github.com/repos/rflorenc/openshift-docs/hooks","issue_events_url":"https://api.github.com/repos/rflorenc/openshift-docs/issues/events{/number}","events_url":"https://api.github.com/repos/rflorenc/openshift-docs/events","assignees_url":"https://api.github.com/repos/rflorenc/openshift-docs/assignees{/user}","branches_url":"https://api.github.com/repos/rflorenc/openshift-docs/branches{/branch}","tags_url":"https://api.github.com/repos/rflorenc/openshift-docs/tags","blobs_url":"https://api.github.com/repos/rflorenc/openshift-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rflorenc/openshift-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rflorenc/openshift-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/rflorenc/openshift-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rflorenc/openshift-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/rflorenc/openshift-docs/languages","stargazers_url":"https://api.github.com/repos/rflorenc/openshift-docs/stargazers","contributors_url":"https://api.github.com/repos/rflorenc/openshift-docs/contributors","subscribers_url":"https://api.github.com/repos/rflorenc/openshift-docs/subscribers","subscription_url":"https://api.github.com/repos/rflorenc/openshift-docs/subscription","commits_url":"https://api.github.com/repos/rflorenc/openshift-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/rflorenc/openshift-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/rflorenc/openshift-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/rflorenc/openshift-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/rflorenc/openshift-docs/contents/{+path}","compare_url":"https://api.github.com/repos/rflorenc/openshift-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rflorenc/openshift-docs/merges","archive_url":"https://api.github.com/repos/rflorenc/openshift-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rflorenc/openshift-docs/downloads","issues_url":"https://api.github.com/repos/rflorenc/openshift-docs/issues{/number}","pulls_url":"https://api.github.com/repos/rflorenc/openshift-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/rflorenc/openshift-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/rflorenc/openshift-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rflorenc/openshift-docs/labels{/name}","releases_url":"https://api.github.com/repos/rflorenc/openshift-docs/releases{/id}","deployments_url":"https://api.github.com/repos/rflorenc/openshift-docs/deployments","created_at":"2016-08-19T13:05:10Z","updated_at":"2016-08-19T13:05:12Z","pushed_at":"2016-09-01T11:54:41Z","git_url":"git://github.com/rflorenc/openshift-docs.git","ssh_url":"git@github.com:rflorenc/openshift-docs.git","clone_url":"https://github.com/rflorenc/openshift-docs.git","svn_url":"https://github.com/rflorenc/openshift-docs","homepage":"https://docs.openshift.org/latest/welcome/index.html","size":16687,"stargazers_count":0,"watchers_count":0,"language":"CSS","has_issues":false,"has_downloads":true,"has_wiki":false,"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":"openshift:master","ref":"master","sha":"f4a86284e4d5e946bac817d524937125a18a1941","user":{"login":"openshift","id":792337,"avatar_url":"https://avatars.githubusercontent.com/u/792337?v=3","gravatar_id":"","url":"https://api.github.com/users/openshift","html_url":"https://github.com/openshift","followers_url":"https://api.github.com/users/openshift/followers","following_url":"https://api.github.com/users/openshift/following{/other_user}","gists_url":"https://api.github.com/users/openshift/gists{/gist_id}","starred_url":"https://api.github.com/users/openshift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openshift/subscriptions","organizations_url":"https://api.github.com/users/openshift/orgs","repos_url":"https://api.github.com/users/openshift/repos","events_url":"https://api.github.com/users/openshift/events{/privacy}","received_events_url":"https://api.github.com/users/openshift/received_events","type":"Organization","site_admin":false},"repo":{"id":21740844,"name":"openshift-docs","full_name":"openshift/openshift-docs","owner":{"login":"openshift","id":792337,"avatar_url":"https://avatars.githubusercontent.com/u/792337?v=3","gravatar_id":"","url":"https://api.github.com/users/openshift","html_url":"https://github.com/openshift","followers_url":"https://api.github.com/users/openshift/followers","following_url":"https://api.github.com/users/openshift/following{/other_user}","gists_url":"https://api.github.com/users/openshift/gists{/gist_id}","starred_url":"https://api.github.com/users/openshift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openshift/subscriptions","organizations_url":"https://api.github.com/users/openshift/orgs","repos_url":"https://api.github.com/users/openshift/repos","events_url":"https://api.github.com/users/openshift/events{/privacy}","received_events_url":"https://api.github.com/users/openshift/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/openshift/openshift-docs","description":"OpenShift Documentation","fork":false,"url":"https://api.github.com/repos/openshift/openshift-docs","forks_url":"https://api.github.com/repos/openshift/openshift-docs/forks","keys_url":"https://api.github.com/repos/openshift/openshift-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openshift/openshift-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openshift/openshift-docs/teams","hooks_url":"https://api.github.com/repos/openshift/openshift-docs/hooks","issue_events_url":"https://api.github.com/repos/openshift/openshift-docs/issues/events{/number}","events_url":"https://api.github.com/repos/openshift/openshift-docs/events","assignees_url":"https://api.github.com/repos/openshift/openshift-docs/assignees{/user}","branches_url":"https://api.github.com/repos/openshift/openshift-docs/branches{/branch}","tags_url":"https://api.github.com/repos/openshift/openshift-docs/tags","blobs_url":"https://api.github.com/repos/openshift/openshift-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openshift/openshift-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openshift/openshift-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/openshift/openshift-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openshift/openshift-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/openshift/openshift-docs/languages","stargazers_url":"https://api.github.com/repos/openshift/openshift-docs/stargazers","contributors_url":"https://api.github.com/repos/openshift/openshift-docs/contributors","subscribers_url":"https://api.github.com/repos/openshift/openshift-docs/subscribers","subscription_url":"https://api.github.com/repos/openshift/openshift-docs/subscription","commits_url":"https://api.github.com/repos/openshift/openshift-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/openshift/openshift-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/openshift/openshift-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/openshift/openshift-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/openshift/openshift-docs/contents/{+path}","compare_url":"https://api.github.com/repos/openshift/openshift-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openshift/openshift-docs/merges","archive_url":"https://api.github.com/repos/openshift/openshift-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openshift/openshift-docs/downloads","issues_url":"https://api.github.com/repos/openshift/openshift-docs/issues{/number}","pulls_url":"https://api.github.com/repos/openshift/openshift-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/openshift/openshift-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/openshift/openshift-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openshift/openshift-docs/labels{/name}","releases_url":"https://api.github.com/repos/openshift/openshift-docs/releases{/id}","deployments_url":"https://api.github.com/repos/openshift/openshift-docs/deployments","created_at":"2014-07-11T15:14:42Z","updated_at":"2016-08-03T17:10:01Z","pushed_at":"2016-09-06T13:59:12Z","git_url":"git://github.com/openshift/openshift-docs.git","ssh_url":"git@github.com:openshift/openshift-docs.git","clone_url":"https://github.com/openshift/openshift-docs.git","svn_url":"https://github.com/openshift/openshift-docs","homepage":"https://docs.openshift.org/latest/welcome/index.html","size":23776,"stargazers_count":51,"watchers_count":51,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":252,"mirror_url":null,"open_issues_count":208,"forks":252,"open_issues":208,"watchers":51,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/2723"},"html":{"href":"https://github.com/openshift/openshift-docs/pull/2723"},"issue":{"href":"https://api.github.com/repos/openshift/openshift-docs/issues/2723"},"comments":{"href":"https://api.github.com/repos/openshift/openshift-docs/issues/2723/comments"},"review_comments":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/2723/comments"},"review_comment":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openshift/openshift-docs/pulls/2723/commits"},"statuses":{"href":"https://api.github.com/repos/openshift/openshift-docs/statuses/bb846c81cd94f3e355743a3db5c83cb7e8bfc230"}}}}
{"actor":{"display_login":"ahardin-rh"}}