@@ -53,6 +53,12 @@ interface PrometheusQueryBoxProps {
5353 showPrometheusQuery : boolean ;
5454}
5555
56+ interface AlertDetails {
57+ alertName : string ;
58+ severity : string ;
59+ value : number ;
60+ }
61+
5662function usePrometheusWebSocket ( ) {
5763 const [ ws , setWs ] = useState < WebSocket | null > ( null ) ;
5864 const [ isConnected , setIsConnected ] = useState ( false ) ;
@@ -219,6 +225,7 @@ export function PrometheusQueryBox({
219225 showPrometheusQuery,
220226} : PrometheusQueryBoxProps ) {
221227 const [ queryResults , setQueryResults ] = useState < PrometheusQueryResult [ ] > ( [ ] ) ;
228+ const [ alerts , setAlerts ] = useState < AlertDetails [ ] > ( [ ] ) ;
222229
223230 const { sendPrometheusQuery } = usePrometheusWebSocket ( ) ;
224231
@@ -316,6 +323,7 @@ export function PrometheusQueryBox({
316323 if ( result . data . result . length === 0 ) return null ;
317324
318325 const alertInfo = result . data . result [ 0 ] . metric ;
326+ console . log ( "alertName: " , alertInfo . name ) ;
319327 const alertName = alertInfo . name ;
320328 return alertName ;
321329 } , [ queryResults ] ) ;
@@ -330,15 +338,55 @@ export function PrometheusQueryBox({
330338
331339 const interval = setInterval ( ( ) => {
332340 getAllQueryResults ( ) ;
333- let alertDetails = getAlertDetails ( ) ;
334- console . log ( "🚨 Alert details:" , alertDetails ) ;
335341 } , 15000 ) ;
336342
337343 return ( ) => {
338344 clearInterval ( interval ) ;
339345 } ;
340346 } , [ getAllQueryResults ] ) ;
341347
348+ useEffect ( ( ) => {
349+ let alertDetails = getAlertDetails ( ) ;
350+ console . log ( "🚨 Alert details:" , alertDetails ) ;
351+ getAllAlertDetails ( alertDetails ) ;
352+ } , [ queryResults ] ) ;
353+
354+ async function getAllAlertDetails ( alertName : string ) {
355+ const detailsQuery = {
356+ label : "Alerts for this session" ,
357+ path : `http://prometheus-server.monitoring.svc.cluster.local/api/v1/alerts` ,
358+ description : "Alerts for this session" ,
359+ icon : "memory" ,
360+ unit : "" ,
361+ alertThreshold : 0 ,
362+ } ;
363+
364+ const result = await executeQuery ( detailsQuery ) ;
365+ console . log ( "📊 Alert details query result:" , result ?. data . alerts [ 0 ] . value ) ;
366+ if ( result ?. data ?. alerts ?. length && result . data . alerts . length > 0 ) {
367+ const alert = result . data . alerts . find ( ( a ) => a . labels . name === alertName ) ;
368+ if ( alert ) {
369+ const severity = alert . labels . severity || "unknown" ;
370+ const value = parseFloat ( alert . value ) || 0 ;
371+ console . log (
372+ `🚨 Alert found - Name: ${ alert . labels . alertname } , Severity: ${ severity } , Value: ${ value } `
373+ ) ;
374+ const newAlert : AlertDetails = {
375+ alertName : alert . labels . alertname ,
376+ severity,
377+ value,
378+ } ;
379+ setAlerts ( [ newAlert ] ) ;
380+ } else {
381+ console . log ( `ℹ️ No alert found with name: ${ alertName } ` ) ;
382+ }
383+ }
384+ }
385+
386+ useEffect ( ( ) => {
387+ console . log ( "🚨 Alerts:" , alerts ) ;
388+ } , [ alerts ] ) ;
389+
342390 if ( queryResults . length === 0 || showPrometheusQuery === false ) {
343391 return null ;
344392 }
@@ -358,23 +406,16 @@ export function PrometheusQueryBox({
358406 />
359407 </ div >
360408
361- { queryResults . map ( ( qr , idx ) => (
409+ { alerts . map ( ( alert , idx ) => (
362410 < div key = { idx } className = "mb-2" >
363- < div className = "fw-bold" > { qr . predefinedQuery ?. label } </ div >
411+ < div className = "fw-bold" > { alert . alertName } </ div >
364412 < div className = "mb-1" >
365413 < div
366414 className = {
367- qr . data ?. result ?. [ 0 ] ?. value ?. [ 1 ] &&
368- qr . predefinedQuery &&
369- parseFloat ( qr . data . result [ 0 ] . value [ 1 ] ) >
370- qr . predefinedQuery . alertThreshold
371- ? "text-danger"
372- : "text-warning"
415+ "text-warning"
373416 }
374417 >
375- { qr . data ?. result ?. [ 0 ] ?. value
376- ? `${ qr . data . result [ 0 ] . value [ 1 ] } ${ qr . predefinedQuery ?. unit } `
377- : "No value" }
418+ Severity: { alert . severity } , Value: { alert . value }
378419 </ div >
379420 </ div >
380421 </ div >
0 commit comments