#ifndef __PROMETHEUS_METRIC_NAMES_H__ #define __PROMETHEUS_METRIC_NAMES_H__ #include #include #include "debug.h" USE_DEBUG_FLAG(D_PROMETHEUS); std::string convertMetricName(const std::string &original_metric_name) { static const std::unordered_map original_to_representative_names = { // HybridModeMetric {"watchdogProcessStartupEventsSum", "nano_service_restarts_counter"}, // nginxAttachmentMetric {"inspectVerdictSum", "traffic_inspection_verdict_inspect_counter"}, {"acceptVeridctSum", "traffic_inspection_verdict_accept_counter"}, {"dropVerdictSum", "traffic_inspection_verdict_drop_counter"}, {"injectVerdictSum", "traffic_inspection_verdict_inject_counter"}, {"irrelevantVerdictSum", "traffic_inspection_verdict_irrelevant_counter"}, {"irrelevantVerdictSum", "traffic_inspection_verdict_irrelevant_counter"}, {"reconfVerdictSum", "traffic_inspection_verdict_reconf_counter"}, {"responseInspection", "response_body_inspection_counter"}, // nginxIntakerMetric {"successfullInspectionTransactionsSum", "successful_Inspection_counter"}, {"failopenTransactionsSum", "fail_open_Inspection_counter"}, {"failcloseTransactionsSum", "fail_close_Inspection_counter"}, {"transparentModeTransactionsSum", "transparent_mode_counter"}, {"totalTimeInTransparentModeSum", "total_time_in_transparent_mode_counter"}, {"reachInspectVerdictSum", "inspect_verdict_counter"}, {"reachAcceptVerdictSum", "accept_verdict_counter"}, {"reachDropVerdictSum", "drop_verdict_counter"}, {"reachInjectVerdictSum", "inject_verdict_counter"}, {"reachIrrelevantVerdictSum", "irrelevant_verdict_counter"}, {"reachReconfVerdictSum", "reconf_verdict_counter"}, {"requestCompressionFailureSum", "failed_requests_compression_counter"}, {"responseCompressionFailureSum", "failed_response_compression_counter"}, {"requestDecompressionFailureSum", "failed_requests_decompression_counter"}, {"responseDecompressionFailureSum", "failed_response_decompression_counter"}, {"requestCompressionSuccessSum", "successful_request_compression_counter"}, {"responseCompressionSuccessSum", "successful_response_compression_counter"}, {"requestDecompressionSuccessSum", "successful_request_decompression_counter"}, {"responseDecompressionSuccessSum", "successful_response_decompression_counter"}, {"skippedSessionsUponCorruptedZipSum", "corrupted_zip_skipped_session_counter"}, {"attachmentThreadReachedTimeoutSum", "thread_exceeded_processing_time_counter"}, {"registrationThreadReachedTimeoutSum", "failed_registration_thread_counter"}, {"requestHeaderThreadReachedTimeoutSum", "request_headers_processing_thread_timeouts_counter"}, {"requestBodyThreadReachedTimeoutSum", "request_body_processing_thread_timeouts_counter"}, {"respondHeaderThreadReachedTimeoutSum", "response_headers_processing_thread_timeouts_counter"}, {"respondBodyThreadReachedTimeoutSum", "response_body_processing_thread_timeouts_counter"}, {"attachmentThreadFailureSum", "thread_failures_counter"}, {"httpRequestProcessingReachedTimeoutSum", "request_processing_timeouts_counter"}, {"httpRequestsSizeSum", "requests_total_size_counter"}, {"httpResponsesSizeSum", "response_total_size_counter"}, {"httpRequestFailedToReachWebServerUpstreamSum", "requests_failed_reach_upstram_counter"}, {"overallSessionProcessTimeToVerdictAvgSample", "overall_processing_time_until_verdict_average"}, {"overallSessionProcessTimeToVerdictMaxSample", "overall_processing_time_until_verdict_max"}, {"overallSessionProcessTimeToVerdictMinSample", "overall_processing_time_until_verdict_min"}, {"requestProcessTimeToVerdictAvgSample", "requests_processing_time_until_verdict_average"}, {"requestProcessTimeToVerdictMaxSample", "requests_processing_time_until_verdict_max"}, {"requestProcessTimeToVerdictMinSample", "requests_processing_time_until_verdict_min"}, {"responseProcessTimeToVerdictAvgSample", "response_processing_time_until_verdict_average"}, {"responseProcessTimeToVerdictMaxSample", "response_processing_time_until_verdict_max"}, {"responseProcessTimeToVerdictMinSample", "response_processing_time_until_verdict_min"}, {"requestBodySizeUponTimeoutAvgSample", "request_body_size_average"}, {"requestBodySizeUponTimeoutMaxSample", "request_body_size_max"}, {"requestBodySizeUponTimeoutMinSample", "request_body_size_min"}, {"responseBodySizeUponTimeoutAvgSample", "response_body_size_average"}, {"responseBodySizeUponTimeoutMaxSample", "response_body_size_max"}, {"responseBodySizeUponTimeoutMinSample", "response_body_size_min"}, // WaapTelemetrics {"reservedNgenA", "total_requests_counter"}, {"reservedNgenB", "unique_sources_counter"}, {"reservedNgenC", "requests_blocked_by_force_and_exception_counter"}, {"reservedNgenD", "requests_blocked_by_waf_counter"}, {"reservedNgenE", "requests_blocked_by_open_api_counter"}, {"reservedNgenF", "requests_blocked_by_bot_protection_counter"}, {"reservedNgenG", "requests_threat_level_info_and_no_threat_counter"}, {"reservedNgenH", "requests_threat_level_low_counter"}, {"reservedNgenI", "requests_threat_level_medium_counter"}, {"reservedNgenJ", "requests_threat_level_high_counter"}, // WaapTrafficTelemetrics {"reservedNgenA", "post_requests_counter"}, {"reservedNgenB", "get_requests_counter"}, {"reservedNgenC", "put_requests_counter"}, {"reservedNgenD", "patch_requests_counter"}, {"reservedNgenE", "delete_requests_counter"}, {"reservedNgenF", "other_requests_counter"}, {"reservedNgenG", "2xx_status_code_responses_counter"}, {"reservedNgenH", "4xx_status_code_responses_counter"}, {"reservedNgenI", "5xx_status_code_responses_counter"}, {"reservedNgenJ", "requests_time_latency_average"}, // WaapAttackTypesMetrics {"reservedNgenA", "sql_injection_attacks_type_counter"}, {"reservedNgenB", "vulnerability_scanning_attacks_type_counter"}, {"reservedNgenC", "path_traversal_attacks_type_counter"}, {"reservedNgenD", "ldap_injection_attacks_type_counter"}, {"reservedNgenE", "evasion_techniques_attacks_type_counter"}, {"reservedNgenF", "remote_code_execution_attacks_type_counter"}, {"reservedNgenG", "xml_extern_entity_attacks_type_counter"}, {"reservedNgenH", "cross_site_scripting_attacks_type_counter"}, {"reservedNgenI", "general_attacks_type_counter"}, // AssetsMetric {"numberOfProtectedApiAssetsSample", "api_assets_counter"}, {"numberOfProtectedWebAppAssetsSample", "web_api_assets_counter"}, {"numberOfProtectedAssetsSample", "all_assets_counter"}, // IPSMetric {"preventEngineMatchesSample", "prevent_action_matches_counter"}, {"detectEngineMatchesSample", "detect_action_matches_counter"}, {"ignoreEngineMatchesSample", "ignore_action_matches_counter"}, // CPUMetric {"cpuMaxSample", "cpu_usage_percentage_max"}, {"cpuAvgSample", "cpu_usage_percentage_average"}, {"cpuSample", "cpu_usage_percentage_last_value"}, // LogMetric {"logQueueMaxSizeSample", "logs_queue_size_max"}, {"logQueueAvgSizeSample", "logs_queue_size_average"}, {"logQueueCurrentSizeSample", "logs_queue_size_last_value"}, {"sentLogsSum", "logs_sent_counter"}, {"sentLogsBulksSum", "bulk_logs_sent_counter"}, // MemoryMetric {"serviceVirtualMemorySizeMaxSample", "service_virtual_memory_size_kb_max"}, {"serviceVirtualMemorySizeMinSample", "service_virtual_memory_size_kb_min"}, {"serviceVirtualMemorySizeAvgSample", "service_virtual_memory_size_kb_average"}, {"serviceRssMemorySizeMaxSample", "service_physical_memory_size_kb_max"}, {"serviceRssMemorySizeMinSample", "service_physical_memory_size_kb_min"}, {"serviceRssMemorySizeAvgSample", "service_physical_memory_size_kb_average"}, {"generalTotalMemorySizeMaxSample", "general_total_used_memory_max"}, {"generalTotalMemorySizeMinSample", "general_total_used_memory_min"}, {"generalTotalMemorySizeAvgSample", "general_total_used_memory_average"}, }; auto metric_names = original_to_representative_names.find(original_metric_name); if (metric_names != original_to_representative_names.end()) return metric_names->second; dbgDebug(D_PROMETHEUS) << "Metric don't have a representative name, originl name: " << original_metric_name; return ""; } #endif // __PROMETHEUS_METRIC_NAMES_H__