blob: b893a97f8b92c18797b02208f6fbeeb9fc02581c [file] [log] [blame]
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1338],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?n(Object(a),!0).forEach((function(t){l(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,l=function(e,t){if(null==e)return{};var a,r,l={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var d=r.createContext({}),i=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},u=function(e){var t=i(e.components);return r.createElement(d.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,d=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),p=i(a),m=l,k=p["".concat(d,".").concat(m)]||p[m]||c[m]||n;return a?r.createElement(k,s(s({ref:t},u),{},{components:a})):r.createElement(k,s({ref:t},u))}));function k(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,s=new Array(n);s[0]=m;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[p]="string"==typeof e?e:l,s[1]=o;for(var i=2;i<n;i++)s[i]=a[i];return r.createElement.apply(null,s)}return r.createElement.apply(null,a)}m.displayName="MDXCreateElement"},85162:(e,t,a)=>{a.d(t,{Z:()=>s});var r=a(67294),l=a(86010);const n={tabItem:"tabItem_Ymn6"};function s(e){var t=e.children,a=e.hidden,s=e.className;return r.createElement("div",{role:"tabpanel",className:(0,l.Z)(n.tabItem,s),hidden:a},t)}},74866:(e,t,a)=>{a.d(t,{Z:()=>y});var r=a(87462),l=a(67294),n=a(86010),s=a(12466),o=a(16550),d=a(91980),i=a(67392),u=a(50012);function p(e){return function(e){var t,a;return null!=(t=null==(a=l.Children.map(e,(function(e){if(!e||(0,l.isValidElement)(e)&&(t=e.props)&&"object"==typeof t&&"value"in t)return e;var t;throw new Error("Docusaurus error: Bad <Tabs> child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.')})))?void 0:a.filter(Boolean))?t:[]}(e).map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes,default:t.default}}))}function c(e){var t=e.values,a=e.children;return(0,l.useMemo)((function(){var e=null!=t?t:p(a);return function(e){var t=(0,i.l)(e,(function(e,t){return e.value===t.value}));if(t.length>0)throw new Error('Docusaurus error: Duplicate values "'+t.map((function(e){return e.value})).join(", ")+'" found in <Tabs>. Every value needs to be unique.')}(e),e}),[t,a])}function m(e){var t=e.value;return e.tabValues.some((function(e){return e.value===t}))}function k(e){var t=e.queryString,a=void 0!==t&&t,r=e.groupId,n=(0,o.k6)(),s=function(e){var t=e.queryString,a=void 0!==t&&t,r=e.groupId;if("string"==typeof a)return a;if(!1===a)return null;if(!0===a&&!r)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=r?r:null}({queryString:a,groupId:r});return[(0,d._X)(s),(0,l.useCallback)((function(e){if(s){var t=new URLSearchParams(n.location.search);t.set(s,e),n.replace(Object.assign({},n.location,{search:t.toString()}))}}),[s,n])]}function v(e){var t,a,r,n,s=e.defaultValue,o=e.queryString,d=void 0!==o&&o,i=e.groupId,p=c(e),v=(0,l.useState)((function(){return function(e){var t,a=e.defaultValue,r=e.tabValues;if(0===r.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(a){if(!m({value:a,tabValues:r}))throw new Error('Docusaurus error: The <Tabs> has a defaultValue "'+a+'" but none of its children has the corresponding value. Available values are: '+r.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");return a}var l=null!=(t=r.find((function(e){return e.default})))?t:r[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:s,tabValues:p})})),h=v[0],g=v[1],T=k({queryString:d,groupId:i}),b=T[0],f=T[1],y=(t=function(e){return e?"docusaurus.tab."+e:null}({groupId:i}.groupId),a=(0,u.Nk)(t),r=a[0],n=a[1],[r,(0,l.useCallback)((function(e){t&&n.set(e)}),[t,n])]),R=y[0],N=y[1],S=function(){var e=null!=b?b:R;return m({value:e,tabValues:p})?e:null}();return(0,l.useLayoutEffect)((function(){S&&g(S)}),[S]),{selectedValue:h,selectValue:(0,l.useCallback)((function(e){if(!m({value:e,tabValues:p}))throw new Error("Can't select invalid tab value="+e);g(e),f(e),N(e)}),[f,N,p]),tabValues:p}}var h=a(72389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function T(e){var t=e.className,a=e.block,o=e.selectedValue,d=e.selectValue,i=e.tabValues,u=[],p=(0,s.o5)().blockElementScrollPositionUntilNextRender,c=function(e){var t=e.currentTarget,a=u.indexOf(t),r=i[a].value;r!==o&&(p(t),d(r))},m=function(e){var t,a=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":var r,l=u.indexOf(e.currentTarget)+1;a=null!=(r=u[l])?r:u[0];break;case"ArrowLeft":var n,s=u.indexOf(e.currentTarget)-1;a=null!=(n=u[s])?n:u[u.length-1]}null==(t=a)||t.focus()};return l.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.Z)("tabs",{"tabs--block":a},t)},i.map((function(e){var t=e.value,a=e.label,s=e.attributes;return l.createElement("li",(0,r.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:function(e){return u.push(e)},onKeyDown:m,onClick:c},s,{className:(0,n.Z)("tabs__item",g.tabItem,null==s?void 0:s.className,{"tabs__item--active":o===t})}),null!=a?a:t)})))}function b(e){var t=e.lazy,a=e.children,r=e.selectedValue,n=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){var s=n.find((function(e){return e.props.value===r}));return s?(0,l.cloneElement)(s,{className:"margin-top--md"}):null}return l.createElement("div",{className:"margin-top--md"},n.map((function(e,t){return(0,l.cloneElement)(e,{key:t,hidden:e.props.value!==r})})))}function f(e){var t=v(e);return l.createElement("div",{className:(0,n.Z)("tabs-container",g.tabList)},l.createElement(T,(0,r.Z)({},e,t)),l.createElement(b,(0,r.Z)({},e,t)))}function y(e){var t=(0,h.Z)();return l.createElement(f,(0,r.Z)({key:String(t)},e))}},54836:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>i,metadata:()=>p,toc:()=>m});var r=a(87462),l=a(63366),n=(a(67294),a(3905)),s=a(74866),o=a(85162),d=["components"],i={id:"service-status-api",title:"Service status API",sidebar_label:"Service status"},u=void 0,p={unversionedId:"api-reference/service-status-api",id:"api-reference/service-status-api",title:"Service status API",description:"\x3c!--",source:"@site/docs/29.0.1/api-reference/service-status-api.md",sourceDirName:"api-reference",slug:"/api-reference/service-status-api",permalink:"/docs/29.0.1/api-reference/service-status-api",draft:!1,tags:[],version:"current",frontMatter:{id:"service-status-api",title:"Service status API",sidebar_label:"Service status"},sidebar:"docs",previous:{title:"Lookups",permalink:"/docs/29.0.1/api-reference/lookups-api"},next:{title:"Dynamic configuration",permalink:"/docs/29.0.1/api-reference/dynamic-configuration-api"}},c={},m=[{value:"Common",id:"common",level:2},{value:"Get service information",id:"get-service-information",level:3},{value:"URL",id:"url",level:4},{value:"Responses",id:"responses",level:4},{value:"Sample request",id:"sample-request",level:4},{value:"Sample response",id:"sample-response",level:4},{value:"Get service health",id:"get-service-health",level:3},{value:"URL",id:"url-1",level:4},{value:"Responses",id:"responses-1",level:4},{value:"Sample request",id:"sample-request-1",level:4},{value:"Sample response",id:"sample-response-1",level:4},{value:"Get configuration properties",id:"get-configuration-properties",level:3},{value:"URL",id:"url-2",level:4},{value:"Responses",id:"responses-2",level:4},{value:"Sample request",id:"sample-request-2",level:4},{value:"Sample response",id:"sample-response-2",level:4},{value:"Get node discovery status and cluster integration confirmation",id:"get-node-discovery-status-and-cluster-integration-confirmation",level:3},{value:"URL",id:"url-3",level:4},{value:"Responses",id:"responses-3",level:4},{value:"Sample request",id:"sample-request-3",level:4},{value:"Sample response",id:"sample-response-3",level:4},{value:"Get node self-discovery status",id:"get-node-self-discovery-status",level:3},{value:"URL",id:"url-4",level:4},{value:"Responses",id:"responses-4",level:4},{value:"Sample request",id:"sample-request-4",level:4},{value:"Sample response",id:"sample-response-4",level:4},{value:"Coordinator",id:"coordinator",level:2},{value:"Get Coordinator leader address",id:"get-coordinator-leader-address",level:3},{value:"URL",id:"url-5",level:4},{value:"Responses",id:"responses-5",level:4},{value:"Sample request",id:"sample-request-5",level:4},{value:"Sample response",id:"sample-response-5",level:4},{value:"Get Coordinator leader status",id:"get-coordinator-leader-status",level:3},{value:"URL",id:"url-6",level:4},{value:"Responses",id:"responses-6",level:4},{value:"Sample request",id:"sample-request-6",level:4},{value:"Sample response",id:"sample-response-6",level:4},{value:"Overlord",id:"overlord",level:2},{value:"Get Overlord leader address",id:"get-overlord-leader-address",level:3},{value:"URL",id:"url-7",level:4},{value:"Responses",id:"responses-7",level:4},{value:"Sample request",id:"sample-request-7",level:4},{value:"Sample response",id:"sample-response-7",level:4},{value:"Get Overlord leader status",id:"get-overlord-leader-status",level:3},{value:"URL",id:"url-8",level:4},{value:"Responses",id:"responses-8",level:4},{value:"Sample request",id:"sample-request-8",level:4},{value:"Sample response",id:"sample-response-8",level:4},{value:"MiddleManager",id:"middlemanager",level:2},{value:"Get MiddleManager state status",id:"get-middlemanager-state-status",level:3},{value:"URL",id:"url-9",level:4},{value:"Responses",id:"responses-9",level:4},{value:"Sample request",id:"sample-request-9",level:4},{value:"Sample response",id:"sample-response-9",level:4},{value:"Get active tasks",id:"get-active-tasks",level:3},{value:"URL",id:"url-10",level:4},{value:"Responses",id:"responses-10",level:4},{value:"Sample request",id:"sample-request-10",level:4},{value:"Sample response",id:"sample-response-10",level:4},{value:"Get task log",id:"get-task-log",level:3},{value:"URL",id:"url-11",level:4},{value:"Shut down running task",id:"shut-down-running-task",level:3},{value:"URL",id:"url-12",level:4},{value:"Responses",id:"responses-11",level:4},{value:"Sample request",id:"sample-request-11",level:4},{value:"Sample response",id:"sample-response-11",level:4},{value:"Disable MiddleManager",id:"disable-middlemanager",level:3},{value:"URL",id:"url-13",level:4},{value:"Responses",id:"responses-12",level:4},{value:"Sample request",id:"sample-request-12",level:4},{value:"Sample response",id:"sample-response-12",level:4},{value:"Enable MiddleManager",id:"enable-middlemanager",level:3},{value:"URL",id:"url-14",level:4},{value:"Responses",id:"responses-13",level:4},{value:"Sample request",id:"sample-request-13",level:4},{value:"Sample response",id:"sample-response-13",level:4},{value:"Historical",id:"historical",level:2},{value:"Get segment load status",id:"get-segment-load-status",level:3},{value:"URL",id:"url-15",level:4},{value:"Responses",id:"responses-14",level:4},{value:"Sample request",id:"sample-request-14",level:4},{value:"Sample response",id:"sample-response-14",level:4},{value:"Get segment readiness",id:"get-segment-readiness",level:3},{value:"URL",id:"url-16",level:4},{value:"Responses",id:"responses-15",level:4},{value:"Sample request",id:"sample-request-15",level:4},{value:"Sample response",id:"sample-response-15",level:4},{value:"Load Status",id:"load-status",level:2},{value:"Get Broker query load status",id:"get-broker-query-load-status",level:3},{value:"URL",id:"url-17",level:4},{value:"Responses",id:"responses-16",level:4},{value:"Sample request",id:"sample-request-16",level:4},{value:"Sample response",id:"sample-response-16",level:4},{value:"Get Broker query readiness",id:"get-broker-query-readiness",level:3},{value:"URL",id:"url-18",level:4},{value:"Responses",id:"responses-17",level:4},{value:"Sample request",id:"sample-request-17",level:4},{value:"Sample response",id:"sample-response-17",level:4}],k={toc:m},v="wrapper";function h(e){var t=e.components,a=(0,l.Z)(e,d);return(0,n.kt)(v,(0,r.Z)({},k,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"This document describes the API endpoints to retrieve service status, cluster information for Apache Druid."),(0,n.kt)("p",null,"In this document, ",(0,n.kt)("inlineCode",{parentName:"p"},"http://SERVICE_IP:SERVICE_PORT")," is a placeholder for the server address of deployment and the service port. For example, on the quickstart configuration, replace ",(0,n.kt)("inlineCode",{parentName:"p"},"http://ROUTER_IP:ROUTER_PORT")," with ",(0,n.kt)("inlineCode",{parentName:"p"},"http://localhost:8888"),"."),(0,n.kt)("h2",{id:"common"},"Common"),(0,n.kt)("p",null,"All services support the following endpoints."),(0,n.kt)("p",null,"You can use each endpoint with the ports for each type of service. The following table contains port addresses for a local configuration:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Service"),(0,n.kt)("th",{parentName:"tr",align:null},"Port address"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Coordinator"),(0,n.kt)("td",{parentName:"tr",align:null},"8081")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Overlord"),(0,n.kt)("td",{parentName:"tr",align:null},"8081")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Router"),(0,n.kt)("td",{parentName:"tr",align:null},"8888")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Broker"),(0,n.kt)("td",{parentName:"tr",align:null},"8082")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Historical"),(0,n.kt)("td",{parentName:"tr",align:null},"8083")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"MiddleManager"),(0,n.kt)("td",{parentName:"tr",align:null},"8091")))),(0,n.kt)("h3",{id:"get-service-information"},"Get service information"),(0,n.kt)("p",null,"Retrieves the Druid version, loaded extensions, memory used, total memory, and other useful information about the individual service."),(0,n.kt)("p",null,"Modify the host and port for the endpoint to match the service to query. Refer to the ",(0,n.kt)("a",{parentName:"p",href:"#common"},"default service ports")," for the port numbers."),(0,n.kt)("h4",{id:"url"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/status"),(0,n.kt)("h4",{id:"responses"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"1",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully retrieved service information")))),(0,n.kt)("hr",null),(0,n.kt)("h4",{id:"sample-request"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"2",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://ROUTER_IP:ROUTER_PORT/status"\n'))),(0,n.kt)(o.Z,{value:"3",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /status HTTP/1.1\nHost: http://ROUTER_IP:ROUTER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "version": "26.0.0",\n "modules": [\n {\n "name": "org.apache.druid.common.aws.AWSModule",\n "artifact": "druid-aws-common",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.common.gcp.GcpModule",\n "artifact": "druid-gcp-common",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.storage.hdfs.HdfsStorageDruidModule",\n "artifact": "druid-hdfs-storage",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.indexing.kafka.KafkaIndexTaskModule",\n "artifact": "druid-kafka-indexing-service",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.query.aggregation.datasketches.theta.SketchModule",\n "artifact": "druid-datasketches",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.query.aggregation.datasketches.theta.oldapi.OldApiSketchModule",\n "artifact": "druid-datasketches",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.query.aggregation.datasketches.quantiles.DoublesSketchModule",\n "artifact": "druid-datasketches",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.query.aggregation.datasketches.tuple.ArrayOfDoublesSketchModule",\n "artifact": "druid-datasketches",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.query.aggregation.datasketches.hll.HllSketchModule",\n "artifact": "druid-datasketches",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.query.aggregation.datasketches.kll.KllSketchModule",\n "artifact": "druid-datasketches",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.msq.guice.MSQExternalDataSourceModule",\n "artifact": "druid-multi-stage-query",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.msq.guice.MSQIndexingModule",\n "artifact": "druid-multi-stage-query",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.msq.guice.MSQDurableStorageModule",\n "artifact": "druid-multi-stage-query",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.msq.guice.MSQServiceClientModule",\n "artifact": "druid-multi-stage-query",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.msq.guice.MSQSqlModule",\n "artifact": "druid-multi-stage-query",\n "version": "26.0.0"\n },\n {\n "name": "org.apache.druid.msq.guice.SqlTaskModule",\n "artifact": "druid-multi-stage-query",\n "version": "26.0.0"\n }\n ],\n "memory": {\n "maxMemory": 268435456,\n "totalMemory": 268435456,\n "freeMemory": 139060688,\n "usedMemory": 129374768,\n "directMemory": 134217728\n }\n}\n'))),(0,n.kt)("h3",{id:"get-service-health"},"Get service health"),(0,n.kt)("p",null,"Retrieves the online status of the individual Druid service. It is a simple health check to determine if the service is running and accessible. If online, it will always return a boolean ",(0,n.kt)("inlineCode",{parentName:"p"},"true")," value, indicating that the service can receive API calls. This endpoint is suitable for automated health checks."),(0,n.kt)("p",null,"Modify the host and port for the endpoint to match the service to query. Refer to the ",(0,n.kt)("a",{parentName:"p",href:"#common"},"default service ports")," for the port numbers."),(0,n.kt)("p",null,"Additional checks for readiness should use the ",(0,n.kt)("a",{parentName:"p",href:"#get-segment-readiness"},"Historical segment readiness")," and ",(0,n.kt)("a",{parentName:"p",href:"#get-broker-query-readiness"},"Broker query readiness")," endpoints."),(0,n.kt)("h4",{id:"url-1"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/status/health"),(0,n.kt)("h4",{id:"responses-1"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"4",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully retrieved service health")))),(0,n.kt)("h4",{id:"sample-request-1"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"5",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://ROUTER_IP:ROUTER_PORT/status/health"\n'))),(0,n.kt)(o.Z,{value:"6",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /status/health HTTP/1.1\nHost: http://ROUTER_IP:ROUTER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-1"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},"true\n"))),(0,n.kt)("h3",{id:"get-configuration-properties"},"Get configuration properties"),(0,n.kt)("p",null,"Retrieves the current configuration properties of the individual service queried."),(0,n.kt)("p",null,"Modify the host and port for the endpoint to match the service to query. Refer to the ",(0,n.kt)("a",{parentName:"p",href:"#common"},"default service ports")," for the port numbers."),(0,n.kt)("h4",{id:"url-2"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/status/properties"),(0,n.kt)("h4",{id:"responses-2"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"7",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully retrieved service configuration properties")))),(0,n.kt)("h4",{id:"sample-request-2"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"8",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://ROUTER_IP:ROUTER_PORT/status/properties"\n'))),(0,n.kt)(o.Z,{value:"9",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /status/properties HTTP/1.1\nHost: http://ROUTER_IP:ROUTER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-2"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n{\n "gopherProxySet": "false",\n "awt.toolkit": "sun.lwawt.macosx.LWCToolkit",\n "druid.monitoring.monitors": "[\\"org.apache.druid.java.util.metrics.JvmMonitor\\"]",\n "java.specification.version": "11",\n "sun.cpu.isalist": "",\n "druid.plaintextPort": "8888",\n "sun.jnu.encoding": "UTF-8",\n "druid.indexing.doubleStorage": "double",\n "druid.metadata.storage.connector.port": "1527",\n "java.class.path": "/Users/genericUserPath",\n "log4j.shutdownHookEnabled": "true",\n "java.vm.vendor": "Homebrew",\n "sun.arch.data.model": "64",\n "druid.extensions.loadList": "[\\"druid-hdfs-storage\\", \\"druid-kafka-indexing-service\\", \\"druid-datasketches\\", \\"druid-multi-stage-query\\"]",\n "java.vendor.url": "https://github.com/Homebrew/homebrew-core/issues",\n "druid.router.coordinatorServiceName": "druid/coordinator",\n "user.timezone": "UTC",\n "druid.global.http.eagerInitialization": "false",\n "os.name": "Mac OS X",\n "java.vm.specification.version": "11",\n "sun.java.launcher": "SUN_STANDARD",\n "user.country": "US",\n "sun.boot.library.path": "/opt/homebrew/Cellar/openjdk@11/11.0.19/libexec/openjdk.jdk/Contents/Home/lib",\n "sun.java.command": "org.apache.druid.cli.Main server router",\n "http.nonProxyHosts": "local|*.local|169.254/16|*.169.254/16",\n "jdk.debug": "release",\n "druid.metadata.storage.connector.host": "localhost",\n "sun.cpu.endian": "little",\n "druid.zk.paths.base": "/druid",\n "user.home": "/Users/genericUser",\n "user.language": "en",\n "java.specification.vendor": "Oracle Corporation",\n "java.version.date": "2023-04-18",\n "java.home": "/opt/homebrew/Cellar/openjdk@11/11.0.19/libexec/openjdk.jdk/Contents/Home",\n "druid.service": "druid/router",\n "druid.selectors.coordinator.serviceName": "druid/coordinator",\n "druid.metadata.storage.connector.connectURI": "jdbc:derby://localhost:1527/var/druid/metadata.db;create=true",\n "file.separator": "/",\n "druid.selectors.indexing.serviceName": "druid/overlord",\n "java.vm.compressedOopsMode": "Zero based",\n "druid.metadata.storage.type": "derby",\n "line.separator": "\\n",\n "druid.log.path": "/Users/genericUserPath",\n "java.vm.specification.vendor": "Oracle Corporation",\n "java.specification.name": "Java Platform API Specification",\n "druid.indexer.logs.directory": "var/druid/indexing-logs",\n "java.awt.graphicsenv": "sun.awt.CGraphicsEnvironment",\n "druid.router.defaultBrokerServiceName": "druid/broker",\n "druid.storage.storageDirectory": "var/druid/segments",\n "sun.management.compiler": "HotSpot 64-Bit Tiered Compilers",\n "ftp.nonProxyHosts": "local|*.local|169.254/16|*.169.254/16",\n "java.runtime.version": "11.0.19+0",\n "user.name": "genericUser",\n "druid.indexer.logs.type": "file",\n "druid.host": "localhost",\n "log4j2.is.webapp": "false",\n "path.separator": ":",\n "os.version": "12.6.5",\n "druid.lookup.enableLookupSyncOnStartup": "false",\n "java.runtime.name": "OpenJDK Runtime Environment",\n "druid.zk.service.host": "localhost",\n "file.encoding": "UTF-8",\n "druid.sql.planner.useGroupingSetForExactDistinct": "true",\n "druid.router.managementProxy.enabled": "true",\n "java.vm.name": "OpenJDK 64-Bit Server VM",\n "java.vendor.version": "Homebrew",\n "druid.startup.logging.logProperties": "true",\n "java.vendor.url.bug": "https://github.com/Homebrew/homebrew-core/issues",\n "log4j.shutdownCallbackRegistry": "org.apache.druid.common.config.Log4jShutdown",\n "java.io.tmpdir": "var/tmp",\n "druid.sql.enable": "true",\n "druid.emitter.logging.logLevel": "info",\n "java.version": "11.0.19",\n "user.dir": "/Users/genericUser/Downloads/apache-druid-26.0.0",\n "os.arch": "aarch64",\n "java.vm.specification.name": "Java Virtual Machine Specification",\n "druid.node.type": "router",\n "java.awt.printerjob": "sun.lwawt.macosx.CPrinterJob",\n "sun.os.patch.level": "unknown",\n "java.util.logging.manager": "org.apache.logging.log4j.jul.LogManager",\n "java.library.path": "/Users/genericUserPath",\n "java.vendor": "Homebrew",\n "java.vm.info": "mixed mode",\n "java.vm.version": "11.0.19+0",\n "druid.emitter": "noop",\n "sun.io.unicode.encoding": "UnicodeBig",\n "druid.storage.type": "local",\n "druid.expressions.useStrictBooleans": "true",\n "java.class.version": "55.0",\n "socksNonProxyHosts": "local|*.local|169.254/16|*.169.254/16",\n "druid.server.hiddenProperties": "[\\"druid.s3.accessKey\\",\\"druid.s3.secretKey\\",\\"druid.metadata.storage.connector.password\\", \\"password\\", \\"key\\", \\"token\\", \\"pwd\\"]"\n}\n'))),(0,n.kt)("h3",{id:"get-node-discovery-status-and-cluster-integration-confirmation"},"Get node discovery status and cluster integration confirmation"),(0,n.kt)("p",null,"Retrieves a JSON map of the form ",(0,n.kt)("inlineCode",{parentName:"p"},'{"selfDiscovered": true/false}'),", indicating whether the node has received a confirmation from the central node discovery mechanism (currently ZooKeeper) of the Druid cluster that the node has been added to the cluster."),(0,n.kt)("p",null,'Only consider a Druid node "healthy" or "ready" in automated deployment/container management systems when this endpoint returns ',(0,n.kt)("inlineCode",{parentName:"p"},'{"selfDiscovered": true}'),". Nodes experiencing network issues may become isolated and are not healthy.\nFor nodes that use Zookeeper segment discovery, a response of ",(0,n.kt)("inlineCode",{parentName:"p"},'{"selfDiscovered": true}')," indicates that the node's Zookeeper client has started receiving data from the Zookeeper cluster, enabling timely discovery of segments and other nodes."),(0,n.kt)("h4",{id:"url-3"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/status/selfDiscovered/status"),(0,n.kt)("h4",{id:"responses-3"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"10",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Node was successfully added to the cluster")))),(0,n.kt)("h4",{id:"sample-request-3"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"11",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://ROUTER_IP:ROUTER_PORT/status/selfDiscovered/status"\n'))),(0,n.kt)(o.Z,{value:"12",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /status/selfDiscovered/status HTTP/1.1\nHost: http://ROUTER_IP:ROUTER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-3"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "selfDiscovered": true\n}\n'))),(0,n.kt)("h3",{id:"get-node-self-discovery-status"},"Get node self-discovery status"),(0,n.kt)("p",null,"Returns an HTTP status code to indicate node discovery within the Druid cluster. This endpoint is similar to the ",(0,n.kt)("inlineCode",{parentName:"p"},"status/selfDiscovered/status")," endpoint, but relies on HTTP status codes alone.\nUse this endpoint for monitoring checks that are unable to examine the response body. For example, AWS load balancer health checks."),(0,n.kt)("h4",{id:"url-4"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/status/selfDiscovered"),(0,n.kt)("h4",{id:"responses-4"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"13",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully retrieved node status"))),(0,n.kt)(o.Z,{value:"14",label:"503 SERVICE UNAVAILABLE",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Unsuccessful node self-discovery")))),(0,n.kt)("h4",{id:"sample-request-4"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"15",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://ROUTER_IP:ROUTER_PORT/status/selfDiscovered"\n'))),(0,n.kt)(o.Z,{value:"16",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /status/selfDiscovered HTTP/1.1\nHost: http://ROUTER_IP:ROUTER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-4"},"Sample response"),(0,n.kt)("p",null,"A successful response to this endpoint results in an empty response body."),(0,n.kt)("h2",{id:"coordinator"},"Coordinator"),(0,n.kt)("h3",{id:"get-coordinator-leader-address"},"Get Coordinator leader address"),(0,n.kt)("p",null,"Retrieves the address of the current leader Coordinator of the cluster. If any request is sent to a non-leader Coordinator, the request is automatically redirected to the leader Coordinator."),(0,n.kt)("h4",{id:"url-5"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/druid/coordinator/v1/leader"),(0,n.kt)("h4",{id:"responses-5"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"17",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully retrieved leader Coordinator address")))),(0,n.kt)("hr",null),(0,n.kt)("h4",{id:"sample-request-5"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"18",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://ROUTER_IP:ROUTER_PORT/druid/coordinator/v1/leader"\n'))),(0,n.kt)(o.Z,{value:"19",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /druid/coordinator/v1/leader HTTP/1.1\nHost: http://ROUTER_IP:ROUTER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-5"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},"http://localhost:8081\n"))),(0,n.kt)("h3",{id:"get-coordinator-leader-status"},"Get Coordinator leader status"),(0,n.kt)("p",null,"Retrieves a JSON object with a ",(0,n.kt)("inlineCode",{parentName:"p"},"leader")," key. Returns ",(0,n.kt)("inlineCode",{parentName:"p"},"true")," if this server is the current leader Coordinator of the cluster. To get the individual address of the leader Coordinator node, see the ",(0,n.kt)("a",{parentName:"p",href:"#get-coordinator-leader-address"},"leader endpoint"),"."),(0,n.kt)("p",null,"Use this endpoint as a load balancer status check when you only want the active leader to be considered in-service at the load balancer."),(0,n.kt)("h4",{id:"url-6"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/druid/coordinator/v1/isLeader"),(0,n.kt)("h4",{id:"responses-6"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"20",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Current server is the leader"))),(0,n.kt)(o.Z,{value:"21",label:"404 NOT FOUND",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Current server is not the leader")))),(0,n.kt)("hr",null),(0,n.kt)("h4",{id:"sample-request-6"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"22",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://COORDINATOR_IP:COORDINATOR_PORT/druid/coordinator/v1/isLeader"\n'))),(0,n.kt)(o.Z,{value:"23",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /druid/coordinator/v1/isLeader HTTP/1.1\nHost: http://COORDINATOR_IP:COORDINATOR_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-6"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "leader": true\n}\n'))),(0,n.kt)("h2",{id:"overlord"},"Overlord"),(0,n.kt)("h3",{id:"get-overlord-leader-address"},"Get Overlord leader address"),(0,n.kt)("p",null,"Retrieves the address of the current leader Overlord of the cluster. In a cluster of multiple Overlords, only one Overlord assumes the leading role, while the remaining Overlords remain on standby."),(0,n.kt)("h4",{id:"url-7"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/druid/indexer/v1/leader"),(0,n.kt)("h4",{id:"responses-7"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"24",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully retrieved leader Overlord address")))),(0,n.kt)("hr",null),(0,n.kt)("h4",{id:"sample-request-7"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"25",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://ROUTER_IP:ROUTER_PORT/druid/indexer/v1/leader"\n'))),(0,n.kt)(o.Z,{value:"26",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /druid/indexer/v1/leader HTTP/1.1\nHost: http://ROUTER_IP:ROUTER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-7"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},"http://localhost:8081\n"))),(0,n.kt)("h3",{id:"get-overlord-leader-status"},"Get Overlord leader status"),(0,n.kt)("p",null,"Retrieves a JSON object with a ",(0,n.kt)("inlineCode",{parentName:"p"},"leader")," property. The value can be ",(0,n.kt)("inlineCode",{parentName:"p"},"true")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"false"),", indicating if this server is the current leader Overlord of the cluster. To get the individual address of the leader Overlord node, see the ",(0,n.kt)("a",{parentName:"p",href:"#get-overlord-leader-address"},"leader endpoint"),"."),(0,n.kt)("p",null,"Use this endpoint as a load balancer status check when you only want the active leader to be considered in-service at the load balancer."),(0,n.kt)("h4",{id:"url-8"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/druid/indexer/v1/isLeader"),(0,n.kt)("h4",{id:"responses-8"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"27",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Current server is the leader"))),(0,n.kt)(o.Z,{value:"28",label:"404 NOT FOUND",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Current server is not the leader")))),(0,n.kt)("hr",null),(0,n.kt)("h4",{id:"sample-request-8"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"29",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://OVERLORD_IP:OVERLORD_PORT/druid/indexer/v1/isLeader"\n'))),(0,n.kt)(o.Z,{value:"30",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /druid/indexer/v1/isLeader HTTP/1.1\nHost: http://OVERLORD_IP:OVERLORD_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-8"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "leader": true\n}\n'))),(0,n.kt)("h2",{id:"middlemanager"},"MiddleManager"),(0,n.kt)("h3",{id:"get-middlemanager-state-status"},"Get MiddleManager state status"),(0,n.kt)("p",null,"Retrieves the enabled state of the MiddleManager. Returns JSON object keyed by the combined ",(0,n.kt)("inlineCode",{parentName:"p"},"druid.host")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"druid.port")," with a boolean ",(0,n.kt)("inlineCode",{parentName:"p"},"true")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"false")," state as the value."),(0,n.kt)("h4",{id:"url-9"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/druid/worker/v1/enabled"),(0,n.kt)("h4",{id:"responses-9"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"31",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully retrieved MiddleManager state")))),(0,n.kt)("hr",null),(0,n.kt)("h4",{id:"sample-request-9"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"32",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://MIDDLEMANAGER_IP:MIDDLEMANAGER_PORT/druid/worker/v1/enabled"\n'))),(0,n.kt)(o.Z,{value:"33",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /druid/worker/v1/enabled HTTP/1.1\nHost: http://MIDDLEMANAGER_IP:MIDDLEMANAGER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-9"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "localhost:8091": true\n}\n'))),(0,n.kt)("h3",{id:"get-active-tasks"},"Get active tasks"),(0,n.kt)("p",null,"Retrieves a list of active tasks being run on MiddleManager. Returns JSON list of task ID strings. Note that for normal usage, you should use the ",(0,n.kt)("inlineCode",{parentName:"p"},"/druid/indexer/v1/tasks")," ",(0,n.kt)("a",{parentName:"p",href:"/docs/29.0.1/api-reference/tasks-api"},"Tasks API")," endpoint or one of the task state specific variants instead."),(0,n.kt)("h4",{id:"url-10"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/druid/worker/v1/tasks"),(0,n.kt)("h4",{id:"responses-10"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"34",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully retrieved active tasks")))),(0,n.kt)("hr",null),(0,n.kt)("h4",{id:"sample-request-10"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"35",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://MIDDLEMANAGER_IP:MIDDLEMANAGER_PORT/druid/worker/v1/tasks"\n'))),(0,n.kt)(o.Z,{value:"36",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /druid/worker/v1/tasks HTTP/1.1\nHost: http://MIDDLEMANAGER_IP:MIDDLEMANAGER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-10"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'[\n "index_parallel_wikipedia_mgchefio_2023-06-13T22:18:05.360Z"\n]\n'))),(0,n.kt)("h3",{id:"get-task-log"},"Get task log"),(0,n.kt)("p",null,"Retrieves task log output stream by task ID. For normal usage, you should use the ",(0,n.kt)("inlineCode",{parentName:"p"},"/druid/indexer/v1/task/{taskId}/log"),"\n",(0,n.kt)("a",{parentName:"p",href:"/docs/29.0.1/api-reference/tasks-api"},"Tasks API")," endpoint instead."),(0,n.kt)("h4",{id:"url-11"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/druid/worker/v1/task/:taskId/log"),(0,n.kt)("h3",{id:"shut-down-running-task"},"Shut down running task"),(0,n.kt)("p",null,"Shuts down a running task by ID. For normal usage, you should use the ",(0,n.kt)("inlineCode",{parentName:"p"},"/druid/indexer/v1/task/:taskId/shutdown"),"\n",(0,n.kt)("a",{parentName:"p",href:"/docs/29.0.1/api-reference/tasks-api"},"Tasks API")," endpoint instead."),(0,n.kt)("h4",{id:"url-12"},"URL"),(0,n.kt)("code",{class:"postAPI"},"POST")," ",(0,n.kt)("code",null,"/druid/worker/v1/task/:taskId/shutdown"),(0,n.kt)("h4",{id:"responses-11"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"37",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully shut down a task")))),(0,n.kt)("hr",null),(0,n.kt)("h4",{id:"sample-request-11"},"Sample request"),(0,n.kt)("p",null,"The following example shuts down a task with specified ID ",(0,n.kt)("inlineCode",{parentName:"p"},"index_kafka_wikiticker_f7011f8ffba384b_fpeclode"),"."),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"38",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://MIDDLEMANAGER_IP:MIDDLEMANAGER_PORT/druid/worker/v1/task/index_kafka_wikiticker_f7011f8ffba384b_fpeclode/shutdown"\n'))),(0,n.kt)(o.Z,{value:"39",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"POST /druid/worker/v1/task/index_kafka_wikiticker_f7011f8ffba384b_fpeclode/shutdown HTTP/1.1\nHost: http://MIDDLEMANAGER_IP:MIDDLEMANAGER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-11"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "task":"index_kafka_wikiticker_f7011f8ffba384b_fpeclode"\n}\n'))),(0,n.kt)("h3",{id:"disable-middlemanager"},"Disable MiddleManager"),(0,n.kt)("p",null,"Disables a MiddleManager, causing it to stop accepting new tasks but complete all existing tasks. Returns a JSON object\nkeyed by the combined ",(0,n.kt)("inlineCode",{parentName:"p"},"druid.host")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"druid.port"),"."),(0,n.kt)("h4",{id:"url-13"},"URL"),(0,n.kt)("code",{class:"postAPI"},"POST")," ",(0,n.kt)("code",null,"/druid/worker/v1/disable"),(0,n.kt)("h4",{id:"responses-12"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"40",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully disabled MiddleManager")))),(0,n.kt)("h4",{id:"sample-request-12"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"41",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://MIDDLEMANAGER_IP:MIDDLEMANAGER_PORT/druid/worker/v1/disable"\n'))),(0,n.kt)(o.Z,{value:"42",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"POST /druid/worker/v1/disable HTTP/1.1\nHost: http://MIDDLEMANAGER_IP:MIDDLEMANAGER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-12"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "localhost:8091":"disabled"\n}\n'))),(0,n.kt)("h3",{id:"enable-middlemanager"},"Enable MiddleManager"),(0,n.kt)("p",null,"Enables a MiddleManager, allowing it to accept new tasks again if it was previously disabled. Returns a JSON object\nkeyed by the combined ",(0,n.kt)("inlineCode",{parentName:"p"},"druid.host")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"druid.port"),"."),(0,n.kt)("h4",{id:"url-14"},"URL"),(0,n.kt)("code",{class:"postAPI"},"POST")," ",(0,n.kt)("code",null,"/druid/worker/v1/enable"),(0,n.kt)("h4",{id:"responses-13"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"43",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully enabled MiddleManager")))),(0,n.kt)("h4",{id:"sample-request-13"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"44",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://MIDDLEMANAGER_IP:MIDDLEMANAGER_PORT/druid/worker/v1/enable"\n'))),(0,n.kt)(o.Z,{value:"45",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"POST /druid/worker/v1/enable HTTP/1.1\nHost: http://MIDDLEMANAGER_IP:MIDDLEMANAGER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-13"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "localhost:8091":"enabled"\n}\n'))),(0,n.kt)("h2",{id:"historical"},"Historical"),(0,n.kt)("h3",{id:"get-segment-load-status"},"Get segment load status"),(0,n.kt)("p",null,"Retrieves a JSON object of the form ",(0,n.kt)("inlineCode",{parentName:"p"},'{"cacheInitialized":value}'),", where value is either ",(0,n.kt)("inlineCode",{parentName:"p"},"true")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"false")," indicating if all segments in the local cache have been loaded."),(0,n.kt)("p",null,"Use this endpoint to know when a Broker service is ready to accept queries after a restart."),(0,n.kt)("h4",{id:"url-15"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/druid/historical/v1/loadstatus"),(0,n.kt)("h4",{id:"responses-14"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"46",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Successfully retrieved status")))),(0,n.kt)("h4",{id:"sample-request-14"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"47",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://HISTORICAL_IP:HISTORICAL_PORT/druid/historical/v1/loadstatus"\n'))),(0,n.kt)(o.Z,{value:"48",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /druid/historical/v1/loadstatus HTTP/1.1\nHost: http://HISTORICAL_IP:HISTORICAL_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-14"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "cacheInitialized": true\n}\n'))),(0,n.kt)("h3",{id:"get-segment-readiness"},"Get segment readiness"),(0,n.kt)("p",null,"Retrieves a status code to indicate if all segments in the local cache have been loaded. Similar to ",(0,n.kt)("inlineCode",{parentName:"p"},"/druid/historical/v1/loadstatus"),", but instead of returning JSON with a flag, it returns status codes."),(0,n.kt)("h4",{id:"url-16"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/druid/historical/v1/readiness"),(0,n.kt)("h4",{id:"responses-15"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"49",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Segments in local cache successfully loaded"))),(0,n.kt)(o.Z,{value:"50",label:"503 SERVICE UNAVAILABLE",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Segments in local cache have not been loaded")))),(0,n.kt)("h4",{id:"sample-request-15"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"51",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://HISTORICAL_IP:HISTORICAL_PORT/druid/historical/v1/readiness"\n'))),(0,n.kt)(o.Z,{value:"52",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /druid/historical/v1/readiness HTTP/1.1\nHost: http://HISTORICAL_IP:HISTORICAL_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-15"},"Sample response"),(0,n.kt)("p",null,"A successful response to this endpoint results in an empty response body."),(0,n.kt)("h2",{id:"load-status"},"Load Status"),(0,n.kt)("h3",{id:"get-broker-query-load-status"},"Get Broker query load status"),(0,n.kt)("p",null,"Retrieves a flag indicating if the Broker knows about all segments in the cluster. Use this endpoint to know when a Broker service is ready to accept queries after a restart."),(0,n.kt)("h4",{id:"url-17"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/druid/broker/v1/loadstatus"),(0,n.kt)("h4",{id:"responses-16"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"53",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Segments successfully loaded")))),(0,n.kt)("h4",{id:"sample-request-16"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"54",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://BROKER_IP:BROKER_PORT/druid/broker/v1/loadstatus"\n'))),(0,n.kt)(o.Z,{value:"55",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /druid/broker/v1/loadstatus HTTP/1.1\nHost: http://<BROKER_IP>:<BROKER_PORT>\n")))),(0,n.kt)("h4",{id:"sample-response-16"},"Sample response"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to show sample response"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "inventoryInitialized": true\n}\n'))),(0,n.kt)("h3",{id:"get-broker-query-readiness"},"Get Broker query readiness"),(0,n.kt)("p",null,"Retrieves a status code to indicate Broker readiness. Readiness signifies the Broker knows about all segments in the cluster and is ready to accept queries after a restart. Similar to ",(0,n.kt)("inlineCode",{parentName:"p"},"/druid/broker/v1/loadstatus"),", but instead of returning a JSON, it returns status codes."),(0,n.kt)("h4",{id:"url-18"},"URL"),(0,n.kt)("code",{class:"getAPI"},"GET")," ",(0,n.kt)("code",null,"/druid/broker/v1/readiness"),(0,n.kt)("h4",{id:"responses-17"},"Responses"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"56",label:"200 SUCCESS",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Segments successfully loaded"))),(0,n.kt)(o.Z,{value:"57",label:"503 SERVICE UNAVAILABLE",mdxType:"TabItem"},(0,n.kt)("br",null),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},"Segments have not been loaded")))),(0,n.kt)("h4",{id:"sample-request-17"},"Sample request"),(0,n.kt)(s.Z,{mdxType:"Tabs"},(0,n.kt)(o.Z,{value:"58",label:"cURL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},'curl "http://BROKER_IP:BROKER_PORT/druid/broker/v1/readiness"\n'))),(0,n.kt)(o.Z,{value:"59",label:"HTTP",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-http"},"GET /druid/broker/v1/readiness HTTP/1.1\nHost: http://BROKER_IP:BROKER_PORT\n")))),(0,n.kt)("h4",{id:"sample-response-17"},"Sample response"),(0,n.kt)("p",null,"A successful response to this endpoint results in an empty response body."))}h.isMDXComponent=!0}}]);