{"id":8541,"date":"2021-04-04T23:16:33","date_gmt":"2021-04-04T20:16:33","guid":{"rendered":"https:\/\/kifarunix.com\/?p=8541"},"modified":"2024-03-19T08:25:50","modified_gmt":"2024-03-19T05:25:50","slug":"monitor-ssl-tls-certificate-expiry-with-prometheus-and-grafana","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/monitor-ssl-tls-certificate-expiry-with-prometheus-and-grafana\/","title":{"rendered":"Monitor SSL\/TLS Certificate Expiry with Prometheus and Grafana"},"content":{"rendered":"\n<p>In this tutorial, you will learn how to monitor SSL\/TLS certificate expiry with Prometheus and Grafana. Well, with the assumption that you are already aware about the <a aria-label=\"implications of an expired SSL\/TLS certificate (opens in a new tab)\" href=\"https:\/\/comodosslstore.com\/blog\/hazards-of-an-expired-ssl-certificate.html\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"rank-math-link\">implications of an expired SSL\/TLS certificate<\/a>, we will be discussing how to monitor SSL\/TLS certificates to avoid encountering such issues.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Monitoring SSL\/TLS Certificate Expiry with Prometheus and Grafana<\/h2>\n\n\n\n<p>Note that, in this setup, we are using a single node hosting Telegraf (to poll certificate stats), Prometheus and Grafana.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install and setup Grafana<\/h3>\n\n\n\n<p>You can use any of the guides below or any other guide to install and setup Grafana;<\/p>\n\n\n\n<p><a aria-label=\" (opens in a new tab)\" href=\"https:\/\/kifarunix.com\/install-latest-grafana-on-debian-10\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"rank-math-link\">Install latest Grafana on Debian 10<\/a><\/p>\n\n\n\n<p><a aria-label=\" (opens in a new tab)\" href=\"https:\/\/kifarunix.com\/install-latest-grafana-on-centos-8\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"rank-math-link\">Install Latest Grafana on CentOS 8<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install and Setup Prometheus Server<\/h3>\n\n\n\n<p>Similarly, you can use any of the guides below or any other guide to install and setup Prometheus<\/p>\n\n\n\n<p><a aria-label=\" (opens in a new tab)\" href=\"https:\/\/kifarunix.com\/install-and-setup-prometheus-on-ubuntu-20-04\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"rank-math-link\">Install and Setup Prometheus on Ubuntu 20.04<\/a><\/p>\n\n\n\n<p><a aria-label=\" (opens in a new tab)\" href=\"https:\/\/kifarunix.com\/install-and-configure-prometheus-on-centos-8\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"rank-math-link\">Install and Configure Prometheus on CentOS 8<\/a><\/p>\n\n\n\n<p><a aria-label=\" (opens in a new tab)\" href=\"https:\/\/kifarunix.com\/install-prometheus-on-debian-10\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"rank-math-link\">Install Prometheus on Debian 10<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install and setup Telegraf<\/h3>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/www.influxdata.com\/time-series-platform\/telegraf\/\" target=\"_blank\">Telegraf<\/a>&nbsp;is a plugin-driven server agent that is used for collecting and sending metrics and events from databases, systems, and IoT sensors.<\/p>\n\n\n\n<p>Telegraf through its x509_cert&nbsp;plugin, which provides statistics about X509 certificate accessible via local file or network connection. Such statistics can be sent to Prometheus where then, can be visualized using Grafana.<\/p>\n\n\n\n<p>Before you can install Telegraf, ensure that the time is correctly set. <em>Telegraf uses a host\u2019s local time in UTC to assign timestamps to data. Use the Network Time Protocol (NTP) to synchronize time between hosts; if hosts&#8217; clocks aren\u2019t synchronized with NTP, the timestamps on the data can be inaccurate<\/em>.<\/p>\n\n\n\n<p>In our setup, we are using a Debian system, hence you can install Telegraf as follows;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>wget -qO- https:\/\/repos.influxdata.com\/influxdb.key | sudo apt-key add -<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>echo \"deb https:\/\/repos.influxdata.com\/debian buster stable\" | sudo tee \/etc\/apt\/sources.list.d\/influxdb.list<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>apt update<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>apt install telegraf<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Configuring Telegraf <\/h3>\n\n\n\n<p>Once Telegraf is installed and running, configure it to enable Prometheus to scrape metrics from it;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vim<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># # Configuration for the Prometheus client to spawn\n &#91;&#91;outputs.prometheus_client]]\n#   ## Address to listen on\n   listen = \"192.168.59.12:9273\"\n   metric_version = 2<\/code><\/pre>\n\n\n\n<p>Next, configure Telegraf to poll SSL certificate metrics, either local file or from network connection.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># # Reads metrics from a SSL certificate\n &#91;&#91;inputs.x509_cert]]\n#   ## List certificate sources\n#   sources = &#91;\"\/etc\/ssl\/certs\/ssl-cert-snakeoil.pem\", \"tcp:\/\/example.org:443\"]\n   sources = &#91;\"https:\/\/kifarunix-demo.com:443\"]\n   insecure_skip_verify = true<\/code><\/pre>\n\n\n\n<p>You can disable the default input plugins: cpu, disk, diskio, kernel, mem, processes, swap and system by commenting them.<\/p>\n\n\n\n<p>Save and exit the configuration file.<\/p>\n\n\n\n<p>The x509 certificate input plugin metrics include;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>x509_cert\n<ul class=\"wp-block-list\">\n<li>tags:\n<ul class=\"wp-block-list\">\n<li>source &#8211; source of the certificate<\/li>\n\n\n\n<li>organization<\/li>\n\n\n\n<li>organizational_unit<\/li>\n\n\n\n<li>country<\/li>\n\n\n\n<li>province<\/li>\n\n\n\n<li>locality<\/li>\n\n\n\n<li>verification<\/li>\n\n\n\n<li>serial_number<\/li>\n\n\n\n<li>signature_algorithm<\/li>\n\n\n\n<li>public_key_algorithm<\/li>\n\n\n\n<li>issuer_common_name<\/li>\n\n\n\n<li>issuer_serial_number<\/li>\n\n\n\n<li>san<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>fields:\n<ul class=\"wp-block-list\">\n<li>verification_code (int)<\/li>\n\n\n\n<li>verification_error (string)<\/li>\n\n\n\n<li>expiry (int, seconds)<\/li>\n\n\n\n<li>age (int, seconds)<\/li>\n\n\n\n<li>startdate (int, seconds)<\/li>\n\n\n\n<li>enddate (int, seconds)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Restart Telegraf;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl restart telegraf<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Add Telegraf Target to Prometheus<\/h3>\n\n\n\n<p>For Prometheus to be able to scrape the SSL certificate metrics collected by the Telegraf, open the <code><strong>prometheus.yml <\/strong><\/code>configuration and add the target like;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  - job_name: 'SSL\/TLS Certs'\n    static_configs:\n    - targets: &#91;'192.168.59.12:9273']<\/code><\/pre>\n\n\n\n<p>See my configuration file below.<\/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># 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']\n\n  - job_name: 'SSL\/TLS Certs'\n    static_configs:\n    - targets: &#91;'192.168.59.12:9273']<\/code><\/pre>\n\n\n\n<p>Save and exit the file;<\/p>\n\n\n\n<p>Restart Prometheus;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl restart prometheus<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Verify the status of Prometheus Target<\/h3>\n\n\n\n<p>You can check status of the Prometheus telegraf target;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1899\" height=\"553\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/telegraf-target-status.png\" alt=\"\" class=\"wp-image-8569\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/telegraf-target-status.png?v=1617555404 1899w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/telegraf-target-status-768x224.png?v=1617555404 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/telegraf-target-status-1536x447.png?v=1617555404 1536w\" sizes=\"(max-width: 1899px) 100vw, 1899px\" \/><\/figure>\n\n\n\n<p>Also, check the Prometheus queries for <code><strong>x509*<\/strong><\/code> metrics.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1907\" height=\"488\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/telegraf-x509-metrics.png\" alt=\"\" class=\"wp-image-8570\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/telegraf-x509-metrics.png?v=1617556360 1907w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/telegraf-x509-metrics-768x197.png?v=1617556360 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/telegraf-x509-metrics-1536x393.png?v=1617556360 1536w\" sizes=\"(max-width: 1907px) 100vw, 1907px\" \/><\/figure>\n\n\n\n<p>Running the <strong><code>x509_cert_expiry<\/code><\/strong> query and filtering out some metrics. This is the expiry query we used, <code><strong>x509_cert_expiry{san!=\"\"}<\/strong><\/code>, which filters out any metric that do not contain <strong><code>san<\/code><\/strong> value.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1908\" height=\"539\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/x509-certificate-expiry-metrics.png\" alt=\"\" class=\"wp-image-8571\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/x509-certificate-expiry-metrics.png?v=1617560852 1908w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/x509-certificate-expiry-metrics-768x217.png?v=1617560852 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/x509-certificate-expiry-metrics-1536x434.png?v=1617560852 1536w\" sizes=\"(max-width: 1908px) 100vw, 1908px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Integrate Prometheus with Grafana For Monitoring<\/h3>\n\n\n\n<p>You can now integrate Prometheus with Grafana by adding Prometheus data source to Grafana. Check the link below;<\/p>\n\n\n\n<p><a aria-label=\"Integrate Prometheus with Grafana For Monitoring (opens in a new tab)\" href=\"https:\/\/kifarunix.com\/integrate-prometheus-with-grafana-for-monitoring\/#add-grafana-prometheus-data-source\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"rank-math-link\">Integrate Prometheus with Grafana For Monitoring<\/a><\/p>\n\n\n\n<p>Data sources, once you have added the Prometheus data source.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1506\" height=\"409\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/prometheus-grafana-data-source.png\" alt=\"\" class=\"wp-image-8565\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/prometheus-grafana-data-source.png?v=1617519363 1506w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/prometheus-grafana-data-source-768x209.png?v=1617519363 768w\" sizes=\"(max-width: 1506px) 100vw, 1506px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Using Prometheus and Grafana to Monitor SSL\/TLS Certificate Expiry<\/h3>\n\n\n\n<p>Once you have integrated Prometheus with Grafana, you can now proceed to configure Prometheus to poll your servers certificate metrics and sent them to Grafana for visualization.<\/p>\n\n\n\n<p>Create SSL Certificate Expiry Dashboard.<\/p>\n\n\n\n<p>On the left menu panel, click the <strong>+ (plus sign) &gt; Dashboard &gt;  Add an empty panel<\/strong>.<\/p>\n\n\n\n<p>Sample Mock Dashboard;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1895\" height=\"887\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/grafana-ssl-expiry-dashboard_mock-1.png\" alt=\"\" class=\"wp-image-8575\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/grafana-ssl-expiry-dashboard_mock-1.png?v=1617565628 1895w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/grafana-ssl-expiry-dashboard_mock-1-768x359.png?v=1617565628 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/grafana-ssl-expiry-dashboard_mock-1-1536x719.png?v=1617565628 1536w\" sizes=\"(max-width: 1895px) 100vw, 1895px\" \/><\/figure>\n\n\n\n<p>Save the dashboard once you are done setting it up.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1086\" height=\"388\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/saved-ssl-monitoring-dashboard-grafana.png\" alt=\"\" class=\"wp-image-8576\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/saved-ssl-monitoring-dashboard-grafana.png?v=1617565828 1086w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/04\/saved-ssl-monitoring-dashboard-grafana-768x274.png?v=1617565828 768w\" sizes=\"(max-width: 1086px) 100vw, 1086px\" \/><\/figure>\n\n\n\n<p>Here is the sample JSON file for my dashboard above;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations &amp; Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 0,\n  \"id\": 2,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"datasource\": null,\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"custom\": {\n            \"align\": \"left\",\n            \"filterable\": false\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": [\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"Value #A\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"unit\",\n                \"value\": \"dtdurations\"\n              },\n              {\n                \"id\": \"decimals\",\n                \"value\": 2\n              },\n              {\n                \"id\": \"custom.displayMode\",\n                \"value\": \"color-background\"\n              },\n              {\n                \"id\": \"displayName\",\n                \"value\": \"Expiry Date\"\n              },\n              {\n                \"id\": \"thresholds\",\n                \"value\": {\n                  \"mode\": \"absolute\",\n                  \"steps\": [\n                    {\n                      \"color\": \"red\",\n                      \"value\": null\n                    },\n                    {\n                      \"color\": \"semi-dark-orange\",\n                      \"value\": 864000\n                    },\n                    {\n                      \"color\": \"green\",\n                      \"value\": 2592000\n                    }\n                  ]\n                }\n              }\n            ]\n          }\n        ]\n      },\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 11,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 2,\n      \"options\": {\n        \"frameIndex\": 1,\n        \"showHeader\": true\n      },\n      \"pluginVersion\": \"7.5.2\",\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"x509_cert_expiry{san!=\\\"\\\"}\",\n          \"format\": \"table\",\n          \"instant\": true,\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"SSL\/TLS Certificate Expiry Status\",\n      \"transformations\": [\n        {\n          \"id\": \"merge\",\n          \"options\": {}\n        },\n        {\n          \"id\": \"organize\",\n          \"options\": {\n            \"excludeByName\": {\n              \"__name__\": true,\n              \"common_name\": false,\n              \"host\": true,\n              \"instance\": true,\n              \"issuer_common_name\": true,\n              \"job\": true,\n              \"public_key_algorithm\": true,\n              \"san\": true,\n              \"serial_number\": true,\n              \"signature_algorithm\": true,\n              \"verification\": true,\n              \"verification_error\": true\n            },\n            \"indexByName\": {},\n            \"renameByName\": {}\n          }\n        }\n      ],\n      \"type\": \"table\"\n    }\n  ],\n  \"schemaVersion\": 27,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": []\n  },\n  \"time\": {\n    \"from\": \"now-6h\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {},\n  \"timezone\": \"\",\n  \"title\": \"SSL\/TLS Certificate Expiry Status\",\n  \"uid\": \"nRouqJ_Gk\",\n  \"version\": 1\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Other related tutorials<\/h3>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/monitor-ssl-tls-certificates-expiry-with-nagios\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"rank-math-link\">Monitor SSL\/TLS Certificates Expiry with Nagios<\/a><\/p>\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 href=\"https:\/\/kifarunix.com\/monitoring-gitlab-metrics-with-prometheus-and-grafana\/\" target=\"_blank\" rel=\"noreferrer noopener\">Monitoring Gitlab Metrics with Prometheus and Grafana<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/monitor-openvpn-connections-with-prometheus-and-grafana\/\" target=\"_blank\" rel=\"noreferrer noopener\">Monitor OpenVPN Connections with Prometheus and Grafana<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-opennms-network-monitoring-tool-on-ubuntu\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"rank-math-link\">Install OpenNMS Network Monitoring tool on Ubuntu 20.04<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, you will learn how to monitor SSL\/TLS certificate expiry with Prometheus and Grafana. Well, with the assumption that you are already aware<\/p>\n","protected":false},"author":1,"featured_media":8581,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[72,301,121,34,1187,933,932],"tags":[3404,3406,3405,3407],"class_list":["post-8541","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-monitoring","category-grafana","category-howtos","category-security","category-ssl-tls","category-telegraf","category-tick-stack","tag-monitor-ssl-certificate-with-grafana","tag-monitor-ssl-tls-certificate-expiry-with-prometheus-and-grafana","tag-ssl-certificate-monitor-grafana","tag-ssl-monitoring-grafana","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/8541"}],"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\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=8541"}],"version-history":[{"count":14,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/8541\/revisions"}],"predecessor-version":[{"id":21853,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/8541\/revisions\/21853"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/8581"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=8541"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=8541"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=8541"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}