{"id":4997,"date":"2023-01-17T08:00:00","date_gmt":"2023-01-17T08:00:00","guid":{"rendered":"http:\/\/www.sumologic.com\/blog\/kubernetes-logs"},"modified":"2025-06-17T11:24:35","modified_gmt":"2025-06-17T19:24:35","slug":"kubernetes-logs","status":"publish","type":"blog","link":"https:\/\/www.sumologic.com\/blog\/kubernetes-logs","title":{"rendered":"Logging and monitoring Kubernetes"},"content":{"rendered":"\n<section class=\"e-stn e-stn-0d652506f82b000a392973813b918ee25d5b4211 e-stn--glossary-inner-content e-stn--table-of-content\"><div class=\"container\">\n<div class=\"wp-block-b3rg-row e-row row\">\n<div class=\"wp-block-b3rg-column e-col e-col-1f7b3997080fc292474d26ff00c905d99d3520fa e-col--content-wrapper  col-sm-12 col-lg-12 col-xl-12\">\n<div class=\"e-div e-div-a1b32f66e1749758df41d5aea14f647cd10e362c e-div--card-btn-link\"><div class=\"e-img \">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1400\" height=\"400\" src=\"http:\/\/www.sumologic.com\/wp-content\/uploads\/KubernetesLogMonitor_blog_700x200-1.png\" alt=\"Kubernetes Logging Monitoring\" class=\"wp-image-4992\" title=\"\"><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-24c3ab8f937155c07d9b0e4e4605704a\">Kubernetes is first and foremost an orchestration engine that has well-defined interfaces that allow for a wide variety of plugins and integrations to make it the industry-leading platform in the battle to run the world&#8217;s workloads. From&nbsp;<a href=\"https:\/\/developer.nvidia.com\/kubernetes-gpu\" target=\"_blank\" rel=\"noopener\">machine learning<\/a> to&nbsp;<a href=\"https:\/\/medium.com\/@cfatechblog\/bare-metal-k8s-clustering-at-chick-fil-a-scale-7b0607bd3541\" target=\"_blank\" rel=\"noopener\">running the applications a restaurant needs<\/a>, you can see that just about everything now uses Kubernetes infrastructure.<br><\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-d893c6324908a407508739cc5dce422f\">All these workloads, and the Kubernetes operator itself, produce output that is most often in the form of logs. Kubernetes infrastructure has very difficult to view &#8211; and in some cases collect &#8211; internal logs and the logs generated by all the individual workloads it is running. Most often, difficulty viewing Kubernetes metrics and logs is due to ephemeral containers. <\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-b6c100bfad9d7f0f16d91cb849a492d4\">This article will cover how <a href=\"https:\/\/www.sumologic.com\/glossary\/kubernetes-monitoring\/\">Kubernetes monitoring<\/a> is structured with logs, how to use its native functionality, and how to use a third-party logging engine to really enhance what can be done with logs generated from cloud-native environments. Lastly, this article will cover how to visualize deployment metrics in a Kubernetes dashboard designed to tell you everything that happens within a <a href=\"https:\/\/www.sumologic.com\/glossary\/docker\/\">Docker<\/a> container (with logs).<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-b0d38e96f0ef30540860c54bfef07ff1\" id=\"basic_logging_architecture_and_node-level_logging_in_kubernetes\"><strong>Basic logging architecture and node-level logging in Kubernetes<\/strong><\/h2>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-6130200f4a9c2d2cc83ac415f03efbad\"><a href=\"https:\/\/www.sumologic.com\/blog\/kubectl-logs\/\">Kubectl<\/a> (pronounced &#8220;cube CTL&#8221;, &#8220;kube control&#8221;, &#8220;cube cuttle&#8221;, &#8230;) is a robust command line interface that runs commands against the Kubernetes cluster and controls the cluster manager. Since the command line interface (CLI) is essentially a wrapper around the Kubernetes API, you can do everything directly with the <a href=\"https:\/\/www.sumologic.com\/glossary\/api\/\">API<\/a> instead of using the CLI, if it suits your purposes.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a49d6d35dfaa4ff1eadc7c109cfb63e4\">The most basic form of logging in Kubernetes is the output generated by individual containers using stdout and stderr. The output for the currently running container instance is available to be accessed via the kubectl logs command.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-1abc3b4b2a616357ff77e7510f2b044b\">The next level up of logging in the Kubernetes node world is called &#8220;node level logging&#8221;. This is broken down into two components: the actual log files being stored; and the Kubernetes side, which allows the logs to be viewed remotely and removed, under certain circumstances.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-ceb7f93d79e5c4cb88876069a350c179\">The actual files are created by the container runtime engine &#8211; like the Docker container &#8211; and contain the output from stdout and stderr. There are files for every running container on the host, and these are what Kubernetes reads when kubectl logs are run. Kubernetes is configured to know where to find these log files and how to read them through the appropriate log driver, which is specific to the container runtime.<br><\/p>\n\n\n<div class=\"e-img \">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"350\" src=\"http:\/\/www.sumologic.com\/wp-content\/uploads\/kubernetes_node_logging.png\" alt=\"\" class=\"wp-image-4993\" title=\"\"><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-286893a6d649f14009745061ef1c35de\" id=\"log_rotating\">Log rotating<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-7f9eb3e24c025093b4f477c35945bbce\">Kubernetes has some log rotating capabilities, but it is limited to when a pod is evicted or restarted. When a pod is evicted, all logs are removed by kubelet. When a pod is restarted, kubelet keeps the current logs and the most recent version of the logs from before the restart. Any older logs are removed. This is great but does not help keep the logs from long-running pods under control.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f53667073dff5a611e49e601b99a8907\">For any live environment with a constant stream of new log entries being generated, the reality of disk space not being infinite becomes very real the first time an application crashes due to no available space. To mitigate this, it is best practice to implement some kind of log rotation on each node that will take into account both the number of pods that potentially will be run on the node and the disk space that is available to support logging. <a href=\"https:\/\/www.sumologic.com\/guides\/log-management-best-practices\/\">Learn about best practices for&nbsp;log management<\/a> in our guide.&nbsp;<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-ef6ed9a5d54fc37ec3bcdea0ec1b2f8f\">While Kubernetes itself can not handle scheduled log rotation, there are many tools available that can. One of the more popular tools is log rotate, and like most other tools in the space, it can rotate based on time (like once a day), the size of the file, or a combination of both. Using size as one of the parameters makes it possible to do capacity planning to ensure there is adequate disk space to handle all the number of pods that could potentially run any given node.<br><\/p>\n\n\n<div class=\"e-img \">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"250\" src=\"http:\/\/www.sumologic.com\/wp-content\/uploads\/kubernetes_node_log_rotating.png\" alt=\"\" class=\"wp-image-4994\" title=\"\"><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-50dc0c30f21660ba83cd06bed6aa7646\" id=\"system_components\">System components<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-769dc62a0b8b3259be33f01f8f2a1560\">There are two types of system components within Kubernetes: those that run as part of the OS, and those that run as containers managed by kubelet. As kubelet and the container runtime run as part of the operating system, their logs are consumed using the standard OS logging frameworks. As most modern Linux operating systems use systemd, all the logs are available via journalctl. In non-systemd Linux distributions, these processes create &#8220;.log&#8221; files in the \/var\/logs\/ directory.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-93d5f3b8e99586eacc2cc4d118916ec1\">The second type of system components that run as containers \u2013 like the schedule, API-manager, and cloud-controller-manager \u2013 have their logs managed by the same mechanisms as any other container on any host in that Kubernetes cluster.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-8b0ebc42ac2c60ac52bb76b0392fe9b2\" id=\"cluster-level_logging_architecture_in_kubernetes\">Cluster-level logging architecture in Kubernetes<\/h2>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-59cf156d51db35290613958c451c8b86\">A Kubernetes monitoring challenge with cluster-level logging is that Kubernetes has no native cluster-level logging. The good news is that there are a few proven methods that can be applied cluster-wide to provide the same effective result of all the logs being collected in a standardized way and sent to a central location.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-7a04b70689ec734647001f88863d940a\">The most widely-used methods are:<\/p>\n\n\n\n<ul>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-3c2e2ac801fdbd8914495c6d57ea3db5\">Configure an agent on every Kubernetes node<\/p>\n\n\n\n<\/li>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-ee37e3383dc90c706158df441de0bae3\">Include a sidecar that attaches to every Kubernetes pod<\/p>\n\n\n\n<\/li>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-cfc20c025cc4786c98d783e4829369db\">Configure every containerized application individually to ship its own logs<\/p>\n\n\n\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-cb06f38f6073f513112fbaffb97eb478\" id=\"node_logging_agent\">Node logging agent<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a5011427317ac5d3f70cccb788a5e324\">Installing a running agent on every node, preferably as a DaemonSet in Kubernetes, but it could be at the Operating System level.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-d48476cf90732ddfaeee10d23f061c13\">The benefits are that it requires no changes to the Kubernetes cluster and can be extended to capture other system logs. But the downfall is that it requires a container to run with elevated privileges to access the files that some environments will not be friendly to.<\/p>\n\n\n<div class=\"e-img \">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"250\" src=\"http:\/\/www.sumologic.com\/wp-content\/uploads\/kubernetes_node_log_agent.png\" alt=\"\" class=\"wp-image-4995\" title=\"\"><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-99870f89d9137dcde19144535c836935\" id=\"sidecar\">Sidecar<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f1315443fc0b6771aa7614c19ca6d2f6\">This actually has two options for deployment; the first is the sidecar simply diverts all the log traffic to a custom stdout file that is watched by a custom node logging agent and then shipped off. Or, the sidecar can ship traffic directly to the central logging repository.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-0c301729face4edf4743f56afbbfd6d1\">While this option requires no changes to the individual container images, it does require changes to the deployment specification for every application that is deployed. This is a great option if you can not run containers with elevated privileges, or only want to send different applications to different logs repositories. But that flexibility comes with more moving parts to configure than the node-agent option that needs to be watched.<\/p>\n\n\n<div class=\"e-img \">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"350\" src=\"http:\/\/www.sumologic.com\/wp-content\/uploads\/kubernetes_node_side_car.png\" alt=\"\" class=\"wp-image-4996\" title=\"\"><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-8f6187f007a12ed1412122a263c1a9fa\" id=\"application_customized\">Application customized<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-fbd710ad91ba16ddbbf9e7516acb0d7a\">Configuring the applications directly has the same benefits as the sidecar option listed above, and can potentially provide even more valuable information as the application development team can tailor what messages are being generated. The biggest downfall revolves around the fact it is upstream in the application lifecycle and, therefore, needs involvement from the development teams to ensure it is implemented. This leads to additional cross-team coordination and can increase timelines when changes are required, due to the nature of a larger group being involved in all related activities.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-dc4c2556dd5e8a76c9d6113f8cee9d13\" id=\"viewing_logs_with_kubernetes\">Viewing logs with Kubernetes<\/h2>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-fbe83b8921adcdc48be7441d0102644e\">Viewing logs with Kubernetes native tools is completely centered around the<a href=\"https:\/\/kubernetes.io\/docs\/reference\/kubectl\/overview\/\" target=\"_blank\" rel=\"noopener\"> kubectl<\/a> command line utility. The most useful piece of documentation around kubectl is the&nbsp;<a href=\"https:\/\/kubernetes.io\/docs\/reference\/kubectl\/cheatsheet\/\" target=\"_blank\" rel=\"noopener\">cheat sheet<\/a> that is part of the official documentation, as it tracks all the options and parameters that are available through the command.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5358c9b5ecec756937698a4b9fcd0435\">First is the most basic commands that will get used to view the logs from a known container. You can view individual log streams (stdout or stderr, for example), but most people just view all the logs for more context.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f901528b4f5dd5d19532de636c8fe288\">If you wish to follow the live stream of log entries (i.e., tail -f in Linux\/UNIX) then add the -f flag to the above command before the pod name, and it will provide the same functionality. It would look like:<\/p>\n\n\n\n<pre>$ kubectl logs -f apache-httpd-pod<\/pre>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-23be63a033fc4ec749f8489095dbfcee\">In the event that you only want to view logs that have been generated within a certain time period, then you can use the <em>&#8211;since<\/em> flag to provide that functionality. This command will pull back all log entries created in the last hour.<\/p>\n\n\n\n<pre>$ kubectl logs --since= 1 h apache-httpd-pod<\/pre>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-030506fadab62334adafd56c4d1fd94f\">If the pod has multiple containers, and the logs you need are from just one of the containers, then the logs command allows for further refinement by appending <em>-c container_name<\/em> to the end of the command.<\/p>\n\n\n\n<pre>$ kubectl logs apache-httpd-pod -c httpd-server<\/pre>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f45d8bc73e32261f89526960505746da\">Kubernetes has the ability to group pods into namespaces for segmentation and easier applications of things like role-based access control. Because of the sheer number of namespaces and pods that can often be in a Kubernetes cluster, it is a common occurrence to need to reference a pod or resource that is defined in another namespace. To access other namespaces without changing your default, you can add -n namespace_name to the beginning of a kubectl command to context switch.<\/p>\n\n\n\n<pre>$ kubectl -n f5- namespace logs nginx-pod<\/pre>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-3c543cc5d9eeba9205ae6483d32bfd18\">There are multiple other options available within logs that can be useful, including displaying logs from pods that are part of a specific deployment.<\/p>\n\n\n\n<pre>$ kubectl logs deployment\/random-deployment<\/pre>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-4f85a13fb06d6bd12ea219250ab2af39\">Beyond the logs, which have some traces in them, if you want to get more metrics to see the holistic view of the cluster and get closer to the idea of the&nbsp;<a href=\"https:\/\/www.oreilly.com\/library\/view\/distributed-systems-observability\/9781492033431\/ch04.html\" target=\"_blank\" rel=\"noopener\">Three Pillars of Observability<\/a>, you can use additional commands like kubectl get pods to list running pods and kubectl top to see how many resources are being used by individual pods or nodes in the cluster.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-0eea8b60fdc7a5d65eb1778365a072ee\" id=\"example_of_creating_and_collecting_application_logs_in_kubernetes\">Example of creating and collecting application logs in Kubernetes<\/h2>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-092abf086ee427a862b38806f3ab5012\">To show what logging looks like in Kubernetes, we first need to create a pod that will generate logs. For this purpose, we will create a simple pod using busybox that will run a continuous loop, and output the current date and time every second.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-d6377229ed2fde10ff34ba14c71ae348\">The command<\/p>\n\n\n\n<pre>$ cat &lt;&lt;EOF | kubectl apply -f -\r\napiVersion: v1\r\nkind: Pod\r\nmetadata:\r\nname: counter\r\nspec:\r\ncontainers:\r\n- name: count\r\nimage: busybox\r\nargs: [\/bin\/sh, -c,\r\n'i=0; while true; do echo \"$i: $(date)\"; i=$((i+1)); sleep 1; done']\r\nEOF<\/pre>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-d305634ec899b5cf528d1cce6e4a5331\">Will create one pod<\/p>\n\n\n\n<pre>pod\/counter created<\/pre>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-d04a07fb9095a00eed5a4e6256cad32d\">The output from these logs will look like<\/p>\n\n\n\n<pre>$ kubectl logs counter\r\n0: Mon Jan 1 00:00:00 UTC 2001\r\n1: Mon Jan 1 00:00:01 UTC 2001\r\n2: Mon Jan 1 00:00:02 UTC 2001<\/pre>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-3d83b92eda5eed57bc08fafa4321f5df\">Next step is to configure node-level logging so we can see and ship all the logs on each node to a central server. To do this with Fluentd requires it to have a namespace, a secret with several variables set for things like log target and api keys, and finally the actual deployment of Fluentd using something like a DaemonSet so it runs on every node. Explicit details on the installation are maintained by <a href=\"https:\/\/github.com\/SumoLogic\/sumologic-kubernetes-collection\/tree\/master\/deploy#non-helm-installation\" target=\"_blank\" rel=\"noopener\">Sumo Logic on GitHub<\/a>.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-6bfadccb4dbf177d9fe898aa7f06a25b\">In the event that logs are produced outside of stdout and stderr, the pod will need to mount a local volume on the node so the logs are available outside of the running containers and then the logging agent &#8211; in this case Fluentd &#8211; can be configured to pick up those log files. This is done by adding a new source section to the fluentd.conf file, and restarting the service. Specific details on how this would work are located in&nbsp;<a href=\"https:\/\/docs.fluentd.org\/configuration\/config-file\" target=\"_blank\" rel=\"noopener\">Fluentd&#8217;s documentation<\/a>. The below example would pick up an Apache access_log.<\/p>\n\n\n\n<pre>&lt;source&gt;\r\n@type tail\r\npath \/mnt\/apache-httpd-pod\/httpd-server\/access_log\r\npos_file \/var\/log\/td-agent\/apache2.access_log.pos\r\n&lt;parse&gt;\r\n@type apache2\r\n&lt;\/parse&gt;\r\n&lt;\/source&gt;<\/pre>\n\n\n\n<h2 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-7f2a606a6dccba0467bcdf08e19d46b6\" id=\"collecting_logs_for_sumo_logic_and_kubernetes\"><strong>Collecting logs for Sumo Logic and Kubernetes<\/strong><\/h2>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-d3b6531ce34c7c5a8f972ec946b7f0dd\">There are two ways to enable&nbsp;<a href=\"https:\/\/help.sumologic.com\/docs\/integrations\/containers-orchestration\/kubernetes\/\" target=\"_blank\" rel=\"noopener\">collection of logs for Sumo Logic<\/a> . The first is via Helm, to install and configure the Kubernetes cluster directly, which will be the method recommended for most deployments using vanilla Kubernetes or an offering from a public cloud provider like EKS or GKE.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-56601395a78f73af0e3691374c6f3e96\">The second way is to leverage tools that may already be active in the cluster, like <a href=\"https:\/\/www.sumologic.com\/blog\/prometheus-vs-grafana\/\">Prometheus<\/a>. This will be preferred when the Kubernetes cluster is in one of the distributions that target on-premise enterprise deployments, like Red Hat OpenShift, so they automatically configure advanced monitoring services as part of cluster creation.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-28ed390b187fb252bbf24a1b704feace\" id=\"viewing_and_managing_logs_with_sumo_logic\"><strong>Viewing and managing logs with Sumo Logic<\/strong><\/h2>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-8be915b747e1ab6bd9e157405fb03680\">Sumo Logic has a platform that really helps companies see all three pillars of <a href=\"https:\/\/www.sumologic.com\/observability\/\">observability<\/a>, which are logs, metrics and traces. The<a href=\"https:\/\/www.sumologic.com\/application\/kubernetes\/\"> Kubernetes application<\/a>, which Sumo Logic has created for their platform, actively ingests metrics and logs into their platform from connected Kubernetes clusters so they can be processed and then visualized through both predefined and custom-made <a href=\"https:\/\/help.sumologic.com\/docs\/dashboards-new\/explore-view\/\" target=\"_blank\" rel=\"noopener\">dashboards<\/a> to increase transparency and expose the important information from Kubernetes &#8211; like detailed cluster health and resource utilization &#8211; in addition to building trends that allow for earlier detection of anomalies in the monitored clusters. Learn more in our <a href=\"https:\/\/www.sumologic.com\/guides\/log-management\/\">guide to log management<\/a>.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a047a3f908545877992576f7097cf3ca\">In addition to visualization, once the data from Kubernetes has been processed in the Sumo Logic platform, it can also be queried using <a href=\"https:\/\/www.sumologic.com\/blog\/query-language-patterns\/\">Sumo Logic&#8217;s powerful query language,<\/a> to make analysis easier and give the ability to correlate data from additional log sources to provide a holistic view of your infrastructure.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-98361f01c3c053aedb9b382cb39e819b\">Kubernetes is a powerful tool that greatly simplifies the process of deploying complex containerized applications at scale. Yet, like any powerful software platform, Kubernetes must be monitored effectively in order to do its job well. Without the right Kubernetes monitoring tools and procedures in place, teams risk sub-optimal performance or even complete failure of their Kubernetes-based workloads.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-6edfd9ae7dd6b28b067c652f17a9fbf0\">To help get started building and implementing a Kubernetes monitoring strategy, this page breaks down the different parts of Kubernetes and explains how to monitor each. It also discusses key Kubernetes monitoring metrics and offers tips on best practices that will help you get the most out of your Kubernetes monitoring strategy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-65ce0fde748bf289a9be7afee0a59e3c\" id=\"monitoring_kubernetes_clusters\">Monitoring Kubernetes clusters<\/h2>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-fea993268b4dd300cdf7964a68608842\">Now that we know what goes into monitoring Kubernetes, let&#8217;s discuss how to monitor all of the pieces. In order to simplify your Kubernetes monitoring strategy, it&#8217;s helpful to break monitoring operations down into different parts, each focused on a different &#8220;layer&#8221; of your Kubernetes environment or part of the overall workload (clusters, pods, applications and the end-user experience).<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-558922e761830cfa1dd5a5dee6e793f9\">The highest-level component of Kubernetes is the cluster. As noted above, in most cases each Kubernetes installation consists of only one cluster. Thus, by monitoring the cluster, you gain an across-the-board view of the overall health of all of the nodes, pods and applications that form your cluster. (If you use federation to maintain multiple clusters, you&#8217;ll have to monitor each cluster separately. But that is not very difficult, especially because it would be very rare to have more than two or three clusters per organization.)<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-bff8420bcc3d34f4196c609f7da5585f\">Specific areas to monitor at the cluster level include:<\/p>\n\n\n\n<ul>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a536f86b8e6967d2b94107740ee4bbf0\">Cluster usage: Which portion of your cluster infrastructure is currently in use? Cluster usage lets you know when it&#8217;s time to add more nodes so that you don&#8217;t run out of resources to power your workloads. Or, if your cluster is significantly under-utilized, tracking cluster usage will help you know it&#8217;s time to scale down so that you&#8217;re not paying for more infrastructure than you need.<\/p>\n\n\n\n<\/li>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-dfb05d3b77939912db63ae724d552f8b\">Node consumption: You should also track the load on each node. If some nodes are experiencing much more usage than others, you may want to rebalance the distribution of workloads using DaemsonSets.<\/p>\n\n\n\n<\/li>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-54d7dc09e595befcf3e5b5bdaba67977\">Failed pods: Pods are destroyed naturally as part of normal operations. But if there is a pod that you think should be running but is not active anywhere on your cluster, that&#8217;s an important issue to investigate.<\/p>\n\n\n\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-503f7f83d3a0d4f4db556a5b69faca2b\" id=\"monitoring_kubernetes_pods\">Monitoring Kubernetes pods<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-d40974ef83de0fd8c72fd100615a808c\">While cluster monitoring provides a high-level overview of your Kubernetes environment, you should also collect monitoring data from individual pods. This data will provide much deeper insight into the health of pods (and the workloads that they host) than you can glean by simply identifying whether or not pods are running at the cluster level.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-c065dd97efe6613970d28a5392b39a4e\">When monitoring pods, you&#8217;ll want to focus on:<\/p>\n\n\n\n<ul>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-db79e8d0ab6e5b77cc8afb11ee9d0f34\">Pod deployment patterns: Monitoring how pods are being deployed &#8211; which nodes they are running on and how resources are distributed to them &#8211; helps identify bottlenecks or misconfigurations that could compromise the high availability of pods.<\/p>\n\n\n\n<\/li>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-6b3f752da26aecc997d81782628e47ab\">Total pod instances: You want enough instances of a pod to ensure high availability, but not so many that you waste hosting resources running more pod instances than you need.<\/p>\n\n\n\n<\/li>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-55b2c57364c9bdc0669654c4aab6225e\">Expected vs. actual pod instances: You should also monitor how many instances for each pod are actually running, and compare it to how many you expected to be running. If you find that these numbers are frequently different, it could be a sign that your ReplicaSets are misconfigured and\/or that your cluster does not have enough resources to achieve the desired state regarding pod instances.<\/p>\n\n\n\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-35edf1b62845f633ab994eb704db4dfe\" id=\"monitoring_applications_running_in_kubernetes\">Monitoring applications running in Kubernetes<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-74ad6e3f82cd161eff00ec142972af28\">Although applications are not a specifically defined component within Kubernetes, hosting applications is a reason why you ultimately use Kubernetes in the first place. Thus, it&#8217;s important to monitor the applications being hosted on your cluster (or clusters) by checking:<\/p>\n\n\n\n<ul>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-3cef8b6c8349397fb137636633aecce3\">Application availability: Are your apps actually up and responding?<\/p>\n\n\n\n<\/li>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-70b30ff1bc8411b4f64a9a522e16e4ea\">Application responsiveness: How long do your apps take to respond to requests? Do they struggle to maintain acceptable rates of performance under heavy load?<\/p>\n\n\n\n<\/li>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-2034aeca3602e28c527c27e536442da1\">Transaction traces: If your apps are experiencing performance or availability problems, transaction traces can help to troubleshoot them.<\/p>\n\n\n\n<\/li>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-edcbb6fa1270f1ca5bb1281380e78c84\">Errors: When application errors occur, it&#8217;s important to get to the bottom of them before they impact end-users.<\/p>\n\n\n\n<\/li>\n<\/ul>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-6614066fe00e531dc6fb9f425bc07ec8\">Problems revealed by application monitoring in Kubernetes could be the result of an issue with your Kubernetes environment, or they could be rooted in your application code itself. Either way, you&#8217;ll want to be sure to identify the problem so you can correct it.<br><\/p>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-ca87d4bf5b81641a34fd014464d5ac9d\" id=\"monitoring_end-user_experience_when_running_kubernetes\">Monitoring end-user experience when running Kubernetes<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-c2ef3fcc4058cf6951fc80065d2432a0\">Like applications, the end-user experience is not a technical part of the Kubernetes platform. But delivering a positive experience for end-users &#8211; meaning the people who use the applications hosted on Kubernetes &#8211; is a critical consideration for any successful Kubernetes strategy.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a30fcbb89a0eb3ecb58b970ffd5a30ec\">Toward that end, it&#8217;s important to collect data that provides insight into the performance and usability of applications. We discussed some of this above in the context of monitoring for application responsiveness, which provides insight into performance. When it comes to assessing usability, performing both synthetic and real-user monitoring is critical for understanding how users are interacting with Kubernetes workloads and whether there are any adjustments you can make within Kubernetes (such as enhancing your application frontend) to improve usability.<br><\/p>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-3a73c6f77c7041836a36122524dd214d\" id=\"monitoring_kubernetes_in_a_cloud_environment\">Monitoring Kubernetes in a cloud environment<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-4a638f15321a2f26f9737aec288485c2\">In addition to the various Kubernetes monitoring considerations described above, which apply to any type of Kubernetes environment, there are some special factors to weigh when you&#8217;re running Kubernetes in the cloud.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-67ae9d1bb30be06a65fa6927cd83c35f\">In a cloud-based installation, you&#8217;ll also need to monitor for:<\/p>\n\n\n\n<ul>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-e5b8117f8dca6870334ffcee4f68871f\">Cloud APIs: Your cloud provider has its own APIs, which your Kubernetes installation will use to request resources.<\/p>\n\n\n\n<\/li>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-8bc2dda85b812aa56c0b59e88317caa1\">IAM events: Monitoring for IAM activity, like logins or permissions changes, is important for staying on top of security in a cloud-based environment.<\/p>\n\n\n\n<\/li>\n<li dir=\"ltr\">\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-6d0d268b68af9090d61f48dd118fd1a6\">Cost: Cloud bills can get large quickly. Performing cost monitoring will help ensure you are not overspending on your cloud-based Kubernetes service.<\/p>\n\n\n\n<\/li>\n<\/ul>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-625815c3912425a20a7e7fdfb6ad9eb3\">Network performance: In the cloud, the network is often the biggest performance bottleneck for your applications. Monitoring the cloud network to ensure that it is moving data as quickly as you need, helps to safeguard against network-related performance issues.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-cac4fbb252504dc04012f310939e75aa\" id=\"monitoring_your_load_balancer\">Monitoring your load balancer<\/h2>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-43b4c6dc98c2b9605b1c05bd939643d6\">With your <a href=\"https:\/\/www.sumologic.com\/glossary\/load-balancer\/\">load balancer<\/a> configured, you can trust that requests to your services will be dispatched efficiently, ensuring smoother performance and enabling you to handle greater loads. For many of us, however, trust must be earned, and &#8220;seeing is believing,&#8221; as the old adage goes. <\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-411018d464c8d141ffe398ec7b648d7a\">If you want to see your load balancer in action so that you know it&#8217;s operating as it should, you need a way to visualize your Kubernetes services and monitor their performance. The Sumo Logic Kubernetes App provides visibility on all your nodes, allowing you to monitor and troubleshoot load balancing as well as myriad other metrics to track the health of your clusters. You can track the loads being placed on each service to verify that resources are being shared evenly, and you can also monitor the load-balancing service itself from a series of easy-to-understand dashboards.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-e7f622731d6b3c8e7200a724e84a474b\">If your application must handle an unpredictable number of requests, a load balancer is essential for ensuring reliable performance without the cost of over-provisioning. Depending on the number of services you need to route traffic to, as well as the level of complexity you are willing to accept, you might choose to use Ingress or the external load balancing service offered by your cloud provider. Regardless of how you implement your load balancing, monitoring its performance through the Sumo Logic Kubernetes App will allow you to measure its benefits and quickly react when it is not operating as it should.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-b2ba2545b1062b0125e02e82d1d1b3c0\" id=\"metrics_to_monitor_in_kubernetes\">Metrics to monitor in Kubernetes<\/h2>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-94eb8d2174010207cd62606afa2a325d\">Now that we know which types of monitoring to perform for Kubernetes, let&#8217;s discuss the specific metrics to collect in order to achieve visibility into a Kubernetes installation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-54c82999321ee5a1cbb5bef62c920c36\" id=\"common_metrics\">Common metrics<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-307ec5c8d413ae8af07fd206bed6f864\">Common metrics refer to metrics you can collect from the code of Kubernetes itself, which is written in Golang. This information helps you understand what is happening deep under the hood of Kubernetes.<\/p>\n\n\n\n<table>\n<tbody>\n<tr>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f5352db6c8c22c6de687a99b4fa2b00c\">Metric<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-b45914752ff5b9036d78f03a1162c9a2\">Components<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-c4cdb29503fea9d083a2c448dc98e6c5\">Description<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-c441c0d0e76bc201bd359a0a632052de\">go_gc_duration_seconds<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-1ec9944e75390584c55747d529b5cc6c\">All<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-e7cda0601398bb991b8377ace616b0b2\">A summary of the GC invocation durations<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-ebbfee73378fcc20f0aef7cee932c13b\">go_threads<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-1ec9944e75390584c55747d529b5cc6c\">All<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-0ad9864ad2643b03398228dae7533df7\">Number of OS threads created<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-699f47d975f13ae2ab468868addd887f\">go_goroutines<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-1ec9944e75390584c55747d529b5cc6c\">All<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-d705e3f4271bea2de5714482f0d48c72\">Number of goroutines that currently exist<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-48a4d5488110dc49d53abe6cf57fd116\">etcd_helper_cache_hit_count<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5669ca14e2957399b9281d190bca9069\">API Server, Controller Manager<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-2f6be87191d3a9fe0b30b2452974a472\">Counter of etcd helper cache hits<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-85808b9cf1d560c0c59e11bd66d55afd\">etcd_helper_cache_miss_count<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5669ca14e2957399b9281d190bca9069\">API Server, Controller Manager<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-6ee87b071eaa2d71d3a9c53345bdeef6\">Counter of etcd helper cache misses<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-3475b6ac100e7d261eae392843743454\">etcd_request_cache_add_latencies_summary<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5669ca14e2957399b9281d190bca9069\">API Server, Controller Manager<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-7c66c4a386755ec7e4257f49576f703d\">Latency in microseconds of adding an object to etcd cache<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-7faeb997c5b8a876f2ca07f757190c51\">etcd_request_cache_get_latencies_summary<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5669ca14e2957399b9281d190bca9069\">API Server, Controller Manager<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-df36027433e77161ab72f079bb7fcc00\">Latency in microseconds of getting an object from etcd cache<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-564b59e60a4846864695117081514075\">etcd_request_latencies_summary<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5669ca14e2957399b9281d190bca9069\">API Server, Controller Manager<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-332519d2c4e2c8fd4fd9853f05ef8770\">Etcd request latency summary in microseconds for each operation and object type<\/p>\n\n\n\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-6f51a19c9888ef126a95124e5ce530bc\" id=\"api_server_metrics\">API server metrics<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-9e18243ce0eb80578b798090ae06e8a3\">Since APIs serve as the glue that binds the Kubernetes frontend together, API metrics are crucial for achieving visibility into the API Server &#8211; and, by extension, into your entire frontend.<\/p>\n\n\n\n<table>\n<tbody>\n<tr>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f5352db6c8c22c6de687a99b4fa2b00c\">Metric<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-c4cdb29503fea9d083a2c448dc98e6c5\">Description<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-37d52bfd77f7bb57b896b04cb64d0179\">apiserver_request_count<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-dbc92251e4b7e466de84c71d6555ce21\">Count of apiserver requests broken out for each verb, API resource, client, and HTTP response contentType and code<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-8acad32606b03d10759dfee8b2e4116e\">apiserver_request_latencies<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-4b85ac3851e3d3ef05fa032c8b3d1a49\">Response latency distribution in microseconds for each verb, resource and subresource<\/p>\n\n\n\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-f89829efa13a33c64e5adf1368729e11\" id=\"etcd_metrics\">Etcd metrics<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f0918f96efea48b3459d6ef79ef56f55\">Since Etcd stores all of the configuration data for Kubernetes itself, Etcd metrics deliver critical visibility into the state of your cluster.<\/p>\n\n\n\n<table>\n<tbody>\n<tr>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f5352db6c8c22c6de687a99b4fa2b00c\">Metric<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-c4cdb29503fea9d083a2c448dc98e6c5\">Description<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a9b09584e466db8108807738ec8b3179\">etcd_server_has_leader<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-469648ffee58b5515b4014f7c52f698c\">1 if a leader exists, 0 if not<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-9578b4d904d41b847c73f819545470ec\">etcd_server_leader_changes_seen_total<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a443b7483d324a75ccd025f2001438ba\">Number of leader changes<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-3a0c32d952093befa8a755745e9a3bcb\">etcd_server_proposals_applied_total<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-acdb5da411015da0bf3ae9e4125b8e64\">Number of proposals that have been applied<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-4afab6cf0b268fe54d985e2185c8482c\">etcd_server_proposals_committed_total<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a17265e32942dec90197096cb7e48237\">Number of proposals that have been committed<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-255f40819b66a60d87154ebf176eda22\">etcd_server_proposals_pending<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a6b22dde23f40334f3118958fcca7862\">Number of proposals that are pending<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-7353787307ed8fd201015da81860e148\">etcd_server_proposals_failed_total<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f75b09bf9d66e50da7a83117092a72d6\">Number of proposals that have failed<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-6d356697b855a88dfba5f202979ce0d0\">etcd_debugging_mvcc_db_total_size_in_bytes<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-4d9901b2ec2d69d58345ead519316535\">Actual size of database usage after a history compaction<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-942527a738b73b1feb4bc54667ec28b6\">etcd_disk_backend_commit_duration_seconds<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-4f4ae92d486d486ac56c8d79d5fe1e0b\">Latency distributions of commit called by the backend<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5b636e98f7ce421fcbcefed8b1322977\">etcd_disk_wal_fsync_duration_seconds<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-1a423f4116ff8ff9f281cdabfe528d58\">Latency distributions of fsync calle by wal<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-badc5730373162382b383f85e16463c5\">etcd_network_client_grpc_received_bytes_total<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-1bf74252128e29670e4330225fa6aae3\">Total number of bytes received by gRPC clients<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-9a8d8a4972aa9f534d942495fcd52f5e\">etcd_network_client_grpc_sent_bytes_total<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a5604b9cf386f5874b544cbfa20c831c\">Total number of bytes sent by gRPC clients<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5b15447522341ff6164f6662a1944cc6\">grpc_server_started_total<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-8e1df5d163c0ce30a52b14ef30fd02a4\">Total number of gRPC\u2019s started on the server<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5166f8d6d683375766c4259f3bd18707\">grpc_server_handled_total<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-66cdbb9a4dc9b364b43d48a037e52bda\">Total number of gRPC\u2019s handled on the server<\/p>\n\n\n\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-37937f41ffaf9a9259744315f1f00d02\" id=\"scheduler_metrics\">Scheduler metrics<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a7a68b7c5af6605cdd33e16b13717ff1\">Monitoring latency in the Scheduler helps identify delays that may arise and prevent Kubernetes from deploying pods smoothly.<\/p>\n\n\n\n<table>\n<tbody>\n<tr>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f5352db6c8c22c6de687a99b4fa2b00c\">Metric<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-c4cdb29503fea9d083a2c448dc98e6c5\">Description<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-3acb00cc5fba09b25e4e485dd5bc5108\">scheduler_e2e_scheduling_latency_microseconds<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-7a9db792c33082240af11d12a8351a90\">The end-to-end scheduling latency, which is the sum of the scheduling algorithm latency and the binding latency<\/p>\n\n\n\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-3930129abc48d9ac07d9d84597a8f0ba\" id=\"controller_manager_metrics\">Controller manager metrics<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-b45c4fc229e3eb42dcc9771d3b05eb35\">Watching the requests that the Controller makes to external APIs helps ensure that workloads can be orchestrated successfully, especially in cloud-based Kubernetes deployments.<\/p>\n\n\n\n<table>\n<tbody>\n<tr>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f5352db6c8c22c6de687a99b4fa2b00c\">Metric<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-c4cdb29503fea9d083a2c448dc98e6c5\">Description<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5172e9a6466825b6e8c189435cfc1a25\">cloudprovider_*_api_request_duration_seconds<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-6217821bf9d490883334524a2bd11d00\">The latency of the cloud provider API call<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-08dab7bbd299c8d111f7427e490bdb09\">cloudprovider_*_api_request_errors<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a4ff43b6485728d799ce456fff10f8ac\">Cloud provider API request errors<\/p>\n\n\n\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-d5eed71c63c00dde65e41991e8db0f15\" id=\"kube-state-metrics\">Kube-State-Metrics<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-e877b0b38ca55348752fe32a96d6ca26\"><a href=\"https:\/\/github.com\/kubernetes\/kube-state-metrics\" target=\"_blank\" rel=\"noopener\"><\/a><a href=\"https:\/\/github.com\/kubernetes\/kube-state-metrics\" target=\"_blank\" rel=\"noopener\">Kube-State-Metrics<\/a> is an optional Kubernetes add-on that generates metrics from the Kubernetes API. These metrics cover a range of resources, below are the most valuable ones.<\/p>\n\n\n\n<table>\n<tbody>\n<tr>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f5352db6c8c22c6de687a99b4fa2b00c\">Metric<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-c4cdb29503fea9d083a2c448dc98e6c5\">Description<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-3ca5dff7847946e8206946a2a44fa9c5\">kube_pod_status_phase<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-d779305d0ea56a278a5badbc01c0ea6e\">The current <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/pod-lifecycle\/#pod-phase\" target=\"_blank\" rel=\"noopener\">phase<\/a> of the pod<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-8648c41fa6b23878e667526c3899e133\">kube_pod_container_resource_limits_cpu_cores<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f2195de97bb8884f4d92ebcb600f4e58\">Limit on CPU cores that can be used by the container<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-302c7bd0472b5e4dc4196b907efa64fb\">kube_pod_container_resource_limits_memory_bytes<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-bf84604de5057da92f3d3ee3641fc625\">Limit on the amount of memory that can be used by the container<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-e9ebe6552685931c108cdd5cda6fa929\">kube_pod_container_resource_requests_cpu_cores<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-3ba00688147f8951365dd1ad42246676\">The number of requested cores by a container<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-599167fc4e782b8409ba1c345eb640cb\">kube_pod_container_resource_requests_memory_bytes<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-62c46ad0c1e20048a5e95de179ca9230\">The number of requested memory bytes by a container<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-fd4d18fbc1fdbf89ec09202012fc6c86\">kube_pod_container_status_ready<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-3d35411f842fa4b887599a07b89d1182\">Will be 1 if the container is ready, and 0 if it is in a not ready state<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-dd12956797c9fe2ae960d1fec0f8fd93\">kube_pod_container_status_restarts_total<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-80a9bee63ac35a3ad3818a66a08e8d34\">Total number of restarts of the container<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-b23a3e86a629c3ce1c2814f4aa89c678\">kube_pod_container_status_terminated_reason<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-1d7f981ed13e02df7292235553ee9df0\">The reason that the container is in a terminated state<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-dbbe591feff3feb7006c4b82f4584911\">kube_pod_container_status_waiting<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-e1faf5247b944debb37543dcde80f9f4\">The reason that the container is in a waiting state<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-22c490efe9b9848300b9a31e7c7220e4\">kube_daemonset_status_desired_number_scheduled<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-8108391f9cba1bb8cde9a1d22c188cc1\">The number of nodes that should be running the pod<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-d65a6f3fb79807912b859caee6d4f611\">kube_daemonset_status_number_unavailable<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-0ace8686cdf02f6e7b6a66e6dc184303\">The number of nodes that should be running the pod, but are not able to<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-49cba0562c5580eef7fed883f05e90d6\">kube_deployment_spec_replicas<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-ad92696a35f5d3dede425dba2168ce98\">The number of desired pod replicas for the Deployment<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-1360390b8c0353f1b15f0fb06d71ed17\">kube_deployment_status_replicas_unavailable<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-42a1942c6580fcf380392c03d1ab9037\">The number of unavailable replicas per Deployment<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5c52feafa15f2451aa3468a23de15583\">kube_node_spec_unschedulable<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-6b88850f51483b4e780f4053a1883b88\">Whether a node can schedule new pods or not<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-34e38386a309633fbd9585e9f8560610\">kube_node_status_capacity_cpu_cores<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-5c9b8a0510b8ada55ca74bad05fa3e37\">The total CPU resources available on the node<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-287e2198eed35c36a7055bb5e0bd72cc\">kube_node_status_capacity_memory_bytes<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-793bb1115e9a1e98463fab36957aafc5\">The total memory resources available on the node<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a37be35cc2b05937c95d1d9713514242\">kube_node_status_capacity_pods<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a999319ca9483b011e7ea1246c0710a6\">The number of pods the node can schedule<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-4ef1d7bb86edf8136ec9fb6d9bf0cc33\">kube_node_status_condition<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f76976b7e5feee0655a48b61479808a0\">The current status of the node<\/p>\n\n\n\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-0c38da6fb83814c189490f1ca4e2afd5\" id=\"kubelet_metrics\">Kubelet metrics<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-0cac4ac5e986822217d57ce1ed13566a\">Monitoring the<a href=\"https:\/\/kubernetes.io\/docs\/reference\/command-line-tools-reference\/kubelet\/\" target=\"_blank\" rel=\"noopener\"> Kubelet<\/a> agent will help ensure that the Control Plane can communicate effectively with each of the nodes that Kubelet runs on. Beyond the common GoLang runtime metrics described above, Kubelet exposes some internals about its actions that are good to track as well.<\/p>\n\n\n\n<table>\n<tbody>\n<tr>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f5352db6c8c22c6de687a99b4fa2b00c\">Metric<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-c4cdb29503fea9d083a2c448dc98e6c5\">Description<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-a35618e91e585d8813596309a6cc5b7d\">kubelet_running_container_count<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-f7cfde139bf7126da03774ab4cddf723\">The number of containers that are currently running<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-010d75f920541dd60d10be6f5941f6e8\">kubelet_runtime_operations<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-3b53b538e66925169f791db4fb14ed17\">The cumulative number of runtime operations available by the different operation types<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-7844f1da34529fec8613b771d154d623\">kubelet_runtime_operations_latency_microseconds<\/p>\n\n\n\n<\/td>\n<td>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-1040d79e73ee1e75c20fdae8ce06506a\">The latency of each operation by type in microseconds<\/p>\n\n\n\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-f073adf2f41ba1610333c0b35eeb8163\" id=\"node_metrics\">Node metrics<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-0c9b1ecc38a382dc49061bf6899fa058\">Monitoring standard metrics from the operating systems that power Kubernetes nodes provide insight into the health of each node. Common node metrics to monitor include CPU load, memory consumption, filesystem activity and usage and network activity.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-4a39746f977269a1f3b760a97caf02cc\" id=\"container_metrics\">Container metrics<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-2c700251728b0b4d300a6eb02c8b006a\">While metrics from Kubernetes can provide insight into many parts of your workload, you should also home in on individual containers to monitor for resource consumption. CAdvisor, which analyzes resource usage inside containers, is helpful for this purpose.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-7c36ac29216e8f6425e08151ad24acb1\" id=\"log_data\">Log data<\/h3>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-b6992a901c206ece78e912bc347890fe\">When you need to investigate an issue revealed by metrics, logs are invaluable for diving deeper by collecting information that goes beyond metrics themselves. Kubernetes offers a range of logging facilities for most of its components. Applications themselves also typically generate log data.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-eigengrau-color has-text-color has-link-color wp-elements-255641b5cda78d00f4bf4fa511978f9a\" id=\"monitoring_kubernetes-powered_apps_with_sumo_logic\">Monitoring Kubernetes-powered apps with Sumo Logic<\/h2>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-46fb46fe7513d1167a9eb56f8920da39\">With the&nbsp;<a href=\"https:\/\/help.sumologic.com\/docs\/integrations\/containers-orchestration\/kubernetes\/\" target=\"_blank\" rel=\"noopener\">Sumo Logic Kubernetes App<\/a>, collecting and analyzing monitoring data from across your Kubernetes environment is simple. Sumo Logic does the hard work of collecting metrics from Kubernetes&#8217; many different parts, then aggregates them and provides you with data analytics tools for making sense of all of the data.<\/p>\n\n\n\n<p class=\"has-delft-blue-color has-text-color has-link-color wp-elements-143c354056df968c859c428c0dfc11bd\">Just as Kubernetes makes it practical to manage complex containerized applications at scale, Sumo Logic makes it possible to <a href=\"https:\/\/www.sumologic.com\/solutions\/kubernetes\/\">monitor Kubernetes<\/a> itself &#8211; a task that would be all but impossible without Sumo Logic&#8217;s ability to streamline the monitoring and analytics process.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/section>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":234,"featured_media":0,"template":"","meta":{"_acf_changed":false,"show_custom_date":false,"custom_date":"","featured":false,"featured_image":0,"learn_more_label":"","image_alt_text":"","learn_more_type":"","show_popup":false,"learn_more_link_file":0,"event_date":false,"event_start_date":"","event_end_date":"","place_holder_image_url":"","post_reading_time":"16","notification_enabled":false,"notification_text":"","notification_logo":"","notification_expiration_time":0,"is_enable_transparent_header":false,"selected_taxonomy_terms":{"blog-category":[132,125],"blog-tag":[]},"selected_primary_terms":[],"learn_more_link":[],"featured_page_list":[],"notification_enabled_post_list":[],"_gspb_post_css":"","_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"4668,71369,71176","_relevanssi_noindex_reason":"","inline_featured_image":false,"footnotes":""},"blog-category":[132,125],"blog-tag":[],"class_list":["post-4997","blog","type-blog","status-publish","hentry","blog-category-containers","blog-category-devops-it-operations"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog\/4997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/users\/234"}],"version-history":[{"count":3,"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog\/4997\/revisions"}],"predecessor-version":[{"id":26924,"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog\/4997\/revisions\/26924"}],"wp:attachment":[{"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/media?parent=4997"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog-category?post=4997"},{"taxonomy":"blog-tag","embeddable":true,"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog-tag?post=4997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}