@@ -37,9 +37,7 @@ use serde_json::error::Error as SerdeError;
3737use serde_json:: { to_vec, Value as JsonValue } ;
3838use tracing:: { error, info, warn} ;
3939use url:: Url ;
40- use utils:: {
41- check_liveness, to_url_string, ClusterInfo , IngestionStats , QueriedStats , StorageStats ,
42- } ;
40+ use utils:: { check_liveness, to_url_string, IngestionStats , QueriedStats , StorageStats } ;
4341
4442use crate :: handlers:: http:: ingest:: ingest_internal_stream;
4543use crate :: metrics:: prom_utils:: Metrics ;
@@ -542,24 +540,6 @@ pub async fn send_retention_cleanup_request(
542540}
543541
544542pub async fn get_cluster_info ( ) -> Result < impl Responder , StreamError > {
545- let self_info = ClusterInfo :: new (
546- format ! (
547- "{}://{}" ,
548- PARSEABLE . options. get_scheme( ) ,
549- PARSEABLE . options. address
550- )
551- . as_str ( ) ,
552- true ,
553- PARSEABLE
554- . options
555- . staging_dir ( )
556- . to_string_lossy ( )
557- . to_string ( ) ,
558- PARSEABLE . storage . get_endpoint ( ) ,
559- None ,
560- Some ( String :: from ( "200 OK" ) ) ,
561- & PARSEABLE . options . mode . to_node_type ( ) ,
562- ) ;
563543 // Get querier, ingestor and indexer metadata concurrently
564544 let ( querier_result, ingestor_result, indexer_result) = future:: join3 (
565545 get_node_info ( "querier" ) ,
@@ -592,21 +572,27 @@ pub async fn get_cluster_info() -> Result<impl Responder, StreamError> {
592572 } )
593573 . map_err ( |err| StreamError :: Anyhow ( err. into ( ) ) ) ?;
594574
575+ let self_metadata = if let Some ( metadata) = PARSEABLE . get_metadata ( ) {
576+ vec ! [ metadata]
577+ } else {
578+ vec ! [ ]
579+ } ;
580+
595581 // Fetch info for both node types concurrently
596- let ( querier_infos, ingestor_infos, indexer_infos) = future:: join3 (
582+ let ( querier_infos, ingestor_infos, indexer_infos, self_info ) = future:: join4 (
597583 fetch_nodes_info ( querier_metadata) ,
598584 fetch_nodes_info ( ingestor_metadata) ,
599585 fetch_nodes_info ( indexer_metadata) ,
586+ fetch_nodes_info ( self_metadata) ,
600587 )
601588 . await ;
602589
603590 // Combine results from both node types
604591 let mut infos = Vec :: new ( ) ;
592+ infos. extend ( self_info?) ;
605593 infos. extend ( querier_infos?) ;
606594 infos. extend ( ingestor_infos?) ;
607595 infos. extend ( indexer_infos?) ;
608- infos. push ( self_info) ;
609-
610596 Ok ( actix_web:: HttpResponse :: Ok ( ) . json ( infos) )
611597}
612598
@@ -885,6 +871,12 @@ async fn fetch_cluster_metrics() -> Result<Vec<Metrics>, PostError> {
885871 )
886872 . await ;
887873
874+ let self_metadata = if let Some ( metadata) = PARSEABLE . get_metadata ( ) {
875+ vec ! [ metadata]
876+ } else {
877+ vec ! [ ]
878+ } ;
879+
888880 // Handle querier metadata result
889881 let querier_metadata: Vec < NodeMetadata > = querier_result. map_err ( |err| {
890882 error ! ( "Fatal: failed to get querier info: {:?}" , err) ;
@@ -901,7 +893,8 @@ async fn fetch_cluster_metrics() -> Result<Vec<Metrics>, PostError> {
901893 PostError :: Invalid ( err)
902894 } ) ?;
903895 // Fetch metrics from ingestors and indexers concurrently
904- let ( querier_metrics, ingestor_metrics, indexer_metrics) = future:: join3 (
896+ let ( self_metrics, querier_metrics, ingestor_metrics, indexer_metrics) = future:: join4 (
897+ fetch_nodes_metrics ( self_metadata) ,
905898 fetch_nodes_metrics ( querier_metadata) ,
906899 fetch_nodes_metrics ( ingestor_metadata) ,
907900 fetch_nodes_metrics ( indexer_metadata) ,
@@ -911,6 +904,12 @@ async fn fetch_cluster_metrics() -> Result<Vec<Metrics>, PostError> {
911904 // Combine all metrics
912905 let mut all_metrics = Vec :: new ( ) ;
913906
907+ // Add self metrics
908+ match self_metrics {
909+ Ok ( metrics) => all_metrics. extend ( metrics) ,
910+ Err ( err) => return Err ( err) ,
911+ }
912+
914913 // Add querier metrics
915914 match querier_metrics {
916915 Ok ( metrics) => all_metrics. extend ( metrics) ,
0 commit comments