{"id":1353,"date":"2022-10-05T13:04:56","date_gmt":"2022-10-05T12:04:56","guid":{"rendered":"https:\/\/marketaylor.synology.me\/?p=1353"},"modified":"2022-11-15T12:41:07","modified_gmt":"2022-11-15T12:41:07","slug":"mq-queue-rate-monitoring","status":"publish","type":"post","link":"https:\/\/marketaylor.synology.me\/?p=1353","title":{"rendered":"Snippet 2 &#8211; Basic MQ Queue Rate monitoring"},"content":{"rendered":"\n<p>My <a href=\"https:\/\/marketaylor.synology.me\/?p=1335\" target=\"_blank\" rel=\"noreferrer noopener\">previous post<\/a> was about one small project I got involved with over the last week. This is another one prompted by working with an MQ user, this time to do with metrics. Essentially they had an urgent need to do some basic MQ queue rate monitoring: how many messages were put\/got in an interval. More sophisticated observability, whether using a product like <a href=\"https:\/\/www.instana.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Instana<\/a>, or tools such as <a href=\"https:\/\/github.com\/ibm-messaging\/mq-metric-samples\" target=\"_blank\" rel=\"noreferrer noopener\">these<\/a>, would be a later exercise. I described what MQ can generate, and what some of the provided sample programs do, but decided it was more interesting to demonstrate it with real running code.<\/p>\n\n\n\n<p>I also think of this as the coding version of the<a href=\"https:\/\/en.wikipedia.org\/wiki\/Yes,_and...\" target=\"_blank\" rel=\"noreferrer noopener\"> &#8220;Yes, And &#8230;&#8221; rule for Improv<\/a>. Start with one piece and see where it leads. I ended up with 3 pieces &#8211; collect data, format data, display data. Each piece had some utility on its own, but I then thought &#8220;Yes, and then what can I do to demonstrate the next phase most effectively.&#8221;<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading\">Collect the data<\/h3>\n\n\n\n<p>If I want to see information about message counts on queues, there are (at least) three different ways of getting it:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Use the RESET QSTATS command. I don&#8217;t like this, but it&#8217;s what a lot of traditional tools use. My objections are twofold: on Distributed platforms it&#8217;s only available via PCF, not MQSC commands; and it&#8217;s easy for two tools to interfere with each other, confusing the statistics.<\/li><li>Use<a href=\"https:\/\/www.ibm.com\/docs\/en\/ibm-mq\/9.3?topic=messages-statistics\" target=\"_blank\" rel=\"noreferrer noopener\"> STATISTICS event messages<\/a>. These are trivial to configure on the queue manager. Although only one program can conveniently consume these events, it is possible to redefine an environment so that multiple consumers can get at them via pub\/sub.<\/li><li>Use the <a href=\"https:\/\/www.ibm.com\/docs\/en\/ibm-mq\/9.3?topic=network-system-topics-monitoring-activity-trace\" target=\"_blank\" rel=\"noreferrer noopener\">published resource metrics<\/a>, most easily demonstrated with the <code>amqsrua<\/code> sample program.<\/li><\/ul>\n\n\n\n<p>For this simple case, I decided to use the regular event messages. The minimum configuration needed was <code>ALTER QMGR STATQ(ON)<\/code> though I also set <code>STATINT(30)<\/code> so I could get frequent updates for testing. Other statistics types that the queue manager supports were not going to be useful for this limited scenario. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Format the data<\/h3>\n\n\n\n<p>MQ includes two sample programs that know how to format the statstics events: <code>amqsmon<\/code> and <code>amqsevt<\/code>. It should be no surprise, if you&#8217;ve read any of my other posts about monitoring, that I used <code>amqsevt<\/code> with JSON output. That was then piped to a <code>jq<\/code> program to extract just the fields I wanted to display. <\/p>\n\n\n\n<p>The output from the <code>amqsevt<\/code> phase looks like this:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"eventData\" : {\n  \"queueMgrName\" : \"QM1\",\n  \"startDate\" : \"2022-10-05\",\n  \"startTime\" : \"12.12.35\",\n  \"endDate\" : \"2022-10-05\",\n  \"endTime\" : \"12.13.05\",\n\"queueStatisticsData\" : [ {\n  \"queueName\" : \"APP.1\",\n  \"queueMinDepth\" : 0,\n  \"queueMaxDepth\" : 0,\n  \"puts\" : [\n    10,\n    7\n   ],\n  \"putsFailed\" : 0,\n  \"put1s\" : [\n    2,\n    0\n   ],\n...<\/pre>\n\n\n\n<p>The jq filter took that information and worked out the rates. One element of that was to convert timestamps into epoch values so the interval duration could be derived. Part-way through the <code>jq<\/code> filter, after calculation of the Put rate, we could see lines like these:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{\"periodStart\":1664975480,\"periodEnd\":1664975510,\"duration\":30,\"startTime\":\"12.11.20\",\"queueMgr\":\"QM1\",\"queue\":\"APP.4\",\"putNP\":82,\"putP\":0,\"putTotal\":82,\"rate\":2.73}\n{\"periodStart\":1664975480,\"periodEnd\":1664975510,\"duration\":30,\"startTime\":\"12.11.20\",\"queueMgr\":\"QM1\",\"queue\":\"AMQ.6335A96421EFDD01\",\"putNP\":156,\"putP\":0,\"putTotal\":156,\"rate\":5.2}\n{\"periodStart\":1664975480,\"periodEnd\":1664975510,\"duration\":30,\"startTime\":\"12.11.20\",\"queueMgr\":\"QM1\",\"queue\":\"LOOP.OUTPUT\",\"putNP\":4,\"putP\":0,\"putTotal\":4,\"rate\":0.13}\n{\"periodStart\":1664975480,\"periodEnd\":1664975510,\"duration\":30,\"startTime\":\"12.11.20\",\"queueMgr\":\"QM1\",\"queue\":\"APP.3\",\"putNP\":93,\"putP\":0,\"putTotal\":93,\"rate\":3.1}<\/pre>\n\n\n\n<p>This was where I originally planned to stop. It should be good enough to send to any analytics processing tool. But the &#8220;Yes, and&#8230;&#8221; kicked in. I did another layer of filtering and formatting to show just the critical information. And it looks like this:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[1664975510,\"AMQ.6335A96421EFDD02\",6.67]\n[1664975510,\"APP.2\",2.17]\n[1664975510,\"AMQ.6335A96421EFDD01\",5.2]\n[1664975510,\"LOOP.OUTPUT\",1.63]\n[1664975510,\"APP.3\",1.53]\n[1664975510,\"APP.1\",2.27]\n[1664975510,\"APP.0\",0.23]<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Display the data<\/h3>\n\n\n\n<p>I thought it might be nice to show that data in a simple format so you can see the state a bit more easily. I did consider using a graph-plotting tool (perhaps Python&#8217;s <a href=\"https:\/\/matplotlib.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">matplotlib <\/a>library) but that would require learning Python first. Which is a larger project for another day. Instead I&#8217;m just going to show the current state in a text table. With a little bit of shell programming using Associative Arrays, I got to:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/10\/textStats-1-1024x515.png\" alt=\"Terminal output of Put rates\" class=\"wp-image-1359\" width=\"562\" height=\"282\" srcset=\"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/10\/textStats-1-1024x515.png 1024w, https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/10\/textStats-1-300x151.png 300w, https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/10\/textStats-1-768x386.png 768w, https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/10\/textStats-1.png 1052w\" sizes=\"auto, (max-width: 562px) 85vw, 562px\" \/><figcaption>Terminal output of Put rates<\/figcaption><\/figure>\n\n\n\n<p>That screen updates on each STATINT interval. So the final driving script was as simple as<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">QM=QM1\n. setmqenv -m $QM -k\nexport PATH=$PATH:\/opt\/mqm\/samp\/bin\n\n# Use stdbuf to ensure output is unbuffered and printed immediately\nstdbuf -o0 amqsevt -m $QM -q SYSTEM.ADMIN.STATISTICS.QUEUE -o json |\\\n  jq -f statsCount.jq -c --unbuffered |\\\n  table.sh $QM<\/pre>\n\n\n\n<p>And that&#8217;s where I&#8217;ve decided to stop. For anything more advanced, use a real monitoring tool. But for the quick-and-dirty, fast-response requirement this should give a skeleton of what can be done. <\/p>\n\n\n\n<p>You can access the full code, such as it is, as a zip file<a href=\"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/10\/statsCount.zip\" target=\"_blank\" rel=\"noreferrer noopener\"> here<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Summary<\/h3>\n\n\n\n<p>I quite like being able to string together these different tools. It&#8217;s always been the Unix approach and it works well for this kind of requirement. Rather than building analytics into a formatter program, do each task independently and make sure the next component can process the output on the pipe.<\/p>\n\n\n\n<p><strong>File Download<\/strong>: Also available from <a href=\"https:\/\/gist.github.com\/ibmmqmet\/e9426b696fa27d0962755f819f3000ee\" target=\"_blank\" rel=\"noreferrer noopener\">this gist<\/a>.<\/p>\n<p class=\"last-modified\" style=\"border:1px solid;padding: 10px;\">This post was last updated on November 15th, 2022 at 12:41 pm<\/p>","protected":false},"excerpt":{"rendered":"<p>My previous post was about one small project I got involved with over the last week. This is another one prompted by working with an MQ user, this time to do with metrics. Essentially they had an urgent need to do some basic MQ queue rate monitoring: how many messages were put\/got in an interval. &hellip; <a href=\"https:\/\/marketaylor.synology.me\/?p=1353\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Snippet 2 &#8211; Basic MQ Queue Rate monitoring&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1268,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5],"tags":[41,35,38,58,20],"class_list":["post-1353","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mq","tag-events","tag-ibmmq","tag-json","tag-monitoring","tag-mqseries"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Snippet 2 - Basic MQ Queue Rate monitoring - Mark Taylor&#039;s Blog<\/title>\n<meta name=\"description\" content=\"If you don&#039;t run a real monitor, how easy is it to do basic MQ queue rate monitoring? This post shows how some simple scripts can help.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/marketaylor.synology.me\/?p=1353\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Snippet 2 - Basic MQ Queue Rate monitoring - Mark Taylor&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"If you don&#039;t run a real monitor, how easy is it to do basic MQ queue rate monitoring? This post shows how some simple scripts can help.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/marketaylor.synology.me\/?p=1353\" \/>\n<meta property=\"og:site_name\" content=\"Mark Taylor&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-05T12:04:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-15T12:41:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/05\/grafana_small-e1656570279789.png\" \/>\n\t<meta property=\"og:image:width\" content=\"394\" \/>\n\t<meta property=\"og:image:height\" content=\"217\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mark\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@marketaylor\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mark\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated 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:\\\/\\\/marketaylor.synology.me\\\/?p=1353#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353\"},\"author\":{\"name\":\"Mark\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#\\\/schema\\\/person\\\/2d6f4113ff54187023e20c20186bbb3c\"},\"headline\":\"Snippet 2 &#8211; Basic MQ Queue Rate monitoring\",\"datePublished\":\"2022-10-05T12:04:56+00:00\",\"dateModified\":\"2022-11-15T12:41:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353\"},\"wordCount\":711,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/grafana_small-e1656570279789.png\",\"keywords\":[\"events\",\"ibmmq\",\"json\",\"monitoring\",\"mqseries\"],\"articleSection\":[\"IBM MQ\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353\",\"url\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353\",\"name\":\"Snippet 2 - Basic MQ Queue Rate monitoring - Mark Taylor&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/grafana_small-e1656570279789.png\",\"datePublished\":\"2022-10-05T12:04:56+00:00\",\"dateModified\":\"2022-11-15T12:41:07+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#\\\/schema\\\/person\\\/2d6f4113ff54187023e20c20186bbb3c\"},\"description\":\"If you don't run a real monitor, how easy is it to do basic MQ queue rate monitoring? This post shows how some simple scripts can help.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353#primaryimage\",\"url\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/grafana_small-e1656570279789.png\",\"contentUrl\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/grafana_small-e1656570279789.png\",\"width\":394,\"height\":217,\"caption\":\"MQ monitoring\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1353#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/marketaylor.synology.me\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Snippet 2 &#8211; Basic MQ Queue Rate monitoring\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#website\",\"url\":\"https:\\\/\\\/marketaylor.synology.me\\\/\",\"name\":\"Mark Taylor&#039;s Blog\",\"description\":\"Messaging, Music and Moving Around\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/marketaylor.synology.me\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#\\\/schema\\\/person\\\/2d6f4113ff54187023e20c20186bbb3c\",\"name\":\"Mark\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g\",\"caption\":\"Mark\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/marketaylor\"],\"url\":\"https:\\\/\\\/marketaylor.synology.me\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Snippet 2 - Basic MQ Queue Rate monitoring - Mark Taylor&#039;s Blog","description":"If you don't run a real monitor, how easy is it to do basic MQ queue rate monitoring? This post shows how some simple scripts can help.","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:\/\/marketaylor.synology.me\/?p=1353","og_locale":"en_GB","og_type":"article","og_title":"Snippet 2 - Basic MQ Queue Rate monitoring - Mark Taylor&#039;s Blog","og_description":"If you don't run a real monitor, how easy is it to do basic MQ queue rate monitoring? This post shows how some simple scripts can help.","og_url":"https:\/\/marketaylor.synology.me\/?p=1353","og_site_name":"Mark Taylor&#039;s Blog","article_published_time":"2022-10-05T12:04:56+00:00","article_modified_time":"2022-11-15T12:41:07+00:00","og_image":[{"width":394,"height":217,"url":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/05\/grafana_small-e1656570279789.png","type":"image\/png"}],"author":"Mark","twitter_card":"summary_large_image","twitter_creator":"@marketaylor","twitter_misc":{"Written by":"Mark","Estimated reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/marketaylor.synology.me\/?p=1353#article","isPartOf":{"@id":"https:\/\/marketaylor.synology.me\/?p=1353"},"author":{"name":"Mark","@id":"https:\/\/marketaylor.synology.me\/#\/schema\/person\/2d6f4113ff54187023e20c20186bbb3c"},"headline":"Snippet 2 &#8211; Basic MQ Queue Rate monitoring","datePublished":"2022-10-05T12:04:56+00:00","dateModified":"2022-11-15T12:41:07+00:00","mainEntityOfPage":{"@id":"https:\/\/marketaylor.synology.me\/?p=1353"},"wordCount":711,"commentCount":1,"image":{"@id":"https:\/\/marketaylor.synology.me\/?p=1353#primaryimage"},"thumbnailUrl":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/05\/grafana_small-e1656570279789.png","keywords":["events","ibmmq","json","monitoring","mqseries"],"articleSection":["IBM MQ"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/marketaylor.synology.me\/?p=1353#respond"]}]},{"@type":"WebPage","@id":"https:\/\/marketaylor.synology.me\/?p=1353","url":"https:\/\/marketaylor.synology.me\/?p=1353","name":"Snippet 2 - Basic MQ Queue Rate monitoring - Mark Taylor&#039;s Blog","isPartOf":{"@id":"https:\/\/marketaylor.synology.me\/#website"},"primaryImageOfPage":{"@id":"https:\/\/marketaylor.synology.me\/?p=1353#primaryimage"},"image":{"@id":"https:\/\/marketaylor.synology.me\/?p=1353#primaryimage"},"thumbnailUrl":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/05\/grafana_small-e1656570279789.png","datePublished":"2022-10-05T12:04:56+00:00","dateModified":"2022-11-15T12:41:07+00:00","author":{"@id":"https:\/\/marketaylor.synology.me\/#\/schema\/person\/2d6f4113ff54187023e20c20186bbb3c"},"description":"If you don't run a real monitor, how easy is it to do basic MQ queue rate monitoring? This post shows how some simple scripts can help.","breadcrumb":{"@id":"https:\/\/marketaylor.synology.me\/?p=1353#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/marketaylor.synology.me\/?p=1353"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/marketaylor.synology.me\/?p=1353#primaryimage","url":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/05\/grafana_small-e1656570279789.png","contentUrl":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/05\/grafana_small-e1656570279789.png","width":394,"height":217,"caption":"MQ monitoring"},{"@type":"BreadcrumbList","@id":"https:\/\/marketaylor.synology.me\/?p=1353#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/marketaylor.synology.me\/"},{"@type":"ListItem","position":2,"name":"Snippet 2 &#8211; Basic MQ Queue Rate monitoring"}]},{"@type":"WebSite","@id":"https:\/\/marketaylor.synology.me\/#website","url":"https:\/\/marketaylor.synology.me\/","name":"Mark Taylor&#039;s Blog","description":"Messaging, Music and Moving Around","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/marketaylor.synology.me\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/marketaylor.synology.me\/#\/schema\/person\/2d6f4113ff54187023e20c20186bbb3c","name":"Mark","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g","caption":"Mark"},"sameAs":["https:\/\/x.com\/marketaylor"],"url":"https:\/\/marketaylor.synology.me\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2022\/05\/grafana_small-e1656570279789.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/1353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1353"}],"version-history":[{"count":8,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/1353\/revisions"}],"predecessor-version":[{"id":1378,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/1353\/revisions\/1378"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/media\/1268"}],"wp:attachment":[{"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}