{"id":89038,"date":"2020-07-17T19:42:30","date_gmt":"2020-07-17T17:42:30","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/logirovanie-v-kubernetes-efk-protiv-plg"},"modified":"2020-07-17T19:42:30","modified_gmt":"2020-07-17T17:42:30","slug":"logirovanie-v-kubernetes-efk-protiv-plg","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/logirovanie-v-kubernetes-efk-protiv-plg","title":{"rendered":"Logging in Kubernetes: EFK vs. PLG","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Logging in Kubernetes: EFK vs. PLG\" src=\"\/wp-content\/uploads\/2020\/07\/0b7076a32f4c9a830bf6b765055510cc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Monitoring has become a crucial component of growing cloud solutions with the increasing complexity of distributed systems. It is essential for understanding their behavior. Scalable tools are needed to collect data from all services and provide specialists with a unified interface for performance analysis, error demonstration, availability, and logging. <\/p>\n<p><\/p>\n<p>These tools must also be efficient and high-performing. In this article, we will review two popular technology stacks: EFK (Elasticsearch) and PLG (Loki), and explore their architectures and differences.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"stek-efk\">EFK Stack<\/h2>\n<p><\/p>\n<p>You may have heard of the widely used ELK or EFK. The stack consists of several separate components: Elasticsearch (object storage), Logstash or FluentD (log collection and aggregation), and Kibana for visualization.<\/p>\n<p><\/p>\n<p>A typical workflow looks like this:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logging in Kubernetes: EFK vs. PLG\" src=\"\/wp-content\/uploads\/2020\/07\/75a2b7d079064f7aa662d9e27f73c3f2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Elasticsearch<\/strong> \u2014 a distributed object store with real-time search and analytics. An excellent solution for semi-structured data, such as logs. Information is stored as JSON documents, indexed in real-time, and distributed across the cluster nodes. An inverted index is used, containing all unique words and the associated documents for full-text search, which is based on the Apache Lucene search engine.<\/p>\n<p><\/p>\n<p><strong>FluentD<\/strong> \u2014 is a data collector that performs data unification during collection and consumption. It strives to organize data in JSON as much as possible. Its architecture is extensible, with more than <noindex><a rel=\"nofollow\" href=\"https:\/\/www.fluentd.org\/plugins\/all\">hundreds of different community-supported plugins<\/a><\/noindex>, available for various purposes.<\/p>\n<p><\/p>\n<p><strong>Kibana<\/strong> \u2014 a visualization tool for Elasticsearch with various additional features such as time series analysis, graphs, machine learning, and more.<\/p>\n<p><\/p>\n<h3 id=\"arhitektura-elasticsearch\">Elasticsearch Architecture<\/h3>\n<p><\/p>\n<p>Data in the Elasticsearch cluster is stored spread across all its nodes. The cluster consists of several nodes to enhance availability and resilience. Any node can perform all the cluster roles, but in large scalable deployments, nodes are typically assigned separate tasks.<\/p>\n<p><\/p>\n<p>Types of cluster nodes:<\/p>\n<p><\/p>\n<ul>\n<li>master node \u2014 manages the cluster, requiring a minimum of three, with one always active;<\/li>\n<li>data node \u2014 stores indexed data and performs various tasks with it;<\/li>\n<li>ingest node \u2014 organizes pipelines for data transformation before indexing;<\/li>\n<li>coordinating node \u2014 routes requests, reduces search processing phase, coordinates bulk indexing;<\/li>\n<li>alerting node \u2014 initiates alerting tasks;<\/li>\n<li>machine learning node \u2014 processes machine learning tasks.<\/li>\n<\/ul>\n<p><\/p>\n<p>The diagram below shows how data is stored and replicated across nodes to achieve higher data availability.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logging in Kubernetes: EFK vs. PLG\" src=\"\/wp-content\/uploads\/2020\/07\/b476660dc60aca34fbe421b8eaf0ee31.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>The data of each replica is stored in an inverted index; the diagram below illustrates how this works:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logging in Kubernetes: EFK vs. PLG\" src=\"\/wp-content\/uploads\/2020\/07\/0341c127742a5e8fe787f2076be0464f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"ustanovka\">Installation<\/h3>\n<p><\/p>\n<p>You can see the details <noindex><a rel=\"nofollow\" href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-set-up-an-elasticsearch-fluentd-and-kibana-efk-logging-stack-on-kubernetes\">here<\/a><\/noindex>, I will use helm chart:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ helm install efk-stack stable\/elastic-stack --set logstash.enabled=false --set fluentd.enabled=true --set fluentd-elastics<\/code><\/pre>\n<p><\/p>\n<h2 id=\"stek-plg\">PLG stack<\/h2>\n<p><\/p>\n<p>Don't be surprised if you can't find this acronym, as it is better known as Grafana Loki. In any case, this stack is gaining popularity as it applies refined technical solutions. You may already have heard of Grafana, a popular visualization tool. Its creators, inspired by Prometheus, developed Loki, a horizontally scalable high-performance log aggregation system. Loki indexes only metadata, not the logs themselves, which has made it simple to operate and cost-effective.<\/p>\n<p><\/p>\n<p><strong>Promtail<\/strong> \u2014 an agent for sending logs from the operating system to the Loki cluster. <strong>Grafana<\/strong> \u2014 a visualization tool based on data from Loki.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logging in Kubernetes: EFK vs. PLG\" src=\"\/wp-content\/uploads\/2020\/07\/3cc613eacf013723d46e7d31ff166dac.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Loki is built on the same principles as Prometheus, so it is well-suited for storing and analyzing Kubernetes logs.<\/p>\n<p><\/p>\n<h3 id=\"arhitektura-loki\">Loki Architecture<\/h3>\n<p><\/p>\n<p>Loki can run both as a single process and as multiple processes, providing horizontal scalability.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logging in Kubernetes: EFK vs. PLG\" src=\"\/wp-content\/uploads\/2020\/07\/82679c9a38f6115d0c8f3911533fb9f6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>It can also operate as a monolithic application or as a microservice. Running as a single process may be useful for local development or small-scale monitoring. For industrial deployment and scalable workloads, the microservice version is recommended. The paths for writing and reading data are separate, allowing for fine-tuning and scaling as needed.<\/p>\n<p><\/p>\n<p>Let's look at the architecture of the log collection system without going into detail:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logging in Kubernetes: EFK vs. PLG\" src=\"\/wp-content\/uploads\/2020\/07\/f66b90693295acb723b01aecfd7381dd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>And here is a description (microservices architecture):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logging in Kubernetes: EFK vs. PLG\" src=\"\/wp-content\/uploads\/2020\/07\/a2d74e86e75c4fb3ef39823ed2170517.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Components:<\/p>\n<p><\/p>\n<p><strong>Promtail<\/strong> \u2014 an agent that is installed on nodes (as a set of services), it collects logs from tasks and queries the Kubernetes API for metadata to label the logs. Then it sends the logs to the main Loki service. The same labeling rules are supported for matching the metadata as in Prometheus.<\/p>\n<p><\/p>\n<p><strong>Distributor<\/strong> \u2014 a distribution service that acts as a buffer. To handle millions of records, it packages incoming data, compressing them in blocks as they arrive. Several data receivers operate simultaneously, but the logs belonging to a single stream of incoming data must reside in only one of them for all its blocks. This is organized as a ring of receivers and sequential hashing. For fault tolerance and redundancy, it is done n times (3 if not configured).<\/p>\n<p><\/p>\n<p><strong>Ingester<\/strong> \u2014 a receiver service. Data blocks arrive compressed with added logs. Once a block reaches a sufficient size, it is flushed to the database. Metadata goes into the index, while the log block data ends up in Chunks (usually in object storage). After flushing, the receiver creates a new block to which new records will be added.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logging in Kubernetes: EFK vs. PLG\" src=\"\/wp-content\/uploads\/2020\/07\/a277021b303ffa3eb924b4dfc617564a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Index<\/strong> \u2014 databases such as DynamoDB, Cassandra, Google BigTable, and others.<\/p>\n<p><\/p>\n<p><strong>Chunks<\/strong> \u2014 compressed log blocks, usually stored in object storage, such as S3.<\/p>\n<p><\/p>\n<p><strong>Querier<\/strong> \u2014 the read path that does all the heavy lifting. It looks at the time range and labels, then checks the index for matches. Next, it reads data blocks and filters them to get the results.<\/p>\n<p><\/p>\n<p>Now, let's see everything in action.<\/p>\n<p><\/p>\n<h3 id=\"ustanovka-1\">Installation<\/h3>\n<p><\/p>\n<p>To install on Kubernetes, it's easiest to use helm. We assume you've already installed and configured it (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/507656\/\">and version three!<\/a><\/noindex> <em>translator's note<\/em>)<\/p>\n<p><\/p>\n<p>Add the repository and install the stack.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ helm repo add loki https:\/\/grafana.github.io\/loki\/charts\n$ helm repo update\n$ helm upgrade --install loki loki\/loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false<\/code><\/pre>\n<p><\/p>\n<p>Below is an example dashboard that shows data from Prometheus for Etcd metrics and Loki for Etcd pod logs.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Logging in Kubernetes: EFK vs. PLG\" src=\"\/wp-content\/uploads\/2020\/07\/36efc5b7abe7ad3c3f8869bd09a9e3e7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Now, let's discuss the architecture of both systems and compare their capabilities to each other.<\/p>\n<p><\/p>\n<h2 id=\"sravnenie\">Comparison<\/h2>\n<p><\/p>\n<h3 id=\"yazyk-zaprosov\">Query language<\/h3>\n<p><\/p>\n<p>Elasticsearch utilizes Query DSL and the Lucene query language, providing capabilities for full-text search. It is a well-established powerful search engine with extensive support for operators. It allows searching within context and sorting by relevance. <\/p>\n<p><\/p>\n<p>On the other side of the ring is LogQL, used in Loki, the successor to PromQL (Prometheus query language). It employs log labels for filtering and extracting log data. It also supports some operators and arithmetic, as described <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grafana\/loki\/blob\/master\/docs\/logql.md\">here<\/a><\/noindex>, but in terms of capabilities, it falls short of Elastic language.<\/p>\n<p><\/p>\n<p>Since queries in Loki are tied to labels, they can easily be related to metrics, making it simpler to organize operational monitoring.<\/p>\n<p><\/p>\n<h3 id=\"masshtabiruemost\">Scalability<\/h3>\n<p><\/p>\n<p>Both stacks are horizontally scalable, but with Loki, it's easier, as it has separated read and write paths for data and a microservices architecture. Loki can be configured to meet your specific needs and can handle very large volumes of log data.<\/p>\n<p><\/p>\n<h3 id=\"multiarendnost\">Multi-tenancy<\/h3>\n<p><\/p>\n<p>Cluster multi-tenancy is a common theme for reducing OPEX; both stacks provide multi-tenancy. For Elasticsearch, there are several <noindex><a rel=\"nofollow\" href=\"https:\/\/www.elastic.co\/blog\/found-multi-tenancy\">methods<\/a><\/noindex> for client separation: a separate index for each client, client-based routing, unique client fields, and search filters. In Loki, it is implemented <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grafana\/loki\/blob\/master\/docs\/operations\/multi-tenancy.md\">disabling the tracker blocking<\/a><\/noindex> through the HTTP header X-Scope-OrgID.<\/p>\n<p><\/p>\n<h3 id=\"stoimost\">Cost<\/h3>\n<p><\/p>\n<p>Loki is very cost-effective because it does not index data, only metadata. This results in <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/blog\/2020\/02\/19\/how-loki-reduces-log-storage\/\">saving on storage<\/a><\/noindex> and memory (cache), as object storage is cheaper than block storage, which is used in Elasticsearch clusters.<\/p>\n<p><\/p>\n<h2 id=\"zaklyuchenie\">Conclusion<\/h2>\n<p><\/p>\n<p>The EFK stack can be used for various purposes, providing maximum flexibility and a multifunctional Kibana interface for analytics, visualization, and queries. It can be further enhanced with machine learning capabilities.<\/p>\n<p><\/p>\n<p>The Loki stack is beneficial in the Kubernetes ecosystem due to its metadata discovery mechanism. It is easy to correlate data for time-series monitoring in Grafana and logs.<\/p>\n<p><\/p>\n<p>When it comes to cost and long-term log storage, Loki is an excellent choice for entering cloud solutions.<\/p>\n<p><\/p>\n<p>There are more alternatives on the market \u2014 some may be better for you. For example, GKE has Stackdriver integration, which provides an excellent monitoring solution. We did not include them in our analysis in this article.<\/p>\n<p><\/p>\n<p>Links:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grafana\/loki\/blob\/master\/docs\/overview\/comparisons.md\">https:\/\/github.com\/grafana\/loki\/blob\/master\/docs\/overview\/comparisons.md<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.elastic.co\/blog\/found-elasticsearch-from-the-bottom-up\">https:\/\/www.elastic.co\/blog\/found-elasticsearch-from-the-bottom-up<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.elastic.co\/blog\/found-elasticsearch-in-production\/\">https:\/\/www.elastic.co\/blog\/found-elasticsearch-in-production\/<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p><em>The article has been translated and prepared for \u0425\u0430\u0431\u0440 by the staff of <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/7x-vEQ\">the Slurm training center<\/a><\/noindex> \u2014 intensives, video courses, and corporate training from practicing specialists (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)<\/em><\/p>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/510822\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0442\u0430\u043b \u0432\u0435\u0441\u044c\u043c\u0430 \u0432\u0430\u0436\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u0440\u0430\u0441\u0442\u0443\u0449\u0438\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0441 \u0440\u043e\u0441\u0442\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u041e\u043d \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0438\u0445 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u041d\u0443\u0436\u043d\u044b \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043e \u0432\u0441\u0435\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u2014 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430\u043c \u0435\u0434\u0438\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441 \u0430\u043d\u0430\u043b\u0438\u0437\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u043e\u0448\u0438\u0431\u043e\u043a, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u0430\u043c\u0438. \u042d\u0442\u0438 \u0436\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":89039,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-89038","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0442\u0430\u043b \u0432\u0435\u0441\u044c\u043c\u0430 \u0432\u0430\u0436\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/logirovanie-v-kubernetes-efk-protiv-plg\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 Kubernetes: EFK \u043f\u0440\u043e\u0442\u0438\u0432 PLG | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0442\u0430\u043b \u0432\u0435\u0441\u044c\u043c\u0430 \u0432\u0430\u0436\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/logirovanie-v-kubernetes-efk-protiv-plg\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-17T17:42:30+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-17T17:42:30+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Logging in Kubernetes: EFK vs PLG | ProHoster","description":"Monitoring has become a very important component.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/logirovanie-v-kubernetes-efk-protiv-plg","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 Kubernetes: EFK \u043f\u0440\u043e\u0442\u0438\u0432 PLG | ProHoster","og:description":"\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0442\u0430\u043b \u0432\u0435\u0441\u044c\u043c\u0430 \u0432\u0430\u0436\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/logirovanie-v-kubernetes-efk-protiv-plg","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-17T17:42:30+00:00","article:modified_time":"2020-07-17T17:42:30+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"89038","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:17:22","updated":"2022-09-28 02:02:56","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/89038","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=89038"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/89038\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/89039"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=89038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=89038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=89038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}