@@ -10,15 +10,17 @@ const AWS_LAMBDA_TAG_KEY: &str = "function_arn";
1010const AWS_STEP_FUNCTIONS_TAG_KEY : & str = "statemachinearn" ;
1111
1212// Metric tag values
13- const AZURE_APP_SERVICES_TAG_VALUE : & str = "appservice" ;
1413const GOOGLE_CLOUD_RUN_TAG_VALUE : & str = "cloudrun" ;
14+ const AZURE_APP_SERVICES_TAG_VALUE : & str = "appservice" ;
1515const AZURE_CONTAINER_APP_TAG_VALUE : & str = "containerapp" ;
16+ const AZURE_FUNCTIONS_TAG_VALUE : & str = "azurefunction" ;
1617
1718// Metric prefixes
1819const DATADOG_PREFIX : & str = "datadog" ;
19- const AZURE_APP_SERVICES_PREFIX : & str = "azure.app_services" ;
2020const GOOGLE_CLOUD_RUN_PREFIX : & str = "gcp.run" ;
21+ const AZURE_APP_SERVICES_PREFIX : & str = "azure.app_services" ;
2122const AZURE_CONTAINER_APP_PREFIX : & str = "azure.app_containerapps" ;
23+ const AZURE_FUNCTIONS_PREFIX : & str = "azure.functions" ;
2224const AWS_LAMBDA_PREFIX : & str = "aws.lambda" ;
2325const AWS_STEP_FUNCTIONS_PREFIX : & str = "aws.states" ;
2426
@@ -46,6 +48,7 @@ pub enum OriginCategory {
4648 ContainerAppMetrics = 37 ,
4749 LambdaMetrics = 38 ,
4850 StepFunctionsMetrics = 41 ,
51+ AzureFunctionsMetrics = 71 ,
4952}
5053
5154impl From < OriginCategory > for u32 {
@@ -98,6 +101,14 @@ pub fn find_metric_origin(metric: &Metric, tags: SortedTags) -> Option<Origin> {
98101 ..Default :: default ( )
99102 } ) ;
100103 }
104+ if is_azure_functions ( & tags, & prefix) {
105+ return Some ( Origin {
106+ origin_product : OriginProduct :: Serverless . into ( ) ,
107+ origin_category : OriginCategory :: AzureFunctionsMetrics . into ( ) ,
108+ origin_service : OriginService :: Other . into ( ) ,
109+ ..Default :: default ( )
110+ } ) ;
111+ }
101112 if is_aws_lambda ( & tags, & prefix) {
102113 return Some ( Origin {
103114 origin_product : OriginProduct :: Serverless . into ( ) ,
@@ -135,21 +146,26 @@ fn is_datadog_metric(prefix: &str) -> bool {
135146 prefix == DATADOG_PREFIX
136147}
137148
138- fn is_azure_app_services ( tags : & SortedTags , prefix : & str ) -> bool {
139- get_first_tag_value ( tags, DD_ORIGIN_TAG_KEY ) == Some ( AZURE_APP_SERVICES_TAG_VALUE )
140- && prefix != AZURE_APP_SERVICES_PREFIX
141- }
142-
143149fn is_google_cloud_run ( tags : & SortedTags , prefix : & str ) -> bool {
144150 get_first_tag_value ( tags, DD_ORIGIN_TAG_KEY ) == Some ( GOOGLE_CLOUD_RUN_TAG_VALUE )
145151 && prefix != GOOGLE_CLOUD_RUN_PREFIX
146152}
147153
154+ fn is_azure_app_services ( tags : & SortedTags , prefix : & str ) -> bool {
155+ get_first_tag_value ( tags, DD_ORIGIN_TAG_KEY ) == Some ( AZURE_APP_SERVICES_TAG_VALUE )
156+ && prefix != AZURE_APP_SERVICES_PREFIX
157+ }
158+
148159fn is_azure_container_app ( tags : & SortedTags , prefix : & str ) -> bool {
149160 get_first_tag_value ( tags, DD_ORIGIN_TAG_KEY ) == Some ( AZURE_CONTAINER_APP_TAG_VALUE )
150161 && prefix != AZURE_CONTAINER_APP_PREFIX
151162}
152163
164+ fn is_azure_functions ( tags : & SortedTags , prefix : & str ) -> bool {
165+ get_first_tag_value ( tags, DD_ORIGIN_TAG_KEY ) == Some ( AZURE_FUNCTIONS_TAG_VALUE )
166+ && prefix != AZURE_FUNCTIONS_PREFIX
167+ }
168+
153169fn is_aws_lambda ( tags : & SortedTags , prefix : & str ) -> bool {
154170 get_first_tag_value ( tags, AWS_LAMBDA_TAG_KEY ) . is_some ( ) && prefix != AWS_LAMBDA_PREFIX
155171}
0 commit comments