"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[628],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var n=a(67294);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?r(Object(a),!0).forEach((function(t){s(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):r(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,s=function(e,t){if(null==e)return{};var a,n,s={},r=Object.keys(e);for(n=0;n<r.length;n++)a=r[n],t.indexOf(a)>=0||(s[a]=e[a]);return s}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n<r.length;n++)a=r[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(s[a]=e[a])}return s}var l=n.createContext({}),u=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,s=e.mdxType,r=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=u(a),d=s,m=c["".concat(l,".").concat(d)]||c[d]||h[d]||r;return a?n.createElement(m,o(o({ref:t},p),{},{components:a})):n.createElement(m,o({ref:t},p))}));function m(e,t){var a=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var r=a.length,o=new Array(r);o[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:s,o[1]=i;for(var u=2;u<r;u++)o[u]=a[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}d.displayName="MDXCreateElement"},60375:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>u,toc:()=>c});var n=a(87462),s=a(63366),r=(a(67294),a(3905)),o=["components"],i={id:"web-console",title:"Web console"},l=void 0,u={unversionedId:"operations/web-console",id:"operations/web-console",title:"Web console",description:"\x3c!--",source:"@site/docs/latest/operations/web-console.md",sourceDirName:"operations",slug:"/operations/web-console",permalink:"/docs/latest/operations/web-console",draft:!1,tags:[],version:"current",frontMatter:{id:"web-console",title:"Web console"},sidebar:"docs",previous:{title:"Logging",permalink:"/docs/latest/configuration/logging"},next:{title:"Java runtime",permalink:"/docs/latest/operations/java"}},p={},c=[{value:"Home",id:"home",level:2},{value:"Query",id:"query",level:2},{value:"Data loader",id:"data-loader",level:2},{value:"Datasources",id:"datasources",level:2},{value:"Segments",id:"segments",level:2},{value:"Supervisors",id:"supervisors",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Services",id:"services",level:2},{value:"Lookups",id:"lookups",level:2}],h={toc:c},d="wrapper";function m(e){var t=e.components,i=(0,s.Z)(e,o);return(0,r.kt)(d,(0,n.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Druid includes a web console for loading data, managing datasources and tasks, and viewing server status and segment information.\nYou can also run SQL and native Druid queries in the console."),(0,r.kt)("p",null,"Enable the following cluster settings to use the web console. Note that these settings are enabled by default."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Enable the Router's ",(0,r.kt)("a",{parentName:"li",href:"/docs/latest/design/router#enabling-the-management-proxy"},"management proxy"),"."),(0,r.kt)("li",{parentName:"ul"},"Enable ",(0,r.kt)("a",{parentName:"li",href:"/docs/latest/configuration/#sql"},"Druid SQL")," for the Broker processes in the cluster.")),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"/docs/latest/design/router"},"Router")," service hosts the web console.\nAccess the web console at the following address:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"http://<ROUTER_IP>:<ROUTER_PORT>\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"}," ",(0,r.kt)("strong",{parentName:"p"},"Security note:")," Without ",(0,r.kt)("a",{parentName:"p",href:"/docs/latest/operations/security-overview"},"Druid user permissions")," configured, any user of the\nAPI or web console has effectively the same level of access to local files and network services as the user under which\nDruid runs. It is a best practice to avoid running Druid as the root user, and to use Druid permissions\xa0or network\nfirewalls to restrict which users have access to potentially sensitive resources.")),(0,r.kt)("p",null,"This topic presents the high-level features and functionality of the web console."),(0,r.kt)("h2",{id:"home"},"Home"),(0,r.kt)("p",null,"The ",(0,r.kt)("strong",{parentName:"p"},"Home")," view provides a high-level overview of the cluster.\nEach card is clickable and links to the appropriate view."),(0,r.kt)("p",null,"The ",(0,r.kt)("strong",{parentName:"p"},"Home")," view displays the following cards:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Status"),". Click this card for information on the Druid version and any extensions loaded on the cluster."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#datasources"},"Datasources")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#segments"},"Segments")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#supervisors"},"Supervisors")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#tasks"},"Tasks")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#services"},"Services")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#lookups"},"Lookups"))),(0,r.kt)("p",null,"You can access the ",(0,r.kt)("a",{parentName:"p",href:"#data-loader"},"data loader")," and ",(0,r.kt)("a",{parentName:"p",href:"#lookups"},"lookups view")," from the top-level navigation of the ",(0,r.kt)("strong",{parentName:"p"},"Home")," view."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Web console home view",src:a(64313).Z,title:"home view",width:"1250",height:"840"})),(0,r.kt)("h2",{id:"query"},"Query"),(0,r.kt)("p",null,"SQL-based ingestion and the multi-stage query task engine use the ",(0,r.kt)("strong",{parentName:"p"},"Query")," view, which provides you with a UI to edit and use SQL queries. You should see this UI automatically in Druid 24.0 and later since the multi-stage query extension is loaded by default. "),(0,r.kt)("p",null,"The following screenshot shows a populated enhanced ",(0,r.kt)("strong",{parentName:"p"},"Query")," view along with a description of its parts:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Annotated multi-stage Query view",src:a(61685).Z,width:"1250",height:"740"})),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"The multi-stage, tab-enabled, ",(0,r.kt)("strong",{parentName:"li"},"Query")," view is where you can issue queries and see results.\nAll other views are unchanged from the non-enhanced version. You can still access the original ",(0,r.kt)("strong",{parentName:"li"},"Query")," view by navigating to ",(0,r.kt)("inlineCode",{parentName:"li"},"#query")," in the URL.\nYou can tell that you're looking at the updated ",(0,r.kt)("strong",{parentName:"li"},"Query")," view by the presence of the tabs (3)."),(0,r.kt)("li",{parentName:"ol"},"The ",(0,r.kt)("strong",{parentName:"li"},"druid")," panel shows the available schemas, datasources, and columns."),(0,r.kt)("li",{parentName:"ol"},"Query tabs allow you to manage and run several queries at once.\nClick the plus icon to open a new tab.\nTo manipulate existing tabs, click the tab name."),(0,r.kt)("li",{parentName:"ol"},"The tab bar contains some helpful tools including the ",(0,r.kt)("strong",{parentName:"li"},"Connect external data")," button that samples external data and creates an initial query with the appropriate ",(0,r.kt)("inlineCode",{parentName:"li"},"EXTERN")," definition that you can then edit as needed."),(0,r.kt)("li",{parentName:"ol"},"The ",(0,r.kt)("strong",{parentName:"li"},"Recent query tasks")," panel lets you see currently running and previous queries from all users in the cluster.\nIt is equivalent to the ",(0,r.kt)("strong",{parentName:"li"},"Task")," view in the ",(0,r.kt)("strong",{parentName:"li"},"Ingestion")," view with the filter of ",(0,r.kt)("inlineCode",{parentName:"li"},"type='query_controller'"),"."),(0,r.kt)("li",{parentName:"ol"},"You can click on each query entry to attach to that query in a new tab."),(0,r.kt)("li",{parentName:"ol"},"You can download an archive of all the pertinent details about the query that you can share."),(0,r.kt)("li",{parentName:"ol"},"The ",(0,r.kt)("strong",{parentName:"li"},"Run")," button runs the query."),(0,r.kt)("li",{parentName:"ol"},"The ",(0,r.kt)("strong",{parentName:"li"},"Preview")," button appears when you enter an INSERT/REPLACE query. It runs the query inline without the INSERT/REPLACE clause and with an added LIMIT to give you a preview of the data that would be ingested if you click ",(0,r.kt)("strong",{parentName:"li"},"Run"),".\nThe added LIMIT makes the query run faster but provides incomplete results."),(0,r.kt)("li",{parentName:"ol"},"The engine selector lets you choose which engine (API endpoint) to send a query to. By default, it automatically picks which endpoint to use based on an analysis of the query, but you can select a specific engine explicitly. You can also configure the engine specific context parameters from this menu."),(0,r.kt)("li",{parentName:"ol"},"The ",(0,r.kt)("strong",{parentName:"li"},"Max tasks")," picker appears when you have the ",(0,r.kt)("strong",{parentName:"li"},"sql-msq-task")," engine selected. It lets you configure the degree of parallelism."),(0,r.kt)("li",{parentName:"ol"},"The More menu (",(0,r.kt)("strong",{parentName:"li"},"..."),") contains the following helpful tools:")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Explain SQL query")," shows you the logical plan returned by ",(0,r.kt)("inlineCode",{parentName:"li"},"EXPLAIN PLAN FOR")," for a SQL query."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Query history")," shows you previously executed queries."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Convert ingestion spec to SQL")," lets you convert a native batch ingestion spec to an equivalent SQL query."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Attach tab from task ID")," lets you create a new tab from the task ID of a query executed on this cluster."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Open query detail archive")," lets you open a detail archive generated on any cluster by (7).")),(0,r.kt)("ol",{start:13},(0,r.kt)("li",{parentName:"ol"},"The query timer indicates how long the query has been running for."),(0,r.kt)("li",{parentName:"ol"},"The ",(0,r.kt)("strong",{parentName:"li"},"(cancel)")," link cancels the currently running query."),(0,r.kt)("li",{parentName:"ol"},"The main progress bar shows the overall progress of the query.\nThe progress is computed from the various counters in the live reports (16)."),(0,r.kt)("li",{parentName:"ol"},"The ",(0,r.kt)("strong",{parentName:"li"},"Current stage")," progress bar shows the progress for the currently running query stage.\nIf several stages are executing concurrently, it conservatively shows the information for the earliest executing stage."),(0,r.kt)("li",{parentName:"ol"},"The live query reports show detailed information of all the stages (past, present, and future). The live reports are shown while the query is running. You can hide the report if you want.\nAfter queries finish, you can access them by clicking on the query time indicator or from the ",(0,r.kt)("strong",{parentName:"li"},"Recent query tasks")," panel (6)."),(0,r.kt)("li",{parentName:"ol"},"You can expand each stage of the live query report by clicking on the triangle to show per worker and per partition statistics.")),(0,r.kt)("h2",{id:"data-loader"},"Data loader"),(0,r.kt)("p",null,"You can use the data loader to build an ingestion spec with a step-by-step wizard."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Data loader tiles",src:a(73808).Z,width:"1250",height:"840"})),(0,r.kt)("p",null,"After selecting the location of your data, follow the series of steps displaying incremental previews of the data as it is ingested.\nAfter filling in the required details on every step you can navigate to the next step by clicking ",(0,r.kt)("strong",{parentName:"p"},"Next"),".\nYou can also freely navigate between the steps from the top navigation."),(0,r.kt)("p",null,"Navigating with the top navigation leaves the underlying spec unmodified while clicking ",(0,r.kt)("strong",{parentName:"p"},"Next")," attempts to fill in the subsequent steps with appropriate defaults."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Data loader ingestion",src:a(41219).Z,width:"1250",height:"840"})),(0,r.kt)("h2",{id:"datasources"},"Datasources"),(0,r.kt)("p",null,"The ",(0,r.kt)("strong",{parentName:"p"},"Datasources")," view shows all the datasources currently loaded on the cluster, as well as their sizes and availability.\nFrom the ",(0,r.kt)("strong",{parentName:"p"},"Datasources")," view, you can edit the retention rules, configure automatic compaction, and drop data in a datasource."),(0,r.kt)("p",null,"A datasource is partitioned into one or more segments organized by time chunks.\nTo display a timeline of segments, toggle the option for ",(0,r.kt)("strong",{parentName:"p"},"Show segment timeline"),"."),(0,r.kt)("p",null,"Like any view that is powered by a Druid SQL query, you can click ",(0,r.kt)("strong",{parentName:"p"},"View SQL query for table")," from the ellipsis menu to run the underlying SQL query directly."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Datasources",src:a(74595).Z,width:"1250",height:"840"})),(0,r.kt)("p",null,"You can view and edit retention rules to determine the general availability of a datasource."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Retention",src:a(41685).Z,width:"1250",height:"840"})),(0,r.kt)("h2",{id:"segments"},"Segments"),(0,r.kt)("p",null,"The ",(0,r.kt)("strong",{parentName:"p"},"Segments")," view shows all the ",(0,r.kt)("a",{parentName:"p",href:"/docs/latest/design/segments"},"segments")," in the cluster.\nEach segment has a detail view that provides more information.\nThe Segment ID is also conveniently broken down into Datasource, Start, End, Version, and Partition columns for ease of filtering and sorting."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Segments",src:a(2222).Z,width:"1250",height:"840"})),(0,r.kt)("h2",{id:"supervisors"},"Supervisors"),(0,r.kt)("p",null,"From this view, you can check the status of existing supervisors as well as suspend, resume, and reset them.\nThe supervisor oversees the state of the indexing tasks to coordinate handoffs, manage failures, and ensure that the scalability and replication requirements are maintained. Submit a supervisor spec manually by clicking the ellipsis icon and selecting ",(0,r.kt)("strong",{parentName:"p"},"Submit JSON supervisor"),"."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Supervisors",src:a(51475).Z,width:"1250",height:"840"})),(0,r.kt)("p",null,"Click the magnifying glass icon for any supervisor to see detailed reports of its progress."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Supervisors status",src:a(25754).Z,width:"1250",height:"840"})),(0,r.kt)("h2",{id:"tasks"},"Tasks"),(0,r.kt)("p",null,"The tasks table allows you to see the currently running and recently completed tasks.\nTo navigate your tasks more easily, you can group them by their ",(0,r.kt)("strong",{parentName:"p"},"Type"),", ",(0,r.kt)("strong",{parentName:"p"},"Datasource"),", or ",(0,r.kt)("strong",{parentName:"p"},"Status"),".\nSubmit a task manually by clicking the ellipsis icon and selecting ",(0,r.kt)("strong",{parentName:"p"},"Submit JSON task"),"."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Tasks",src:a(71520).Z,width:"1250",height:"840"})),(0,r.kt)("p",null,"Click the magnifying glass icon for any task to see more detail about it."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Tasks status",src:a(10986).Z,width:"1250",height:"840"})),(0,r.kt)("h2",{id:"services"},"Services"),(0,r.kt)("p",null,"The ",(0,r.kt)("strong",{parentName:"p"},"Services")," view lets you see the current status of the nodes making up your cluster.\nYou can group the nodes by ",(0,r.kt)("strong",{parentName:"p"},"Type")," or by ",(0,r.kt)("strong",{parentName:"p"},"Tier")," to get meaningful summary statistics. "),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Services",src:a(34269).Z,width:"1250",height:"840"})),(0,r.kt)("h2",{id:"lookups"},"Lookups"),(0,r.kt)("p",null,"Access the ",(0,r.kt)("strong",{parentName:"p"},"Lookups")," view from the ",(0,r.kt)("strong",{parentName:"p"},"Lookups")," card in the home view or by clicking the ellipsis icon in the top-level navigation.\nHere you can create and edit query time ",(0,r.kt)("a",{parentName:"p",href:"/docs/latest/querying/lookups"},"lookups"),"."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Lookups",src:a(12364).Z,width:"1250",height:"840"})))}m.isMDXComponent=!0},61685:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/ui-annotated-7932933ce7ad968aa0f5e3ef2aeca5e0.png"},71520:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-0.7-tasks-d53bfa761253b59a0bd368825f8b5c48.png"},64313:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-01-home-view-99f09e8760740e04b982b4d4c56fe6ed.png"},73808:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-02-data-loader-1-fcc691fda096b9d9fb00f9a5cd30293f.png"},41219:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-03-data-loader-2-6eb770d4034261a96b968deb305f1258.png"},74595:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-04-datasources-d0ac928b0107a903b7c99fd8dff2fc39.png"},41685:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-05-retention-e5f87124a1e9c252043a45b84a6039ed.png"},2222:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-06-segments-2a1f30ad959f3af6b5bbe9818f29674d.png"},51475:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-07-supervisors-dc27d65a42df39922d4ad9cff556faf8.png"},25754:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-08-supervisor-status-07ece8b3920e682c3264c779053801a0.png"},10986:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-09-task-status-3bc2b07f8ebe5dca9d6259d011b97d47.png"},34269:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-10-servers-a6657c30723d278409d8d884d3655ed1.png"},12364:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/web-console-13-lookups-337b7e84ed82f5580448a5ba083f91c1.png"}}]);