{"id":5929,"date":"2020-05-29T12:15:00","date_gmt":"2020-05-29T09:15:00","guid":{"rendered":"https:\/\/kifarunix.com\/?p=5929"},"modified":"2024-03-14T20:30:40","modified_gmt":"2024-03-14T17:30:40","slug":"install-and-setup-prometheus-on-ubuntu-20-04","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/install-and-setup-prometheus-on-ubuntu-20-04\/","title":{"rendered":"Install and Setup Prometheus on Ubuntu 20.04"},"content":{"rendered":"\n<p>In this guide, we are going to learn how to install Prometheus on Ubuntu 20.04.&nbsp;<a href=\"https:\/\/github.com\/prometheus\" target=\"_blank\" rel=\"noopener\">Prometheus<\/a>&nbsp;is an open-source systems and service monitoring system. It collects metrics from configured targets via HTTP calls at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some conditions are met.<\/p>\n\n\n\n<p>Some of the main features of Prometheus include;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>a multi-dimensional&nbsp;<a href=\"https:\/\/prometheus.io\/docs\/concepts\/data_model\/\" target=\"_blank\" rel=\"noopener\">data model<\/a>&nbsp;with time series data identified by metric name and key\/value pairs<\/li>\n\n\n\n<li>PromQL, a&nbsp;<a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/querying\/basics\/\" target=\"_blank\" rel=\"noopener\">flexible query language<\/a>&nbsp;to leverage this dimensionality<\/li>\n\n\n\n<li>no reliance on distributed storage; single server nodes are autonomous<\/li>\n\n\n\n<li>time series collection happens via a pull model over HTTP<\/li>\n\n\n\n<li><a href=\"https:\/\/prometheus.io\/docs\/instrumenting\/pushing\/\" target=\"_blank\" rel=\"noopener\">pushing time series<\/a>&nbsp;is supported via an intermediary gateway<\/li>\n\n\n\n<li>targets are discovered via service discovery or static configuration<\/li>\n\n\n\n<li>multiple modes of graphing and dashboarding support<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Installing Prometheus on Ubuntu 20.04<\/h2>\n\n\n\n<p>Prometheus is made up various components;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The main&nbsp;<a href=\"https:\/\/github.com\/prometheus\/prometheus\" target=\"_blank\" rel=\"noopener\">Prometheus server<\/a>&nbsp;which scrapes and stores time series data<\/li>\n\n\n\n<li><a href=\"https:\/\/prometheus.io\/docs\/instrumenting\/clientlibs\/\" target=\"_blank\" rel=\"noopener\">Client libraries<\/a>&nbsp;for instrumenting application code<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/prometheus\/pushgateway\" target=\"_blank\" rel=\"noopener\">Push gateway<\/a>&nbsp;for supporting short-lived jobs<\/li>\n\n\n\n<li><a href=\"https:\/\/prometheus.io\/docs\/instrumenting\/exporters\/\" target=\"_blank\" rel=\"noopener\">Exporters<\/a>&nbsp;for exporting existing metrics from third-party systems as Prometheus metrics in cases where it is not feasible to instrument a given system with Prometheus metrics directly for example in services like HAProxy, StatsD, Graphite, etc.<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/prometheus\/alertmanager\" target=\"_blank\" rel=\"noopener\">Alertmanager<\/a>&nbsp;to handle alerts.<\/li>\n<\/ul>\n\n\n\n<p>Prometheus is available on the default Ubuntu 20.04 repos;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>apt-cache policy prometheus<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>prometheus:\n  Installed: (none)\n  Candidate: <strong>2.15.2+ds-2<\/strong>\n  Version table:\n     2.15.2+ds-2 500\n        500 http:\/\/ke.archive.ubuntu.com\/ubuntu focal\/universe amd64 Packages<\/code><\/pre>\n\n\n\n<p>However, as you might have noted, the Prometheus release versions provided by the default focal repos is not up-to-date. The version 2.18 is current stable release version of Prometheus.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install Prometheus Using Pre-compiled Binaries on Ubuntu 20.04<\/h3>\n\n\n\n<p>To ensure that you are installing the latest release version of Prometheus, use the <strong>pre-compiled<\/strong> binaries which can be downloaded directly from Prometheus&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/prometheus.io\/download\/\" target=\"_blank\">downloads section<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Prerequisites<\/h4>\n\n\n\n<p>Before you can go ahead and install Prometheus using pre-compiled binaries on Ubuntu 20.04;<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Create Prometheus System User and Group<\/h5>\n\n\n\n<p>Run the command below to create Prometheus system user and group;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>useradd -M -r -s \/bin\/false prometheus<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Create Prometheus Directories<\/h5>\n\n\n\n<p>Next, you need to create the directories that will be used to store Prometheus configurations files and other data.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>mkdir \/etc\/prometheus \/var\/lib\/prometheus<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Download Prometheus Binary<\/h5>\n\n\n\n<p>Next, navigate to Prometheus&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/prometheus.io\/download\/\" target=\"_blank\">downloads section<\/a> and grab the latest version of Prometheus. You simply use wget to download the Prometheus binary for Linux as shown below;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>wget https:\/\/github.com\/prometheus\/prometheus\/releases\/download\/v2.18.1\/prometheus-2.18.1.linux-amd64.tar.gz<\/code><\/pre>\n\n\n\n<p>Verify the integrity of the binary file downloaded by calculating the SHA256 hash.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sha256sum prometheus-2.18.1.linux-amd64.tar.gz<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>5fcc35b78bd0a1b84afae6de94248a4bea3cdb4daf0d54a37b5491cb86b014d7 prometheus-2.18.1.linux-amd64.tar.gz<\/code><\/pre>\n\n\n\n<p>Compare the resulting hash with the hash provided on the downloads page. Ensure that they match.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Install Prometheus on Ubuntu 20.04<\/h4>\n\n\n\n<p>Extract the downloaded Prometheus binary;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>tar xzf prometheus-2.18.1.linux-amd64.tar.gz<\/code><\/pre>\n\n\n\n<p>Copy the&nbsp;<strong><code>prometheus<\/code><\/strong>&nbsp;and&nbsp;<strong><code>promtool<\/code><\/strong>&nbsp;binaries under the extracted Prometheus archive folder to&nbsp;<code>\/usr\/local\/bin<\/code>&nbsp;directory.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>cp prometheus-2.18.1.linux-amd64\/{prometheus,promtool} \/usr\/local\/bin\/<\/code><\/pre>\n\n\n\n<p>After copying, set the user and group ownership of these binaries to&nbsp;<strong><code>prometheus<\/code><\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>chown prometheus:prometheus \/usr\/local\/bin\/{prometheus,promtool}<\/code><\/pre>\n\n\n\n<p>Next, copy the&nbsp;<code>consoles<\/code>&nbsp;and&nbsp;<code>console_libraries<\/code>&nbsp;directories to Prometheus configuration directory,&nbsp;<code>\/etc\/prometheus<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>cp -r prometheus-2.18.1.linux-amd64\/{consoles,console_libraries} \/etc\/prometheus\/<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Create Prometheus Configuration file<\/h4>\n\n\n\n<p>A sample Prometheus configuration file is available on the extracted archive folder. To make our work easier, just copy it to Prometheus configuration directory.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>cp prometheus-2.18.1.linux-amd64\/prometheus.yml \/etc\/prometheus\/<\/code><\/pre>\n\n\n\n<p>Modify the configuration file to suit your needs. In this case, we just go with the defaults.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vim \/etc\/prometheus\/prometheus.yml<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># my global config\nglobal:\n  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.\n  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.\n  # scrape_timeout is set to the global default (10s).\n\n# Alertmanager configuration\nalerting:\n  alertmanagers:\n  - static_configs:\n    - targets:\n      # - alertmanager:9093\n\n# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.\nrule_files:\n  # - \"first_rules.yml\"\n  # - \"second_rules.yml\"\n\n# A scrape configuration containing exactly one endpoint to scrape:\n# Here it's Prometheus itself.\nscrape_configs:\n  # The job name is added as a label `job=&lt;job_name&gt;` to any timeseries scraped from this config.\n  - job_name: 'prometheus'\n\n    # metrics_path defaults to '\/metrics'\n    # scheme defaults to 'http'.\n\n    static_configs:\n    - targets: &#91;'localhost:9090']<\/code><\/pre>\n\n\n\n<p>In the default configuration there is only a single job, called&nbsp;<strong>prometheus<\/strong>&nbsp;, which scrapes the time series data&nbsp;<strong>exposed<\/strong>&nbsp;by the&nbsp;<strong>Prometheus<\/strong>&nbsp;server. The job contains a single, statically configured, target, the localhost on&nbsp;<strong>port 9090<\/strong>.<\/p>\n\n\n\n<p>Next, set the user and group ownership of Prometheus configuration directory,&nbsp;<strong>\/etc\/prometheus<\/strong>&nbsp;to&nbsp;<strong>prometheus<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>chown -R prometheus:prometheus \/etc\/prometheus<\/code><\/pre>\n\n\n\n<p>Once that is done, similarly set the user and group ownership of Prometheus data directory,&nbsp;<strong>\/var\/lib\/prometheus\/<\/strong>&nbsp;to&nbsp;<strong>prometheus<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>chown prometheus:prometheus \/var\/lib\/prometheus<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Running Prometheus<\/h4>\n\n\n\n<p>At the very least, Prometheus is now set and is ready to run. However, at this point we do not have the Prometheus service configuration file and hence, we can run it as shown below;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>prometheus --config.file=\/etc\/prometheus\/prometheus.yml<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>...\nlevel=info ts=2020-05-29T08:32:47.317Z caller=main.go:678 msg=\"Starting TSDB \u2026\"\nlevel=info ts=2020-05-29T08:32:47.320Z caller=head.go:575 component=tsdb msg=\"Replaying WAL, this may take awhile\"\nlevel=info ts=2020-05-29T08:32:47.320Z caller=web.go:523 component=web msg=\"Start listening for connections\" <strong>address=0.0.0.0:9090<\/strong>\n...\nlevel=info ts=2020-05-29T08:32:47.326Z caller=main.go:695 msg=\"TSDB started\"\nlevel=info ts=2020-05-29T08:32:47.326Z caller=main.go:799 msg=\"Loading configuration file\" filename=\/etc\/prometheus\/prometheus.yml\nlevel=info ts=2020-05-29T08:32:47.731Z caller=main.go:827 msg=\"Completed loading of configuration file\" filename=\/etc\/prometheus\/prometheus.yml\nlevel=info ts=2020-05-29T08:32:47.731Z caller=main.go:646 msg=\"Server is ready to receive web requests.\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Accessing Prometheus from Web Interface<\/h3>\n\n\n\n<p>Open Prometheus port on firewall (UFW) if it is running. By default, it listens on TCP port 9090.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>ufw allow 9090\/tcp<\/code><\/pre>\n\n\n\n<p>Prometheus is now ready to receive web requests. You can access it from the browser using the address, <code><strong>http:\/\/server-IP-or-Hostname:9090<\/strong><\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1919\" height=\"605\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/prometheus-web.png\" alt=\"\" class=\"wp-image-5934\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/prometheus-web.png?v=1590743028 1919w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/prometheus-web-768x242.png?v=1590743028 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/prometheus-web-1536x484.png?v=1590743028 1536w\" sizes=\"(max-width: 1919px) 100vw, 1919px\" \/><\/figure>\n\n\n\n<p>To check the status of your node, navigate to&nbsp;<strong>Status<\/strong>&nbsp;&gt;&nbsp;<strong>Targets<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1915\" height=\"467\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/targets.png\" alt=\"Prometheus targets on Ubuntu 20.04\" class=\"wp-image-5935\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/targets.png?v=1590743047 1915w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/targets-768x187.png?v=1590743047 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/targets-1536x375.png?v=1590743047 1536w\" sizes=\"(max-width: 1915px) 100vw, 1915px\" \/><\/figure>\n\n\n\n<p>To view scraped metrics, navigate to,&nbsp;<strong>http:\/\/&lt;server_IP&gt;:9090\/metrics<\/strong><\/p>\n\n\n\n<p>To check memory statistics, for example, free memory available, select the <code><strong>go_memstats_frees_total<\/strong><\/code> query and click execute and see the result on the <strong>console<\/strong> tab.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1919\" height=\"613\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/memstats.png\" alt=\"\" class=\"wp-image-5936\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/memstats.png?v=1590743092 1919w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/memstats-768x245.png?v=1590743092 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/memstats-1536x491.png?v=1590743092 1536w\" sizes=\"(max-width: 1919px) 100vw, 1919px\" \/><\/figure>\n\n\n\n<p>To view the graph for the memory statistics, click <strong>Graph<\/strong> tab.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1898\" height=\"903\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/memstats-graph.png\" alt=\"\" class=\"wp-image-5937\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/memstats-graph.png?v=1590743126 1898w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/memstats-graph-768x365.png?v=1590743126 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/05\/memstats-graph-1536x731.png?v=1590743126 1536w\" sizes=\"(max-width: 1898px) 100vw, 1898px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Create Prometheus Systemd Service File<\/h4>\n\n\n\n<p>To run Prometheus as a service, you can create a systemd service configuration file as shown below;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vim \/etc\/systemd\/system\/prometheus.service<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Prometheus Time Series Collection and Processing Server\nWants=network-online.target\nAfter=network-online.target\n\n&#91;Service]\nUser=prometheus\nGroup=prometheus\nType=simple\nExecStart=\/usr\/local\/bin\/prometheus \\\n    --config.file \/etc\/prometheus\/prometheus.yml \\\n    --storage.tsdb.path \/var\/lib\/prometheus\/ \\\n    --web.console.templates=\/etc\/prometheus\/consoles \\\n    --web.console.libraries=\/etc\/prometheus\/console_libraries\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p>Next, reload systemd configuration files and start and enable Prometheus to run on system boot.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl daemon-reload\nsystemctl enable --now prometheus<\/code><\/pre>\n\n\n\n<p>To check the status of Prometheus service;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl status prometheus<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\u25cf prometheus.service - Prometheus Time Series Collection and Processing Server\n     Loaded: loaded (\/etc\/systemd\/system\/prometheus.service; enabled; vendor preset: enabled)\n     Active: active (running) since Fri 2020-05-29 08:56:32 UTC; 18s ago\n   Main PID: 105588 (prometheus)\n      Tasks: 6 (limit: 2281)\n     Memory: 17.1M\n     CGroup: \/system.slice\/prometheus.service\n             \u2514\u2500105588 \/usr\/local\/bin\/prometheus --config.file \/etc\/prometheus\/prometheus.yml --storage.tsdb.path \/var\/lib\/prometheus\/ --web.console.templates=\/etc\/promethe>\n\nMay 29 08:56:33 freeradius.kifarunix-demo.com prometheus&#91;105588]: level=info ts=2020-05-29T08:56:33.655Z caller=main.go:678 msg=\"Starting TSDB ...\"\nMay 29 08:56:33 freeradius.kifarunix-demo.com prometheus&#91;105588]: level=info ts=2020-05-29T08:56:33.657Z caller=head.go:575 component=tsdb msg=\"Replaying WAL, this may tak>\nMay 29 08:56:33 freeradius.kifarunix-demo.com prometheus&#91;105588]: level=info ts=2020-05-29T08:56:33.657Z caller=web.go:523 component=web msg=\"Start listening for connectio>\nMay 29 08:56:33 freeradius.kifarunix-demo.com prometheus&#91;105588]: level=info ts=2020-05-29T08:56:33.660Z caller=head.go:624 component=tsdb msg=\"WAL segment loaded\" segment>\nMay 29 08:56:33 freeradius.kifarunix-demo.com prometheus&#91;105588]: level=info ts=2020-05-29T08:56:33.660Z caller=head.go:627 component=tsdb msg=\"WAL replay completed\" durat>\nMay 29 08:56:33 freeradius.kifarunix-demo.com prometheus&#91;105588]: level=info ts=2020-05-29T08:56:33.662Z caller=main.go:694 fs_type=EXT4_SUPER_MAGIC\nMay 29 08:56:33 freeradius.kifarunix-demo.com prometheus&#91;105588]: level=info ts=2020-05-29T08:56:33.662Z caller=main.go:695 msg=\"TSDB started\"\nMay 29 08:56:33 freeradius.kifarunix-demo.com prometheus&#91;105588]: level=info ts=2020-05-29T08:56:33.662Z caller=main.go:799 msg=\"Loading configuration file\" filename=\/etc\/>\nMay 29 08:56:33 freeradius.kifarunix-demo.com prometheus&#91;105588]: level=info ts=2020-05-29T08:56:33.710Z caller=main.go:827 msg=\"Completed loading of configuration file\" f>\nMay 29 08:56:33 freeradius.kifarunix-demo.com prometheus&#91;105588]: level=info ts=2020-05-29T08:56:33.711Z caller=main.go:646 msg=\"Server is ready to receive web requests.\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Further Reading;<\/h3>\n\n\n\n<p><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/getting_started\/\" target=\"_blank\" rel=\"noreferrer noopener\">Prometheus Getting Started<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Other Related Tutorials<\/h3>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kifarunix.com\/monitor-linux-system-metrics-with-prometheus-node-exporter\/\" target=\"_blank\">Monitor Linux System Metrics with Prometheus Node Exporter<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kifarunix.com\/install-graylog-3-0-on-centos-7\/\" target=\"_blank\">Install Graylog 3.0 on CentOS 7<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kifarunix.com\/monitor-squid-access-logs-with-graylog-server\/\" target=\"_blank\">Monitor Squid Access Logs with Graylog Server<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kifarunix.com\/monitor-squid-logs-with-grafana-and-graylog\/\" target=\"_blank\">Monitor Squid logs with Grafana and Graylog<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this guide, we are going to learn how to install Prometheus on Ubuntu 20.04.&nbsp;Prometheus&nbsp;is an open-source systems and service monitoring system. It collects metrics<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,72,294],"tags":[1612,295,1614,1613,1200],"class_list":["post-5929","post","type-post","status-publish","format-standard","hentry","category-howtos","category-monitoring","category-prometheus","tag-install-prometheus-on-ubuntu-20-04","tag-prometheus","tag-prometheus-nodes","tag-prometheus-ubuntu-20-04","tag-ubuntu-20-04","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/5929"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=5929"}],"version-history":[{"count":5,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/5929\/revisions"}],"predecessor-version":[{"id":21378,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/5929\/revisions\/21378"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=5929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=5929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=5929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}