{"id":460,"date":"2018-11-09T12:54:32","date_gmt":"2018-11-09T12:54:32","guid":{"rendered":"https:\/\/marketaylor.synology.me\/?p=460"},"modified":"2019-11-25T09:53:38","modified_gmt":"2019-11-25T09:53:38","slug":"using-prometheus-to-monitor-mq-channel-status","status":"publish","type":"post","link":"https:\/\/marketaylor.synology.me\/?p=460","title":{"rendered":"Using Prometheus to monitor MQ channel status"},"content":{"rendered":"<p>In 2016 <a href=\"https:\/\/marketaylor.synology.me\/?p=448\" target=\"_blank\" rel=\"noopener noreferrer\">I wrote<\/a> about how MQ&#8217;s <a href=\"https:\/\/www.ibm.com\/developerworks\/community\/blogs\/messaging\/entry\/Statistics_published_to_the_system_topic_in_MQ_v9?lang=en_us\" target=\"_blank\" rel=\"noopener noreferrer\">resource statistics<\/a> can work with a number of time-series databases, including <a href=\"https:\/\/prometheus.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Prometheus<\/a>. This permits monitoring using the same tools that many customers use for monitoring other products. It allows easy creation of dashboards using tools such as <a href=\"https:\/\/grafana.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Grafana<\/a>.<\/p>\n<p>Since that <a href=\"https:\/\/marketaylor.synology.me\/?p=470\" target=\"_blank\" rel=\"noopener noreferrer\">original<\/a> version, we&#8217;ve made a number of enhancements to the packages that underpin that monitoring capability. For example, more <a href=\"https:\/\/marketaylor.synology.me\/?p=470\" target=\"_blank\" rel=\"noopener noreferrer\">database options<\/a> were added; a JSON formatter appeared. One notable change was when we split the monitoring agent programs into a <a href=\"https:\/\/github.com\/ibm-messaging\/mq-metric-samples\" target=\"_blank\" rel=\"noopener noreferrer\">separate GitHub repository<\/a>, making it easier to work with just the pieces you needed.<\/p>\n<p>And now, I&#8217;ve released some changes that allow Prometheus and generic JSON processors to see some key channel status information. In particular, a Grafana dashboard can easily highlight channels that are not running.<\/p>\n<p><!--more--><\/p>\n<h2>What does it show<\/h2>\n<p>The fastest way to understand it is to see a simple dashboard:<\/p>\n<figure id=\"attachment_14220\" aria-describedby=\"caption-attachment-14220\" style=\"width: 862px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/Pictures\/2019\/11\/grafana-channels.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14220 size-full\" src=\"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/Pictures\/2019\/11\/grafana-channels.png\" alt=\"prometheus grafana channel status\" width=\"862\" height=\"520\" \/><\/a><figcaption id=\"caption-attachment-14220\" class=\"wp-caption-text\">MQ channel status<\/figcaption><\/figure>\n<p>In this picture, you can see current channels along with key information such as where they connect, what the channel type is, and how many messages are flowing across channels.<\/p>\n<h3>The JSON version<\/h3>\n<p>Along with the Prometheus collector, I also updated the JSON formatter in the same GitHub repository. Output from that can go to any tool that understands JSON. Here is an example of the JSON-formatted metrics:<\/p>\n<pre>{\n  \"collectionTime\": {\n    \"timeStamp\": \"2018-11-08T12:14:31Z\",\n    \"epoch\": 1541679271\n  },\n  \"points\": [\n    {\n      \"tags\": {\n        \"qmgr\": \"QM1\",\n        \"queue\": \"APP.4\"\n      },\n      \"metrics\": {\n        \"mqgetBrowseNonPersistentBytes\": 0,\n        \"mqgetBrowseNonPersistentMessage\": 0\n        ...\n    }\n    {\n      \"tags\": {\n        \"channel\": \"TO.QM2\",\n        \"connname\": \"127.0.0.1(1415)\",\n        \"jobname\": \"00000F2D00000001\",\n        \"qmgr\": \"QM1\",\n        \"rqmname\": \"QM2\",\n        \"type\": \"SENDER\"\n      },\n      \"metrics\": {\n        \"instanceType\": 1011,\n        \"messages\": 0,\n        \"status\": 3,\n        \"statusSquash\": 2,\n        \"type\": 1\n      }\n  },\n  ...\n}\n<\/pre>\n<h2>Metrics<\/h2>\n<p>For channels, the main reported statistic is the number of messages transferred in the last interval. The current status also appears.<\/p>\n<h3>Squashed Status<\/h3>\n<p>The picture shows two versions of the channel status. On the right, you see the real channel status, or at least its numeric value. For example, &#8220;3&#8221; corresponds to the MQ constant MQCHS_RUNNING. It is possible to have Grafana convert these numbers into text, by <a href=\"http:\/\/docs.grafana.org\/features\/panels\/table_panel\/#value-range-to-text-mapping\" target=\"_blank\" rel=\"noopener noreferrer\">adding a specific text mapping operation<\/a> in the panel&#8217;s configuration. I chose not to do that here partly for simplicity in testing, but also because of the alternative version of channel status.<\/p>\n<p>This second version shows up in the <strong>State<\/strong> column and is a metric I&#8217;ve invented called <em>status_squash<\/em> (or <em>statusSquash<\/em> in the JSON version). There are about 15 values corresponding to the different states for a channel. The &#8220;squashed&#8221; metric takes those 15 and reduces them to only three possible values to indicate a channel that is definitely running, definitely not running, or somewhere between (for example in Binding state). Having just three values matches with how Grafana configures traffic light colours for a metric. It also makes it easier to put the text mapping against the values.<\/p>\n<h3>Tags<\/h3>\n<p>The design for time-series databases is built around storing numbers, not text strings. It may not be practical &#8211; and certainly is not possible with Prometheus &#8211; for a metric or datapoint to have a value such as &#8220;RUNNING&#8221;. Tags or Labels are the mechanism to associate some text with the metric. These tags are for long-lived values, not for things that might change frequently such as the depth of a queue. For the channel information, tags include the channel name along with several other pieces of identification intended to distinguish between multiple instances of the same channel name. You might, for example, have multiple receiver or svrconn channels running simultaneously with the same name. But the combination of the channel name along with its connname and the other labels make it unique. Grafana can display these tags in the legends describing panels.<\/p>\n<h2>How does it work<\/h2>\n<p>Unlike the published resource statistics, we find the channel status by polling the queue manager and issuing the equivalent of the <code>DISPLAY CHSTATUS<\/code> command. You can see the commands and the attributes extracted from the response in the <a href=\"https:\/\/github.com\/ibm-messaging\/mq-golang\/blob\/master\/mqmetric\/channel.go\" target=\"_blank\" rel=\"noopener noreferrer\">channel.go<\/a> source file. That command accepts generic names, so you do not have to restart the collector if you create a new channel whose name matches one already provided in the program&#8217;s configuration.<\/p>\n<h2>How to configure it<\/h2>\n<p>Both the Prometheus and JSON collector programs accept a <code>-ibmmq.monitoredChannels<\/code> parameter. This is a comma-separated list of generic patterns, with trailing &#8220;*&#8221; characters. For example<\/p>\n<pre>  -ibmmq.monitoredChannels=\"TO.*,FROM.*\"\n<\/pre>\n<p>Start the collector with that option, and it then reports the status at each interval. You can modify the interval for the channel information polling independently of the Prometheus collection interval. Use the <code>-pollInterval<\/code> option for that. You may want to use it when the queue statistics are being gathered frequently, and you don&#8217;t want to add the extra channel status polling at every iteration.<\/p>\n<pre>  -pollInterval=1m\n<\/pre>\n<p>The package includes a sample Grafana dashboard that shows channel status. If you import that dashboard to your Grafana environment, you can look at details of how the panels are constructed to create your own queries.<\/p>\n<h2>Summary<\/h2>\n<p>After the initial release of the Prometheus interface, several people asked for additional information, particularly around MQ channels. I hope this goes some way to meeting those requests.<\/p>\n<h2>November 20 2018 Update &#8211; Additional status and z\/OS support<\/h2>\n<p>Last week I was with a group of z\/OS customers and mentioned this new channel status support. While talking, I realised that even though MQ on z\/OS does not implement the published resource statistics that are the basis of this MQ monitor, the channel status would work there. And adding a little bit of queue information was also feasible based on the <code>DISPLAY QSTATUS<\/code> command. The audience was rather enthusastic about the idea, one customer in particular saying that he had been just been given instruction to put some level of Prometheus monitoring around his organisation&#8217;s queue managers. So I added that feature and it is now available from the GitHub repository.<\/p>\n<figure id=\"attachment_14557\" aria-describedby=\"caption-attachment-14557\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/Pictures\/2019\/11\/prometheus_zos.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-14557\" src=\"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/Pictures\/2019\/11\/prometheus_zos.png\" alt=\"Prometheus and z\/OS\" width=\"640\" height=\"355\" \/><\/a><figcaption id=\"caption-attachment-14557\" class=\"wp-caption-text\">Using Prometheus to monitor z\/OS queue managers<\/figcaption><\/figure>\n<p class=\"last-modified\" style=\"border:1px solid;padding: 10px;\">This post was last updated on November 25th, 2019 at 09:53 am<\/p>","protected":false},"excerpt":{"rendered":"<p>In 2016 I wrote about how MQ&#8217;s resource statistics can work with a number of time-series databases, including Prometheus. This permits monitoring using the same tools that many customers use for monitoring other products. It allows easy creation of dashboards using tools such as Grafana. Since that original version, we&#8217;ve made a number of enhancements &hellip; <a href=\"https:\/\/marketaylor.synology.me\/?p=460\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Using Prometheus to monitor MQ channel status&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5],"tags":[43,35,58,20,42,30],"class_list":["post-460","post","type-post","status-publish","format-standard","hentry","category-mq","tag-grafana","tag-ibmmq","tag-monitoring","tag-mqseries","tag-prometheus","tag-z-os"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Using Prometheus to monitor MQ channel status - Mark Taylor&#039;s Blog<\/title>\n<meta name=\"description\" content=\"The MQ Go monitoring APIs have been enhanced to extract channel status. This information can be shown in Prometheus and JSON outputs.\" \/>\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=460\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Prometheus to monitor MQ channel status - Mark Taylor&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"The MQ Go monitoring APIs have been enhanced to extract channel status. This information can be shown in Prometheus and JSON outputs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/marketaylor.synology.me\/?p=460\" \/>\n<meta property=\"og:site_name\" content=\"Mark Taylor&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-09T12:54:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-25T09:53:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/Pictures\/2019\/11\/grafana-channels.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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460\"},\"author\":{\"name\":\"Mark\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#\\\/schema\\\/person\\\/2d6f4113ff54187023e20c20186bbb3c\"},\"headline\":\"Using Prometheus to monitor MQ channel status\",\"datePublished\":\"2018-11-09T12:54:32+00:00\",\"dateModified\":\"2019-11-25T09:53:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460\"},\"wordCount\":949,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/Pictures\\\/2019\\\/11\\\/grafana-channels.png\",\"keywords\":[\"grafana\",\"ibmmq\",\"monitoring\",\"mqseries\",\"prometheus\",\"z\\\/os\"],\"articleSection\":[\"IBM MQ\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460\",\"url\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460\",\"name\":\"Using Prometheus to monitor MQ channel status - Mark Taylor&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/Pictures\\\/2019\\\/11\\\/grafana-channels.png\",\"datePublished\":\"2018-11-09T12:54:32+00:00\",\"dateModified\":\"2019-11-25T09:53:38+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#\\\/schema\\\/person\\\/2d6f4113ff54187023e20c20186bbb3c\"},\"description\":\"The MQ Go monitoring APIs have been enhanced to extract channel status. This information can be shown in Prometheus and JSON outputs.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460#primaryimage\",\"url\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/Pictures\\\/2019\\\/11\\\/grafana-channels.png\",\"contentUrl\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/Pictures\\\/2019\\\/11\\\/grafana-channels.png\",\"width\":862,\"height\":520},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=460#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/marketaylor.synology.me\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Prometheus to monitor MQ channel status\"}]},{\"@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":"Using Prometheus to monitor MQ channel status - Mark Taylor&#039;s Blog","description":"The MQ Go monitoring APIs have been enhanced to extract channel status. This information can be shown in Prometheus and JSON outputs.","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=460","og_locale":"en_GB","og_type":"article","og_title":"Using Prometheus to monitor MQ channel status - Mark Taylor&#039;s Blog","og_description":"The MQ Go monitoring APIs have been enhanced to extract channel status. This information can be shown in Prometheus and JSON outputs.","og_url":"https:\/\/marketaylor.synology.me\/?p=460","og_site_name":"Mark Taylor&#039;s Blog","article_published_time":"2018-11-09T12:54:32+00:00","article_modified_time":"2019-11-25T09:53:38+00:00","og_image":[{"url":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/Pictures\/2019\/11\/grafana-channels.png","type":"","width":"","height":""}],"author":"Mark","twitter_card":"summary_large_image","twitter_creator":"@marketaylor","twitter_misc":{"Written by":"Mark","Estimated reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/marketaylor.synology.me\/?p=460#article","isPartOf":{"@id":"https:\/\/marketaylor.synology.me\/?p=460"},"author":{"name":"Mark","@id":"https:\/\/marketaylor.synology.me\/#\/schema\/person\/2d6f4113ff54187023e20c20186bbb3c"},"headline":"Using Prometheus to monitor MQ channel status","datePublished":"2018-11-09T12:54:32+00:00","dateModified":"2019-11-25T09:53:38+00:00","mainEntityOfPage":{"@id":"https:\/\/marketaylor.synology.me\/?p=460"},"wordCount":949,"commentCount":0,"image":{"@id":"https:\/\/marketaylor.synology.me\/?p=460#primaryimage"},"thumbnailUrl":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/Pictures\/2019\/11\/grafana-channels.png","keywords":["grafana","ibmmq","monitoring","mqseries","prometheus","z\/os"],"articleSection":["IBM MQ"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/marketaylor.synology.me\/?p=460#respond"]}]},{"@type":"WebPage","@id":"https:\/\/marketaylor.synology.me\/?p=460","url":"https:\/\/marketaylor.synology.me\/?p=460","name":"Using Prometheus to monitor MQ channel status - Mark Taylor&#039;s Blog","isPartOf":{"@id":"https:\/\/marketaylor.synology.me\/#website"},"primaryImageOfPage":{"@id":"https:\/\/marketaylor.synology.me\/?p=460#primaryimage"},"image":{"@id":"https:\/\/marketaylor.synology.me\/?p=460#primaryimage"},"thumbnailUrl":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/Pictures\/2019\/11\/grafana-channels.png","datePublished":"2018-11-09T12:54:32+00:00","dateModified":"2019-11-25T09:53:38+00:00","author":{"@id":"https:\/\/marketaylor.synology.me\/#\/schema\/person\/2d6f4113ff54187023e20c20186bbb3c"},"description":"The MQ Go monitoring APIs have been enhanced to extract channel status. This information can be shown in Prometheus and JSON outputs.","breadcrumb":{"@id":"https:\/\/marketaylor.synology.me\/?p=460#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/marketaylor.synology.me\/?p=460"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/marketaylor.synology.me\/?p=460#primaryimage","url":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/Pictures\/2019\/11\/grafana-channels.png","contentUrl":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/Pictures\/2019\/11\/grafana-channels.png","width":862,"height":520},{"@type":"BreadcrumbList","@id":"https:\/\/marketaylor.synology.me\/?p=460#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/marketaylor.synology.me\/"},{"@type":"ListItem","position":2,"name":"Using Prometheus to monitor MQ channel status"}]},{"@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":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/460","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=460"}],"version-history":[{"count":8,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/460\/revisions"}],"predecessor-version":[{"id":562,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/460\/revisions\/562"}],"wp:attachment":[{"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=460"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}