@@ -10,15 +10,17 @@ const AWS_LAMBDA_TAG_KEY: &str = "function_arn";
10
10
const AWS_STEP_FUNCTIONS_TAG_KEY : & str = "statemachinearn" ;
11
11
12
12
// Metric tag values
13
- const AZURE_APP_SERVICES_TAG_VALUE : & str = "appservice" ;
14
13
const GOOGLE_CLOUD_RUN_TAG_VALUE : & str = "cloudrun" ;
14
+ const AZURE_APP_SERVICES_TAG_VALUE : & str = "appservice" ;
15
15
const AZURE_CONTAINER_APP_TAG_VALUE : & str = "containerapp" ;
16
+ const AZURE_FUNCTIONS_TAG_VALUE : & str = "azurefunction" ;
16
17
17
18
// Metric prefixes
18
19
const DATADOG_PREFIX : & str = "datadog" ;
19
- const AZURE_APP_SERVICES_PREFIX : & str = "azure.app_services" ;
20
20
const GOOGLE_CLOUD_RUN_PREFIX : & str = "gcp.run" ;
21
+ const AZURE_APP_SERVICES_PREFIX : & str = "azure.app_services" ;
21
22
const AZURE_CONTAINER_APP_PREFIX : & str = "azure.app_containerapps" ;
23
+ const AZURE_FUNCTIONS_PREFIX : & str = "azure.functions" ;
22
24
const AWS_LAMBDA_PREFIX : & str = "aws.lambda" ;
23
25
const AWS_STEP_FUNCTIONS_PREFIX : & str = "aws.states" ;
24
26
@@ -46,6 +48,7 @@ pub enum OriginCategory {
46
48
ContainerAppMetrics = 37 ,
47
49
LambdaMetrics = 38 ,
48
50
StepFunctionsMetrics = 41 ,
51
+ AzureFunctionsMetrics = 71 ,
49
52
}
50
53
51
54
impl From < OriginCategory > for u32 {
@@ -98,6 +101,14 @@ pub fn find_metric_origin(metric: &Metric, tags: SortedTags) -> Option<Origin> {
98
101
..Default :: default ( )
99
102
} ) ;
100
103
}
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
+ }
101
112
if is_aws_lambda ( & tags, & prefix) {
102
113
return Some ( Origin {
103
114
origin_product : OriginProduct :: Serverless . into ( ) ,
@@ -135,21 +146,26 @@ fn is_datadog_metric(prefix: &str) -> bool {
135
146
prefix == DATADOG_PREFIX
136
147
}
137
148
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
-
143
149
fn is_google_cloud_run ( tags : & SortedTags , prefix : & str ) -> bool {
144
150
get_first_tag_value ( tags, DD_ORIGIN_TAG_KEY ) == Some ( GOOGLE_CLOUD_RUN_TAG_VALUE )
145
151
&& prefix != GOOGLE_CLOUD_RUN_PREFIX
146
152
}
147
153
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
+
148
159
fn is_azure_container_app ( tags : & SortedTags , prefix : & str ) -> bool {
149
160
get_first_tag_value ( tags, DD_ORIGIN_TAG_KEY ) == Some ( AZURE_CONTAINER_APP_TAG_VALUE )
150
161
&& prefix != AZURE_CONTAINER_APP_PREFIX
151
162
}
152
163
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
+
153
169
fn is_aws_lambda ( tags : & SortedTags , prefix : & str ) -> bool {
154
170
get_first_tag_value ( tags, AWS_LAMBDA_TAG_KEY ) . is_some ( ) && prefix != AWS_LAMBDA_PREFIX
155
171
}
0 commit comments