/*! Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one or more contributor license agreements. * Licensed under the Elastic License 2.0; you may not use this file except in compliance with the Elastic License 2.0. */ (window.observability_bundle_jsonpfunction=window.observability_bundle_jsonpfunction||[]).push([[8],{107:function(e,t,a){"use strict";a.d(t,"b",(function(){return i})),a.d(t,"c",(function(){return r})),a.d(t,"a",(function(){return o}));var n=a(78);function i(e){const t=e.substring(0,e.length-1),a=e.substring(e.length-1);return{value:parseInt(t,10),unit:a}}function r(e){switch(e.unit){case"m":return e.value;case"h":return 60*e.value;case"d":return 24*e.value*60;case"w":return 7*e.value*24*60;case"M":return 30*e.value*24*60;default:Object(n.assertNever)(e.unit)}}function o(e){switch(e){default:case"w":return"isoWeek";case"M":return"months"}}},115:function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(74),i=a(96),r=a(41),o=a(99);const s=6e4;function l({sloId:e,instanceId:t,shouldRefetch:a}){const{http:l}=Object(r.a)().services,{isInitialLoading:u,isLoading:c,isError:d,isSuccess:p,isRefetching:g,data:m,refetch:b}=Object(n.useQuery)({queryKey:o.a.detail(e),queryFn:async({signal:a})=>{try{return await l.get(`/api/observability/slos/${e}`,{query:{...!!t&&t!==i.a&&{instanceId:t}},signal:a})}catch(e){}},keepPreviousData:!0,enabled:Boolean(e),refetchInterval:a?s:void 0,refetchOnWindowFocus:!1});return{slo:m,isLoading:c,isInitialLoading:u,isRefetching:g,isSuccess:p,isError:d,refetch:b}}},166:function(e,t,a){"use strict";a.r(t),a.d(t,"default",(function(){return B}));var n=a(2),i=a.n(n),r=a(96),o=a(11),s=a(1),l=a(115),u=a(8),c=a(74),d=a(41),p=a(99);function g({initialSlo:e,onSelected:t,errors:a}){const[r,l]=Object(n.useState)([]),[g,b]=Object(n.useState)(),[h,y]=Object(n.useState)(""),{isLoading:v,data:f}=function({name:e=""}){const{http:t}=Object(d.a)().services,a=e.endsWith("*")?e:`${e}*`,{isLoading:n,isError:i,isSuccess:r,data:o,refetch:s}=Object(c.useQuery)({queryKey:p.a.definitions(a),queryFn:async({signal:e})=>{try{return await t.get("/internal/observability/slos/_definitions",{query:{search:a},signal:e})}catch(e){throw new Error(`Something went wrong. Error: ${e}`)}},retry:!1,refetchOnWindowFocus:!1});return{isLoading:n,isError:i,isSuccess:r,data:o,refetch:s}}({name:h}),w=void 0!==a&&a.length>0;Object(n.useEffect)((()=>{b(e?[{value:e.id,label:e.name}]:[])}),[e]),Object(n.useEffect)((()=>{const e=v||void 0===f?[]:f.map((e=>({value:e.id,label:e.name})));l(e)}),[v,f]);const E=Object(n.useMemo)((()=>Object(u.debounce)((e=>y(e)),300)),[]);return i.a.createElement(o.EuiFormRow,{label:m,fullWidth:!0,isInvalid:w,error:w?a[0]:void 0},i.a.createElement(o.EuiComboBox,{"aria-label":s.i18n.translate("xpack.observability.slo.rules.sloSelector.ariaLabel",{defaultMessage:"SLO"}),placeholder:s.i18n.translate("xpack.observability.slo.rules.sloSelector.placeholder",{defaultMessage:"Select a SLO"}),"data-test-subj":"sloSelector",singleSelection:{asPlainText:!0},options:r,selectedOptions:g,async:!0,isLoading:v,onChange:e=>{b(e);const a=1===e.length?null==f?void 0:f.find((t=>t.id===e[0].value)):void 0;t(a)},fullWidth:!0,onSearchChange:E,isInvalid:w}))}const m=s.i18n.translate("xpack.observability.slo.rules.sloSelector.rowLabel",{defaultMessage:"SLO"});var b=a(62),h=a.n(b),y=a(23),v=a.n(y),f=a(82),w=a(42);function E({onChange:e,initialBurnRate:t=1,maxBurnRate:a,errors:r}){const[l,u]=Object(n.useState)(t),c=void 0!==r&&r.length>0;return i.a.createElement(o.EuiFormRow,{label:i.a.createElement(i.a.Fragment,null,s.i18n.translate("xpack.observability.slo.rules.burnRate.rowLabel",{defaultMessage:"Burn rate threshold"})," ",i.a.createElement(o.EuiIconTip,{position:"top",content:s.i18n.translate("xpack.observability.slo.rules.burnRate.tooltip",{defaultMessage:"The burn rate is how fast the service consumes the error budget over the lookback period."})})),fullWidth:!0,isInvalid:c},i.a.createElement(o.EuiFieldNumber,{fullWidth:!0,step:.1,min:1,max:a,value:String(l),onChange:t=>(t=>{const a=Number(t.target.value);u(a),e(a)})(t),"data-test-subj":"burnRate"}))}var W=a(107);function x({shortWindowDuration:e,initialDuration:t,onChange:a,errors:r}){var l;const[u,c]=Object(n.useState)(null!==(l=null==t?void 0:t.value)&&void 0!==l?l:1),d=void 0!==r&&r.length>0;return i.a.createElement(o.EuiFormRow,{label:S(e),fullWidth:!0,isInvalid:d},i.a.createElement(o.EuiFlexGroup,{direction:"row"},i.a.createElement(o.EuiFlexItem,null,i.a.createElement(o.EuiFieldNumber,{isInvalid:d,min:1,max:72,step:1,value:String(u),onChange:e=>{const t=Number(e.target.value);c(t),a({value:t,unit:"h"})},"aria-label":s.i18n.translate("xpack.observability.slo.rules.longWindow.valueLabel",{defaultMessage:"Lookback period in hours"}),"data-test-subj":"durationValueInput"}))))}const S=e=>i.a.createElement(i.a.Fragment,null,s.i18n.translate("xpack.observability.slo.rules.longWindow.rowLabel",{defaultMessage:"Lookback (hours)"})," ",i.a.createElement(o.EuiIconTip,{position:"top",content:j(e)})),j=e=>s.i18n.translate("xpack.observability.slo.rules.longWindowDuration.tooltip",{defaultMessage:"Lookback period over which the burn rate is computed. A shorter lookback period of {shortWindowDuration} minutes (1/12 the lookback period) will be used for faster recovery",values:{shortWindowDuration:Object(W.c)(e)}});var T=a(24);const O=[{value:T.b.id,text:T.b.name},{value:T.d.id,text:T.d.name},{value:T.f.id,text:T.f.name},{value:T.e.id,text:T.e.name}],R=(e,t)=>t?Math.floor(Object(W.c)(Object(W.b)(t.timeWindow.duration))/Object(W.c)(e)):1/0;function M({slo:e,id:t,burnRateThreshold:a,maxBurnRateThreshold:n,longWindow:r,shortWindow:l,actionGroup:u,onChange:c,onDelete:d,errors:p,disableDelete:g}){const m=()=>e&&(null==r?void 0:r.value)>0&&a>=1?v()(r.value/(a*Object(W.c)(r)/Object(W.c)(Object(W.b)(e.timeWindow.duration)))).format("0a"):"N/A",b=[...p.longWindow,...p.burnRateThreshold];return i.a.createElement(i.a.Fragment,null,i.a.createElement(o.EuiFlexGroup,{direction:"row",alignItems:"center"},i.a.createElement(o.EuiFlexItem,null,i.a.createElement(x,{initialDuration:r,shortWindowDuration:l,onChange:e=>{const i=Object(W.c)(e),r=Math.floor(i/12);c({id:t,burnRateThreshold:a,maxBurnRateThreshold:n,longWindow:e,shortWindow:{value:r,unit:"m"},actionGroup:u})},errors:p.longWindow})),i.a.createElement(o.EuiFlexItem,null,i.a.createElement(E,{initialBurnRate:a,maxBurnRate:n,onChange:a=>{c({id:t,burnRateThreshold:a,maxBurnRateThreshold:R(r,e),longWindow:r,shortWindow:l,actionGroup:u})},errors:p.burnRateThreshold,helpText:k(m())})),i.a.createElement(o.EuiFlexItem,null,i.a.createElement(o.EuiFormRow,{label:s.i18n.translate("xpack.observability.slo.rules.actionGroupSelectorLabel",{defaultMessage:"Action Group"})},i.a.createElement(o.EuiSelect,{"data-test-subj":"sloBurnRateActionGroupSelctor",options:O,value:u,onChange:e=>{c({id:t,burnRateThreshold:a,maxBurnRateThreshold:n,longWindow:r,shortWindow:l,actionGroup:e.currentTarget.value})},"aria-label":s.i18n.translate("xpack.observability.slo.rules.actionGroupSelectorLabel",{defaultMessage:"Action Group"})}))),i.a.createElement(o.EuiFlexItem,{grow:0},i.a.createElement(o.EuiButtonIcon,{"data-test-subj":"sloBurnRateRuleDeleteWindowButton",iconType:"trash",color:"danger",style:{marginBottom:"-1em"},onClick:()=>d(t),disabled:g,title:s.i18n.translate("xpack.observability.slo.rules.deleteWindowLabel",{defaultMessage:"Delete window"}),"aria-label":s.i18n.translate("xpack.observability.slo.rules.deleteWindowLabel",{defaultMessage:"Delete window"})}))),i.a.createElement(o.EuiSpacer,{size:"xs"}),b.length>0&&i.a.createElement(o.EuiText,{color:"danger",size:"xs"},b.map((e=>i.a.createElement("p",{key:e},e)))),i.a.createElement(o.EuiText,{color:"subdued",size:"xs"},i.a.createElement("p",null,k(m()))),i.a.createElement(o.EuiSpacer,{size:"s"}))}const k=e=>s.i18n.translate("xpack.observability.slo.rules.errorBudgetExhaustion.text",{defaultMessage:"{formatedHours} hours until error budget exhaustion.",values:{formatedHours:e}}),I=(e,t={})=>{const a=t.longWindow||{value:1,unit:"h"};return{id:Object(f.v4)(),burnRateThreshold:1,maxBurnRateThreshold:R(a,e),longWindow:a,shortWindow:{value:5,unit:"m"},actionGroup:T.b.id,...t}};function D({slo:e,windows:t,errors:a,onChange:n,totalNumberOfWindows:r}){const l=e=>{n(t.map((t=>e.id===t.id?e:t)))},u=e=>{n(t.length>1?t.filter((t=>t.id!==e)):t)};return i.a.createElement(i.a.Fragment,null,t.map(((n,r)=>{const o=a[r]||{longWindow:new Array,burnRateThreshold:new Array};return i.a.createElement(M,h()({},n,{key:n.id,slo:e,errors:o,onChange:l,onDelete:u,disableDelete:1===t.length}))})),i.a.createElement(o.EuiButtonEmpty,{"data-test-subj":"sloBurnRateRuleAddWindowButton",color:"primary",size:"xs",iconType:"plusInCircleFilled",onClick:()=>{n([...t,I()])},isDisabled:t.length===(r||4),"aria-label":s.i18n.translate("xpack.observability.slo.rules.addWindowAriaLabel",{defaultMessage:"Add window"})},i.a.createElement(w.FormattedMessage,{id:"xpack.observability.slo.rules.addWIndowLabel",defaultMessage:"Add window"})))}function B(e){const{setRuleParams:t,ruleParams:a,errors:u}=e,{isLoading:c,slo:d}=Object(l.a)({sloId:null==a?void 0:a.sloId}),[p,m]=Object(n.useState)(void 0);Object(n.useEffect)((()=>{m(c||void 0===d?void 0:d)}),[c,d,t]);const[b,h]=Object(n.useState)((null==a?void 0:a.windows)||[I(p,{burnRateThreshold:14.4,longWindow:{value:1,unit:"h"},shortWindow:{value:5,unit:"m"},actionGroup:T.b.id}),I(p,{burnRateThreshold:6,longWindow:{value:6,unit:"h"},shortWindow:{value:30,unit:"m"},actionGroup:T.d.id}),I(p,{burnRateThreshold:3,longWindow:{value:24,unit:"h"},shortWindow:{value:120,unit:"m"},actionGroup:T.f.id}),I(p,{burnRateThreshold:1,longWindow:{value:72,unit:"h"},shortWindow:{value:360,unit:"m"},actionGroup:T.e.id})]);return Object(n.useEffect)((()=>{h((e=>e.map((e=>({...e,maxBurnRateThreshold:R(e.longWindow,p)})))))}),[p]),Object(n.useEffect)((()=>{t("windows",b)}),[b,t]),i.a.createElement(i.a.Fragment,null,i.a.createElement(o.EuiTitle,{size:"xs"},i.a.createElement("h5",null,"Choose a SLO to monitor")),i.a.createElement(o.EuiSpacer,{size:"s"}),i.a.createElement(g,{initialSlo:p,onSelected:e=>{m(e),t("sloId",null==e?void 0:e.id)},errors:u.sloId}),(null==p?void 0:p.groupBy)&&p.groupBy!==r.a&&i.a.createElement(i.a.Fragment,null,i.a.createElement(o.EuiSpacer,{size:"l"}),i.a.createElement(o.EuiCallOut,{color:"warning",size:"s",title:s.i18n.translate("xpack.observability.slo.rules.groupByMessage",{defaultMessage:'The SLO you selected has been created with a partition on "{groupByField}". This rule will monitor and generate an alert for every instance found in the partition field.',values:{groupByField:p.groupBy}})})),i.a.createElement(o.EuiSpacer,{size:"l"}),i.a.createElement(o.EuiTitle,{size:"xs"},i.a.createElement("h5",null,"Define multiple burn rate windows")),i.a.createElement(o.EuiSpacer,{size:"s"}),i.a.createElement(D,{slo:p,windows:b,onChange:h,errors:u.windows}),i.a.createElement(o.EuiSpacer,{size:"m"}))}},96:function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"c",(function(){return G})),a.d(t,"b",(function(){return P}));var n=a(100),i=a(0);const r="*",o=i.union([i.literal(r),i.string]),s=new i.Type("DateType",(e=>e instanceof Date),((e,t)=>n.either.chain(i.string.validate(e,t),(a=>{const n=new Date(a);return isNaN(n.getTime())?i.failure(e,t):i.success(n)}))),(e=>e.toISOString())),l=i.type({initial:i.number,consumed:i.number,remaining:i.number,isEstimated:i.boolean}),u=i.union([i.literal("NO_DATA"),i.literal("HEALTHY"),i.literal("DEGRADING"),i.literal("VIOLATED")]),c=i.type({status:u,sliValue:i.number,errorBudget:l}),d=i.intersection([i.type({date:s}),c]),p=i.type({date:s,sliValue:i.number}),g=i.type({from:s,to:s});var m,b=a(78),h=a(9);!function(e){e.Minute="m",e.Hour="h",e.Day="d",e.Week="w",e.Month="M"}(m||(m={}));class duration_Duration{constructor(e,t){if(this.value=e,this.unit=t,isNaN(e)||e<=0)throw new Error("invalid duration value");if(!Object.values(m).includes(t))throw new Error("invalid duration unit")}add(e){const t=h.duration(this.value,y(this.unit)),a=h.duration(e.value,y(e.unit));return new duration_Duration(t.add(a).asMinutes(),m.Minute)}isShorterThan(e){const t=h.duration(e.value,y(e.unit));return h.duration(this.value,y(this.unit)).asSeconds(){switch(e){case m.Minute:return"minutes";case m.Hour:return"hours";case m.Day:return"days";case m.Week:return"weeks";case m.Month:return"months";default:Object(b.assertNever)(e)}},v=new i.Type("Duration",(e=>e instanceof duration_Duration),((e,t)=>n.either.chain(i.string.validate(e,t),(a=>{try{const e=new duration_Duration(parseInt(a.slice(0,-1),10),a.slice(-1));return i.success(e)}catch(a){return i.failure(e,t)}}))),(e=>e.format())),f=i.literal("sli.apm.transactionDuration"),w=i.type({type:f,params:i.intersection([i.type({environment:o,service:o,transactionType:o,transactionName:o,threshold:i.number,index:i.string}),i.partial({filter:i.string})])}),E=i.literal("sli.apm.transactionErrorRate"),W=i.type({type:E,params:i.intersection([i.type({environment:o,service:o,transactionType:o,transactionName:o,index:i.string}),i.partial({filter:i.string})])}),x=i.literal("sli.kql.custom"),S=i.type({type:x,params:i.intersection([i.type({index:i.string,good:i.string,total:i.string,timestampField:i.string}),i.partial({filter:i.string})])}),j=i.keyof({sum:!0}),T=i.type({metrics:i.array(i.intersection([i.type({name:i.string,aggregation:j,field:i.string}),i.partial({filter:i.string})])),equation:i.string}),O=i.literal("sli.metric.custom"),R=i.type({type:O,params:i.intersection([i.type({index:i.string,good:T,total:T,timestampField:i.string}),i.partial({filter:i.string})])}),M=i.literal("range"),k=i.intersection([i.type({field:i.string,aggregation:M,from:i.number,to:i.number}),i.partial({filter:i.string})]),I=i.literal("value_count"),D=i.intersection([i.type({field:i.string,aggregation:I}),i.partial({filter:i.string})]),B=i.union([D,k]),A=i.literal("sli.histogram.custom"),L=i.type({type:A,params:i.intersection([i.type({index:i.string,timestampField:i.string,good:B,total:B}),i.partial({filter:i.string})])}),F=(i.type({dateRange:g,good:i.number,total:i.number}),i.union([f,E,x,O,A])),C=(new i.Type("indicatorTypesArray",(e=>Array.isArray(e)&&e.every((e=>"string"==typeof e))),((e,t)=>{if("string"==typeof e){const t=e.split(",");if(t.every((e=>"string"==typeof e&&F.is(e))))return i.success(t)}return i.failure(e,t)}),(e=>e.join(","))),i.union([w,W,S,R,L])),G=i.literal("rolling"),q=i.type({duration:v,type:G}),N=i.literal("calendarAligned"),_=i.type({duration:v,type:N}),z=(i.union([G,N]),i.union([q,_])),P=i.literal("occurrences"),H=i.literal("timeslices"),$=i.union([P,H]),V=i.type({target:i.number}),Q=i.intersection([V,i.partial({timesliceTarget:i.number,timesliceWindow:v})]),K=i.type({syncDelay:v,frequency:v}),Y=i.partial({...K.props}),J=i.array(i.string),U=i.string,X=i.type({id:U,name:i.string,description:i.string,indicator:C,timeWindow:z,budgetingMethod:$,objective:Q,settings:K,revision:i.number,enabled:i.boolean,tags:J,createdAt:s,updatedAt:s,groupBy:o}),Z=(i.intersection([X,i.type({summary:c})]),i.string),ee=i.literal("weightedAverage"),te=i.type({id:U,revision:i.number,weight:i.number}),ae=(i.type({id:Z,name:i.string,timeWindow:z,budgetingMethod:$,compositeMethod:ee,objective:Q,sources:i.array(te),tags:J,createdAt:s,updatedAt:s}),i.type({body:i.intersection([i.type({name:i.string,timeWindow:z,budgetingMethod:$,objective:Q,compositeMethod:ee,sources:i.array(te)}),i.partial({id:Z,tags:J})])}),i.type({id:Z}),i.type({id:Z,name:i.string,timeWindow:z,budgetingMethod:$,objective:Q,compositeMethod:ee,sources:i.array(te),tags:J,createdAt:s,updatedAt:s})),ne=i.intersection([ae,i.type({summary:c})]),ie=(i.type({path:i.type({id:Z}),body:i.partial({name:i.string,compositeMethod:ee,sources:i.array(te),timeWindow:z,budgetingMethod:$,objective:Q,tags:J})}),i.type({path:i.type({id:Z})}),i.type({path:i.type({id:Z})}),i.union([i.literal("asc"),i.literal("desc")])),re=i.literal("creationTime"),oe=(i.partial({query:i.partial({name:i.string,page:i.string,perPage:i.string,sortBy:re,sortDirection:ie})}),i.type({page:i.number,perPage:i.number,total:i.number,results:i.array(ne)}),i.type({body:i.intersection([i.type({name:i.string,description:i.string,indicator:C,timeWindow:z,budgetingMethod:$,objective:Q}),i.partial({id:U,settings:Y,tags:J,groupBy:o})])}),i.type({id:U}),i.type({body:i.type({indicator:C})}),i.array(p),i.type({path:i.type({id:U})}),i.union([i.literal("asc"),i.literal("desc")])),se=i.union([i.literal("error_budget_consumed"),i.literal("error_budget_remaining"),i.literal("sli_value"),i.literal("status")]),le=(i.partial({query:i.partial({kqlQuery:i.string,page:i.string,perPage:i.string,sortBy:se,sortDirection:oe})}),i.intersection([i.type({id:U,name:i.string,description:i.string,indicator:C,timeWindow:z,budgetingMethod:$,objective:Q,revision:i.number,settings:K,enabled:i.boolean,tags:J,groupBy:o,createdAt:s,updatedAt:s}),i.partial({instanceId:o})])),ue=i.intersection([le,i.type({summary:c})]),ce=i.partial({query:i.partial({instanceId:o})});i.intersection([i.type({path:i.type({id:U})}),ce]),i.type({path:i.type({id:U}),body:i.partial({name:i.string,description:i.string,indicator:C,timeWindow:z,budgetingMethod:$,objective:Q,settings:Y,tags:J,groupBy:o})}),i.type({path:i.type({id:U})}),i.type({page:i.number,perPage:i.number,total:i.number,results:i.array(ue)}),i.type({body:i.type({list:i.array(i.type({sloId:U,instanceId:o}))})}),i.array(i.type({sloId:U,instanceId:o,data:i.array(d)})),i.type({query:i.type({search:i.string})}),i.array(le),i.type({burnRates:i.array(i.type({name:i.string,burnRate:i.number,sli:i.number}))}),i.type({path:i.type({id:i.string}),body:i.type({instanceId:o,windows:i.array(i.type({name:i.string,duration:v}))})}),i.type({path:i.type({id:i.string})}),i.type({groupBy:i.string,instances:i.array(i.string)})},99:function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={all:["slo"],lists:()=>[...n.all,"list"],list:e=>[...n.lists(),e],details:()=>[...n.all,"details"],detail:e=>[...n.details(),e],rules:()=>[...n.all,"rules"],rule:e=>[...n.rules(),e],activeAlerts:()=>[...n.all,"activeAlerts"],activeAlert:e=>[...n.activeAlerts(),...e.flat()],historicalSummaries:()=>[...n.all,"historicalSummary"],historicalSummary:e=>[...n.historicalSummaries(),e],definitions:e=>[...n.all,"definitions",e],globalDiagnosis:()=>[...n.all,"globalDiagnosis"],burnRates:(e,t)=>[...n.all,"burnRates",e,t],preview:e=>[...n.all,"preview",e]}}}]);