{"id":25577,"date":"2023-06-05T12:17:25","date_gmt":"2023-06-05T10:17:25","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=25577"},"modified":"2024-09-11T10:18:40","modified_gmt":"2024-09-11T08:18:40","slug":"snmp-monitoring-with-prometheus","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/","title":{"rendered":"SNMP Monitoring with Prometheus"},"content":{"rendered":"\n<p>It is not always possible to install an exporter on the server or equipment you must monitor, either because you don&#8217;t administrate that server, or it cannot run an exporter (ie. device with limited resources).<\/p>\n\n\n\n<p>For that purpose, two exporters were built to be able to get metrics and status remotely:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/prometheus\/snmp_exporter\" target=\"_blank\" rel=\"noreferrer noopener\">SNMP exporter<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/prometheus\/blackbox_exporter\" target=\"_blank\" rel=\"noreferrer noopener\">Blackbox exporter<\/a><\/li>\n<\/ul>\n\n\n\n<p>In this blog, I will focus on configuring and integrating the SNMP exporter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Simple Network Management Protocol<\/h2>\n\n\n\n<p>SNMP is mostly used for monitoring network equipment&#8217;s like router, switch or modem which have limited resources. Because of the lack of resources, it is not possible to run an exporter on it and as Prometheus is not able to scrap SNMP agent, we must have something in between. That something is the SNMP exporter. As I do not have any SNMP equipment, I choose to run an SNMP simulator (snmpsim).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Setup the SNMP Exporter<\/h2>\n\n\n\n<p>The SNMP exporter will make the interface between SNMP agent and Prometheus. It will gather status and metrics based on request arguments received from Prometheus server. SNMP exporter can run on Prometheus server itself or another host. Starting exporter, as a docker container, is a one-liner:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker run -p 9116:9116 --name snmp-exporter prom\/snmp-exporter\n<\/pre><\/div>\n\n\n<p>Let&#8217;s access the URL:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"282\" height=\"239\" src=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/06\/2023-06-05-10_30_39-SNMP-Exporter-\u2014-Mozilla-Firefox.png\" alt=\"\" class=\"wp-image-25583\" \/><\/figure>\n\n\n\n<p>As you can see, scraping a SNMP host will require two arguments:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>target: obviously the IP running a SNMP agent<\/li>\n\n\n\n<li>module: the module as defined in snmp.yml (the SNMP exporter configuration)<\/li>\n<\/ul>\n\n\n\n<p>For now, I will use if_mib to get metrics about network interfaces.<\/p>\n\n\n\n<p>Before going to the next step, let&#8217;s git it a try by filling target IP and click submit. This is building a new URL and redirecting my browser to it <code>http:\/\/localhost:9116\/snmp?target=172.17.0.1&amp;module=if_mib<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# HELP ifAdminStatus The desired state of the interface - 1.3.6.1.2.1.2.2.1.7\n# TYPE ifAdminStatus gauge\nifAdminStatus{ifAlias=&quot;&quot;,ifDescr=&quot;eth0&quot;,ifIndex=&quot;2&quot;,ifName=&quot;eth0&quot;} 1\nifAdminStatus{ifAlias=&quot;&quot;,ifDescr=&quot;lo&quot;,ifIndex=&quot;1&quot;,ifName=&quot;lo&quot;} 1\n# HELP ifConnectorPresent This object has the value &#039;true(1)&#039; if the interface sublayer has a physical connector and the value &#039;false(2)&#039; otherwise. - 1.3.6.1.2.1.31.1.1.1.17\n# TYPE ifConnectorPresent gauge\nifConnectorPresent{ifAlias=&quot;&quot;,ifDescr=&quot;eth0&quot;,ifIndex=&quot;2&quot;,ifName=&quot;eth0&quot;} 1\n# HELP ifCounterDiscontinuityTime The value of sysUpTime on the most recent occasion at which any one or more of this interface&#039;s counters suffered a discontinuity - 1.3.6.1.2.1.31.1.1.1.19\n# TYPE ifCounterDiscontinuityTime gauge\nifCounterDiscontinuityTime{ifAlias=&quot;&quot;,ifDescr=&quot;eth0&quot;,ifIndex=&quot;2&quot;,ifName=&quot;eth0&quot;} 0\nifCounterDiscontinuityTime{ifAlias=&quot;&quot;,ifDescr=&quot;lo&quot;,ifIndex=&quot;1&quot;,ifName=&quot;lo&quot;} 0\n# HELP ifHCInBroadcastPkts The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were addressed to a broadcast address at this sub-layer - 1.3.6.1.2.1.31.1.1.1.9\n# TYPE ifHCInBroadcastPkts counter\nifHCInBroadcastPkts{ifAlias=&quot;&quot;,ifDescr=&quot;eth0&quot;,ifIndex=&quot;2&quot;,ifName=&quot;eth0&quot;} 27475\nifHCInBroadcastPkts{ifAlias=&quot;&quot;,ifDescr=&quot;lo&quot;,ifIndex=&quot;1&quot;,ifName=&quot;lo&quot;} 27483\n&#x5B;...]\n<\/pre><\/div>\n\n\n<p>It looks like a usual Prometheus metrics format.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prometheus Configuration<\/h2>\n\n\n\n<p>Now, it is time to declare a new scraper job by adding the yaml below in <code>prometheus.yml<\/code> under <code>scrape_configs<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n  - job_name: &#039;snmp&#039;\n    static_configs:\n      - targets:\n        - 172.17.0.1 # SNMP device.\n    metrics_path: \/snmp\n    params:\n      module: &#x5B;if_mib]\n    relabel_configs:\n      - source_labels: &#x5B;__address__]\n        target_label: __param_target\n      - source_labels: &#x5B;__param_target]\n        target_label: instance\n      - target_label: __address__\n        replacement: 172.21.111.123:9116  # The SNMP exporter&#039;s real hostname:port.\n<\/pre><\/div>\n\n\n<p>In Prometheus, each metric has one or multiple labels for identifying the source of it and easier filtering. In this example, as a single SNMP exporter can scrap multiple SNMP targets, we must set labels (ie. relabel) dynamically based on which host it is currently scrapped. What is static will be under <code>params<\/code> node like <code>module=if_mib<\/code>.<\/p>\n\n\n\n<p>Keep in mind that <code>relabel_configs<\/code> are applied before scrapping metrics.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Target Parameter<\/h3>\n\n\n\n<p>First URL parameter will be the <code>target=172.17.0.1<\/code>. For that, I am using internal label <code>__param_target<\/code>, where target will be the name of the parameter in the url and the value will be <code>__address__<\/code> (ie. 172.17.0.1). This is line 9 and 10.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Relabeling Instance<\/h3>\n\n\n\n<p>Line 11 and 12 are required for <code>instance<\/code> label to be properly populated. Let&#8217;s compare what would happen if we omitted these lines. If we query <code>ifAdminStatus{ifName=\"eth0\"}<\/code>, we will have this result:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nifAdminStatus{ifDescr=&quot;eth0&quot;, ifIndex=&quot;2&quot;, ifName=&quot;eth0&quot;, instance=&quot;172.21.111.123:9116&quot;, job=&quot;snmp&quot;}\n<\/pre><\/div>\n\n\n<p><code>instance<\/code> contains the IP\/port of the scraped host which is the SNMP exporter IP whereas we want the final target information in that field. This is even more important if you scrap multiple SNMP hosts as all metrics will have same instance field, preventing you to really know from which host metric comes from. So, to avoid that, line 11 and 12 are relabeling instance by overwriting content of instance with <code>__param_target<\/code>. Let&#8217;s add these lines back and check what is query result:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nifAdminStatus{ifDescr=&quot;eth0&quot;, ifIndex=&quot;2&quot;, ifName=&quot;eth0&quot;, instance=&quot;172.17.0.1&quot;, job=&quot;snmp&quot;}\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Actual Target<\/h3>\n\n\n\n<p><code>__address__<\/code> is a label reserved for Prometheus that is used the actual target that is scraped. Without line 13 and 14, Prometheus will try to scrap SNMP Agent IP which will obviously not work. Just to give it a try, I commented out both lines. In the target menu of Prometheus, I can see the endpoint in down with error message:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nGet &quot;http:\/\/172.17.0.1:80\/snmp?module=if_mib&amp;amp;target=172.17.0.1&quot;: dial tcp 172.17.0.1:80: connect: connection refused\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Conclusion and what&#8217;s next?<\/h2>\n\n\n\n<p>Relabeling is an important and powerful feature which is also used for blackbox exporter. In this blog, we covered the aim of all 3 labels defined in SNMP job. Next, Prometheus will store results and Grafana could query them.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It is not always possible to install an exporter on the server or equipment you must monitor, either because you don&#8217;t administrate that server, or it cannot run an exporter (ie. device with limited resources). For that purpose, two exporters were built to be able to get metrics and status remotely: In this blog, I [&hellip;]<\/p>\n","protected":false},"author":40,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197],"tags":[143,2234,2973],"type_dbi":[],"class_list":["post-25577","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","tag-monitoring","tag-prometheus","tag-snmp"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SNMP Monitoring with Prometheus - dbi Blog<\/title>\n<meta name=\"description\" content=\"What is the installation process to install and configure SNMP Exporter to get metrics into Prometheus.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SNMP Monitoring with Prometheus\" \/>\n<meta property=\"og:description\" content=\"What is the installation process to install and configure SNMP Exporter to get metrics into Prometheus.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-05T10:17:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-11T08:18:40+00:00\" \/>\n<meta name=\"author\" content=\"Middleware Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Middleware Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/snmp-monitoring-with-prometheus\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/snmp-monitoring-with-prometheus\\\/\"},\"author\":{\"name\":\"Middleware Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\"},\"headline\":\"SNMP Monitoring with Prometheus\",\"datePublished\":\"2023-06-05T10:17:25+00:00\",\"dateModified\":\"2024-09-11T08:18:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/snmp-monitoring-with-prometheus\\\/\"},\"wordCount\":622,\"commentCount\":2,\"keywords\":[\"Monitoring\",\"Prometheus\",\"SNMP\"],\"articleSection\":[\"Application integration &amp; Middleware\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/snmp-monitoring-with-prometheus\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/snmp-monitoring-with-prometheus\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/snmp-monitoring-with-prometheus\\\/\",\"name\":\"SNMP Monitoring with Prometheus - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2023-06-05T10:17:25+00:00\",\"dateModified\":\"2024-09-11T08:18:40+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\"},\"description\":\"What is the installation process to install and configure SNMP Exporter to get metrics into Prometheus.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/snmp-monitoring-with-prometheus\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/snmp-monitoring-with-prometheus\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/snmp-monitoring-with-prometheus\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SNMP Monitoring with Prometheus\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\",\"name\":\"Middleware Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"caption\":\"Middleware Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/middleware-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SNMP Monitoring with Prometheus - dbi Blog","description":"What is the installation process to install and configure SNMP Exporter to get metrics into Prometheus.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/","og_locale":"en_US","og_type":"article","og_title":"SNMP Monitoring with Prometheus","og_description":"What is the installation process to install and configure SNMP Exporter to get metrics into Prometheus.","og_url":"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/","og_site_name":"dbi Blog","article_published_time":"2023-06-05T10:17:25+00:00","article_modified_time":"2024-09-11T08:18:40+00:00","author":"Middleware Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Middleware Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/"},"author":{"name":"Middleware Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"headline":"SNMP Monitoring with Prometheus","datePublished":"2023-06-05T10:17:25+00:00","dateModified":"2024-09-11T08:18:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/"},"wordCount":622,"commentCount":2,"keywords":["Monitoring","Prometheus","SNMP"],"articleSection":["Application integration &amp; Middleware"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/","url":"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/","name":"SNMP Monitoring with Prometheus - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2023-06-05T10:17:25+00:00","dateModified":"2024-09-11T08:18:40+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"description":"What is the installation process to install and configure SNMP Exporter to get metrics into Prometheus.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/snmp-monitoring-with-prometheus\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SNMP Monitoring with Prometheus"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1","name":"Middleware Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","caption":"Middleware Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/25577","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=25577"}],"version-history":[{"count":15,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/25577\/revisions"}],"predecessor-version":[{"id":25619,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/25577\/revisions\/25619"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=25577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=25577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=25577"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=25577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}