<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Checkmk | sgala.com . website</title><link>https://staging.sgala.com/tag/checkmk/</link><atom:link href="https://staging.sgala.com/tag/checkmk/index.xml" rel="self" type="application/rss+xml"/><description>Checkmk</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 27 Mar 2023 21:17:06 +0100</lastBuildDate><image><url>https://staging.sgala.com/media/icon_hu_fc753c5997041613.png</url><title>Checkmk</title><link>https://staging.sgala.com/tag/checkmk/</link></image><item><title>Fetch a service status detail via CheckMk REST API</title><link>https://staging.sgala.com/post/checkmk-api-get-service/</link><pubDate>Mon, 27 Mar 2023 21:17:06 +0100</pubDate><guid>https://staging.sgala.com/post/checkmk-api-get-service/</guid><description>&lt;p&gt;I had to write a script that fetch from a &lt;a href="https://checkmk.com/" target="_blank" rel="noopener"&gt;CheckMk&lt;/a&gt; monitored service the status of that service and do something.&lt;/p&gt;
&lt;p&gt;I tried to ask how to do this to several friends that are using CheckMk&amp;hellip; no one had ever do this before ;(&lt;/p&gt;
&lt;p&gt;In my real scenario I need to fetch a specific service status:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Critical&lt;/li&gt;
&lt;li&gt;Contains some specific text matching in the perf data field.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tldr"&gt;TL;DR;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;USERNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$USERNAME&lt;/span&gt;$
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PASSWORD&lt;/span&gt;$
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -s -G &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --header &lt;span class="s2"&gt;&amp;#34;Accept: */*&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -H &lt;span class="s2"&gt;&amp;#34;Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USERNAME&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$PASSWORD&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --data-urlencode &lt;span class="s1"&gt;&amp;#39;columns=host_name&amp;#39;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --data-urlencode &lt;span class="s1"&gt;&amp;#39;columns=perf_data&amp;#39;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --data-urlencode &lt;span class="s1"&gt;&amp;#39;query= \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; { &amp;#34;op&amp;#34;: &amp;#34;and&amp;#34;, &amp;#34;expr&amp;#34;:[{&amp;#34;op&amp;#34;: &amp;#34;=&amp;#34;, &amp;#34;left&amp;#34;: &amp;#34;host_name&amp;#34;, &amp;#34;right&amp;#34;: &amp;#34;$HOSTNAME$&amp;#34;}, \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; { &amp;#34;op&amp;#34;: &amp;#34;=&amp;#34;, &amp;#34;left&amp;#34;: &amp;#34;description&amp;#34;, &amp;#34;right&amp;#34;: &amp;#34;$SERVICE_NAME$&amp;#34;}, \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; { &amp;#34;op&amp;#34;: &amp;#34;=&amp;#34;, &amp;#34;left&amp;#34;: &amp;#34;state&amp;#34;, &amp;#34;right&amp;#34;: &amp;#34;2&amp;#34; }, \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; { &amp;#34;op&amp;#34;: &amp;#34;~~&amp;#34;, &amp;#34;left&amp;#34;: &amp;#34;perf_data&amp;#34;, &amp;#34;right&amp;#34;: &amp;#34;$SOMETHING_TO_FILTER&amp;#34; } ]}&amp;#39;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$CHECKMK_URL&lt;/span&gt;$&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$SITE_NAME&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;/check_mk/api/1.0/domain-types/service/collections/all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In this example the shell lines do a CURL request to the CheckMk REST API and fetch only the status of the service $SERVICE_NAME$ that are in a Critical status and contains the word $SOMETHING_TO_FILTER$.
The query it&amp;rsquo;s very useful as you can fine match what do you want without write any code outside.
The query is wrote in the &lt;a href="https://docs.checkmk.com/latest/en/livestatus_references.html#filter" target="_blank" rel="noopener"&gt;livestatus &amp;ldquo;language&amp;rdquo;&lt;/a&gt;.
As you can see there are multiple columns added, these are not provided by default in the results, so I added them because were needed in my scenario.&lt;/p&gt;
&lt;h1 id="some-links"&gt;Some links&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;a post I did on checkmk forum about some issues resolving this &lt;a href="https://forum.checkmk.com/t/rest-api-fetch-service-status-missing-details-summary/37613" target="_blank" rel="noopener"&gt;https://forum.checkmk.com/t/rest-api-fetch-service-status-missing-details-summary/37613&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;more example/docs &lt;a href="https://kb.checkmk.com/display/KB/REST-API&amp;#43;Code&amp;#43;Examples" target="_blank" rel="noopener"&gt;https://kb.checkmk.com/display/KB/REST-API+Code+Examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>