{"id":25212,"date":"2023-05-12T15:07:29","date_gmt":"2023-05-12T13:07:29","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=25212"},"modified":"2024-09-11T10:18:44","modified_gmt":"2024-09-11T08:18:44","slug":"grail-and-dynatrace-query-language","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/","title":{"rendered":"Grail and Dynatrace Query Language"},"content":{"rendered":"\n<p>In my last dynatrace blog, I presented how to go from <a href=\"https:\/\/www.dbi-services.com\/blog\/wildfly-from-log-to-dashboard-with-dynatrace\/\" target=\"_blank\" rel=\"noreferrer noopener\">logs to dashboard<\/a>. This could look like a complex process for such a simple task. Moreover, this does not work on historical data as metric will be only populated at the time of the definition even if it was present in the log before.<\/p>\n\n\n\n<p>Recently, dynatrace introduced <a href=\"https:\/\/www.dynatrace.com\/platform\/grail\/\" target=\"_blank\" rel=\"noreferrer noopener\">Grail<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Grail by dynatrace<\/h2>\n\n\n\n<p>Grail focuses on simple and efficient storage of logs (without metrics):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>no indexes means fast storage<\/li>\n\n\n\n<li>no schema means no administration required<\/li>\n\n\n\n<li>only DQL<\/li>\n<\/ul>\n\n\n\n<p>Types of data a in different data bucket.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dynatrace Query Language (DQL)<\/h2>\n\n\n\n<p>DQL is a powerful language to explore data stored in dynatrace. It could query any data bucket, but in this blog we will focus on logs. I will try to create same dashboard on WildFly access logs as on my <a href=\"https:\/\/www.dbi-services.com\/blog\/wildfly-from-log-to-dashboard-with-dynatrace\/\" target=\"_blank\" rel=\"noreferrer noopener\">previous blog<\/a> without having to extract attribute and create metric.<\/p>\n\n\n\n<p>First, we must go in &#8220;Observe and explore&#8221; and then &#8220;Logs&#8221; menu. Then, I switch to Advanced Mode:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"674\" height=\"339\" src=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-11-17_38_22-Logs-and-events.png\" alt=\"\" class=\"wp-image-25216\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-11-17_38_22-Logs-and-events.png 674w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-11-17_38_22-Logs-and-events-300x151.png 300w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/figure>\n\n\n\n<p>A typical DQL query starts with <code>fetch<\/code> and the bucket name, then it is piped (|) to DQL functions. Here it is a timestamp sorting. After clicking &#8220;Run query&#8221;, I will see this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"152\" src=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-10_33_43-Logs-and-events-1024x152.png\" alt=\"\" class=\"wp-image-25241\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-10_33_43-Logs-and-events-1024x152.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-10_33_43-Logs-and-events-300x45.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-10_33_43-Logs-and-events-768x114.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-10_33_43-Logs-and-events.png 1439w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>First, I want to limit my query to access log which contains TimeTaken information as server.log does not have it. This I am adding a filter line as follow:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nfetch logs\n| filter contains( log.source, &quot;access&quot;)\n| sort timestamp desc\n<\/pre><\/div>\n\n\n<p>Next step is to parse content field and extract TimeTaken info. DQL query modified:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nfetch logs\n| filter contains( log.source, &quot;access&quot;)\n| parse content, &quot;LD &#039;TimeTaken: &#039; DOUBLE:timetakenparsed&quot;\n| fields timestamp, status, content, timetakenparsed\n| sort timestamp desc\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"178\" src=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-10_49_55-Logs-and-events-1024x178.png\" alt=\"\" class=\"wp-image-25244\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-10_49_55-Logs-and-events-1024x178.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-10_49_55-Logs-and-events-300x52.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-10_49_55-Logs-and-events-768x133.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-10_49_55-Logs-and-events.png 1464w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>I have also added fields function to get only the fields I want to focus on. As you see, status is empty. We could extract it from content as well. Thus, we have to modify <code>parse<\/code> line:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n| parse content, &quot;LD DQS SPACE? INT:status LD &#039; TimeTaken: &#039; DOUBLE:timetakenparsed&quot;\n<\/pre><\/div>\n\n\n<p>DQS is double-quoted string which is just before the status code in access log. Here I do not store it in any field, but it is possible. Now, you can see status field is there:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"113\" src=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-11_51_24-Logs-and-events-1024x113.png\" alt=\"\" class=\"wp-image-25246\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-11_51_24-Logs-and-events-1024x113.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-11_51_24-Logs-and-events-300x33.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-11_51_24-Logs-and-events-768x85.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-11_51_24-Logs-and-events-1536x169.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-11_51_24-Logs-and-events-2048x226.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>I don&#8217;t want to plot <code>timetaken <\/code>for each and every access log request. I want to group them by timestamp buckets. To achieve that, I will use <code>summarize<\/code> function:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n| summarize timetaken_med=median(timetaken_parsed), by: { TS=bin(timestamp,1m) }\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><code>C<\/code>reate a new field <code>timetaken_med<\/code> and populate it with result of a function (<code>median<\/code>)<\/li>\n\n\n\n<li><code>by<\/code> is used to specify on what to group. It can have multiple fields and can include functions\n<ul class=\"wp-block-list\">\n<li>TS is the name of the grouped field<\/li>\n\n\n\n<li><code>bin<\/code> function aligns timestamps to the desired interval (1 minute in this example).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>sort line is changed: timestamp becomes TS<\/li>\n<\/ul>\n\n\n\n<p>Using visualization type Bar, graphs is displayed:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"619\" src=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-15_04_55-Logs-and-events-1024x619.png\" alt=\"\" class=\"wp-image-25260\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-15_04_55-Logs-and-events-1024x619.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-15_04_55-Logs-and-events-300x181.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-15_04_55-Logs-and-events-768x464.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-15_04_55-Logs-and-events-1536x928.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-15_04_55-Logs-and-events.png 2002w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Then a click on Actions and Pin to dashboard:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"317\" height=\"479\" src=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-13_35_18-Logs-and-events.png\" alt=\"\" class=\"wp-image-25255\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-13_35_18-Logs-and-events.png 317w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-13_35_18-Logs-and-events-199x300.png 199w\" sizes=\"auto, (max-width: 317px) 100vw, 317px\" \/><\/figure>\n\n\n\n<p>Et voil\u00e0 !<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"633\" src=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-15_03_55-New-dashboard-May-12-2023-12_21_43-1024x633.png\" alt=\"\" class=\"wp-image-25259\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-15_03_55-New-dashboard-May-12-2023-12_21_43-1024x633.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-15_03_55-New-dashboard-May-12-2023-12_21_43-300x185.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-15_03_55-New-dashboard-May-12-2023-12_21_43-768x475.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-12-15_03_55-New-dashboard-May-12-2023-12_21_43.png 1188w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>This is really nice and flexible way of creating dashboards. The main limitation is for alerting (at least as of today). You must create an attribute and metrics to be able to set thresholds and alerts.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In my last dynatrace blog, I presented how to go from logs to dashboard. This could look like a complex process for such a simple task. Moreover, this does not work on historical data as metric will be only populated at the time of the definition even if it was present in the log before. [&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":[2918,1283,143,2046,1100],"type_dbi":[],"class_list":["post-25212","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","tag-dynatrace","tag-logging","tag-monitoring","tag-query","tag-wildfly"],"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>Grail and Dynatrace Query Language - dbi Blog<\/title>\n<meta name=\"description\" content=\"How to easily query Dynatrace Grail with Dynatrace Query Language (DQL)\" \/>\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\/grail-and-dynatrace-query-language\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Grail and Dynatrace Query Language\" \/>\n<meta property=\"og:description\" content=\"How to easily query Dynatrace Grail with Dynatrace Query Language (DQL)\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-12T13:07:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-11T08:18:44+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-11-17_38_22-Logs-and-events.png\" \/>\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\\\/grail-and-dynatrace-query-language\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/\"},\"author\":{\"name\":\"Middleware Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\"},\"headline\":\"Grail and Dynatrace Query Language\",\"datePublished\":\"2023-05-12T13:07:29+00:00\",\"dateModified\":\"2024-09-11T08:18:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/\"},\"wordCount\":455,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/05\\\/2023-05-11-17_38_22-Logs-and-events.png\",\"keywords\":[\"dynatrace\",\"logging\",\"Monitoring\",\"query\",\"WildFly\"],\"articleSection\":[\"Application integration &amp; Middleware\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/\",\"name\":\"Grail and Dynatrace Query Language - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/05\\\/2023-05-11-17_38_22-Logs-and-events.png\",\"datePublished\":\"2023-05-12T13:07:29+00:00\",\"dateModified\":\"2024-09-11T08:18:44+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\"},\"description\":\"How to easily query Dynatrace Grail with Dynatrace Query Language (DQL)\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/#primaryimage\",\"url\":\"http:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/05\\\/2023-05-11-17_38_22-Logs-and-events.png\",\"contentUrl\":\"http:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/05\\\/2023-05-11-17_38_22-Logs-and-events.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/grail-and-dynatrace-query-language\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Grail and Dynatrace Query Language\"}]},{\"@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":"Grail and Dynatrace Query Language - dbi Blog","description":"How to easily query Dynatrace Grail with Dynatrace Query Language (DQL)","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\/grail-and-dynatrace-query-language\/","og_locale":"en_US","og_type":"article","og_title":"Grail and Dynatrace Query Language","og_description":"How to easily query Dynatrace Grail with Dynatrace Query Language (DQL)","og_url":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/","og_site_name":"dbi Blog","article_published_time":"2023-05-12T13:07:29+00:00","article_modified_time":"2024-09-11T08:18:44+00:00","og_image":[{"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-11-17_38_22-Logs-and-events.png","type":"","width":"","height":""}],"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\/grail-and-dynatrace-query-language\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/"},"author":{"name":"Middleware Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"headline":"Grail and Dynatrace Query Language","datePublished":"2023-05-12T13:07:29+00:00","dateModified":"2024-09-11T08:18:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/"},"wordCount":455,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/#primaryimage"},"thumbnailUrl":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-11-17_38_22-Logs-and-events.png","keywords":["dynatrace","logging","Monitoring","query","WildFly"],"articleSection":["Application integration &amp; Middleware"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/","url":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/","name":"Grail and Dynatrace Query Language - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/#primaryimage"},"thumbnailUrl":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-11-17_38_22-Logs-and-events.png","datePublished":"2023-05-12T13:07:29+00:00","dateModified":"2024-09-11T08:18:44+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"description":"How to easily query Dynatrace Grail with Dynatrace Query Language (DQL)","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/#primaryimage","url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-11-17_38_22-Logs-and-events.png","contentUrl":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/05\/2023-05-11-17_38_22-Logs-and-events.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/grail-and-dynatrace-query-language\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Grail and Dynatrace Query Language"}]},{"@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\/25212","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=25212"}],"version-history":[{"count":18,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/25212\/revisions"}],"predecessor-version":[{"id":25663,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/25212\/revisions\/25663"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=25212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=25212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=25212"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=25212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}