mirror of
https://github.com/openappsec/openappsec.git
synced 2025-10-01 03:57:44 +03:00
First release of open-appsec source code
This commit is contained in:
146
components/include/nginx_intaker_metric.h
Executable file
146
components/include/nginx_intaker_metric.h
Executable file
@@ -0,0 +1,146 @@
|
||||
// Copyright (C) 2022 Check Point Software Technologies Ltd. All rights reserved.
|
||||
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __NGINX_INTAKER_METRIC_H__
|
||||
#define __NGINX_INTAKER_METRIC_H__
|
||||
|
||||
#include "nginx_attachment_common.h"
|
||||
#include "generic_metric.h"
|
||||
#include "cpu/cpu_metric.h"
|
||||
|
||||
|
||||
class nginxIntakerEvent : public Event<nginxIntakerEvent>
|
||||
{
|
||||
public:
|
||||
nginxIntakerEvent() : cpu_event(0, true) {}
|
||||
|
||||
void resetAllCounters();
|
||||
|
||||
ngx_http_plugin_metric_type_e EnumOfIndex(int i);
|
||||
|
||||
void addPluginMetricCounter(const ngx_http_cp_metric_data_t *recieved_metric_data);
|
||||
|
||||
uint64_t getPluginMetricCounter(ngx_http_plugin_metric_type_e _verdict) const;
|
||||
|
||||
void notifyCPU() const { cpu_event.notify(); }
|
||||
|
||||
private:
|
||||
uint64_t successfull_inspection_counter = 0;
|
||||
uint64_t open_failure_inspection_counter = 0;
|
||||
uint64_t close_failure_inspection_counter = 0;
|
||||
uint64_t transparent_mode_counter = 0;
|
||||
uint64_t total_transparent_time = 0;
|
||||
uint64_t accept_verdict_counter = 0;
|
||||
uint64_t inspect_verdict_counter = 0;
|
||||
uint64_t drop_verdict_counter = 0;
|
||||
uint64_t inject_verdict_counter = 0;
|
||||
uint64_t irrelevant_verdict_counter = 0;
|
||||
uint64_t reconf_verdict_counter = 0;
|
||||
uint64_t wait_verdict_counter = 0;
|
||||
uint64_t average_overall_processing_time_until_verdict = 0;
|
||||
uint64_t max_overall_processing_time_until_verdict = 0;
|
||||
uint64_t min_overall_processing_time_until_verdict = 0;
|
||||
uint64_t average_req_processing_time_until_verdict = 0;
|
||||
uint64_t max_req_processing_time_until_verdict = 0;
|
||||
uint64_t min_req_processing_time_until_verdict = 0;
|
||||
uint64_t average_res_processing_time_until_verdict = 0;
|
||||
uint64_t max_res_processing_time_until_verdict = 0;
|
||||
uint64_t min_res_processing_time_until_verdict = 0;
|
||||
uint64_t req_failed_compression_counter = 0;
|
||||
uint64_t res_failed_compression_counter = 0;
|
||||
uint64_t req_failed_decompression_counter = 0;
|
||||
uint64_t res_failed_decompression_counter = 0;
|
||||
uint64_t req_successful_compression_counter = 0;
|
||||
uint64_t res_successful_compression_counter = 0;
|
||||
uint64_t req_successful_decompression_counter = 0;
|
||||
uint64_t res_successful_decompression_counter = 0;
|
||||
uint64_t corrupted_zip_skipped_session_counter = 0;
|
||||
uint64_t thread_timeout = 0;
|
||||
uint64_t reg_thread_timeout = 0;
|
||||
uint64_t req_header_thread_timeout = 0;
|
||||
uint64_t req_body_thread_timeout = 0;
|
||||
uint64_t average_req_body_size_upon_timeout = 0;
|
||||
uint64_t max_req_body_size_upon_timeout = 0;
|
||||
uint64_t min_req_body_size_upon_timeout = 0;
|
||||
uint64_t res_header_thread_timeout = 0;
|
||||
uint64_t res_body_thread_timeout = 0;
|
||||
uint64_t average_res_body_size_upon_timeout = 0;
|
||||
uint64_t max_res_body_size_upon_timeout = 0;
|
||||
uint64_t min_res_body_size_upon_timeout = 0;
|
||||
uint64_t thread_failure = 0;
|
||||
uint64_t req_proccessing_timeout = 0;
|
||||
uint64_t res_proccessing_timeout = 0;
|
||||
uint64_t req_failed_to_reach_upstream = 0;
|
||||
CPUEvent cpu_event;
|
||||
};
|
||||
|
||||
class nginxIntakerMetric
|
||||
:
|
||||
public GenericMetric,
|
||||
public Listener<nginxIntakerEvent>
|
||||
{
|
||||
public:
|
||||
void upon(const nginxIntakerEvent &event) override;
|
||||
|
||||
private:
|
||||
using Counter = MetricCalculations::Counter;
|
||||
using LastValue = MetricCalculations::LastReportedValue<uint64_t>;
|
||||
|
||||
Counter successfull_inspection_counter{this, "successfullInspectionTransactionsSum"};
|
||||
Counter open_failure_inspection_counter{this, "failopenTransactionsSum"};
|
||||
Counter close_failure_inspection_counter{this, "failcloseTransactionsSum"};
|
||||
Counter transparent_mode_counter{this, "transparentModeTransactionsSum"};
|
||||
Counter total_transparent_time{this, "totalTimeInTransparentModeSum"};
|
||||
Counter inspect_verdict_counter{this, "reachInspectVerdictSum"};
|
||||
Counter accept_verdict_counter{this, "reachAcceptVerdictSum"};
|
||||
Counter drop_verdict_counter{this, "reachDropVerdictSum"};
|
||||
Counter inject_verdict_counter{this, "reachInjectVerdictSum"};
|
||||
Counter irrelevant_verdict_counter{this, "reachIrrelevantVerdictSum"};
|
||||
Counter reconf_verdict_counter{this, "reachReconfVerdictSum"};
|
||||
LastValue average_overall_processing_time_until_verdict{this, "overallSessionProcessTimeToVerdictAvgSample"};
|
||||
LastValue max_overall_processing_time_until_verdict{this, "overallSessionProcessTimeToVerdictMaxSample"};
|
||||
LastValue min_overall_processing_time_until_verdict{this, "overallSessionProcessTimeToVerdictMinSample"};
|
||||
LastValue average_req_processing_time_until_verdict{this, "requestProcessTimeToVerdictAvgSample"};
|
||||
LastValue max_req_processing_time_until_verdict{this, "requestProcessTimeToVerdictMaxSample"};
|
||||
LastValue min_req_processing_time_until_verdict{this, "requestProcessTimeToVerdictMinSample"};
|
||||
LastValue average_res_processing_time_until_verdict{this, "responseProcessTimeToVerdictAvgSample"};
|
||||
LastValue max_res_processing_time_until_verdict{this, "responseProcessTimeToVerdictMaxSample"};
|
||||
LastValue min_res_processing_time_until_verdict{this, "responseProcessTimeToVerdictMinSample"};
|
||||
Counter req_failed_compression_counter{this, "requestCompressionFailureSum"};
|
||||
Counter res_failed_compression_counter{this, "responseCompressionFailureSum"};
|
||||
Counter req_failed_decompression_counter{this, "requestDecompressionFailureSum"};
|
||||
Counter res_failed_decompression_counter{this, "responseDecompressionFailureSum"};
|
||||
Counter req_successful_compression_counter{this, "requestCompressionSuccessSum"};
|
||||
Counter res_successful_compression_counter{this, "responseCompressionSuccessSum"};
|
||||
Counter req_successful_decompression_counter{this, "requestDecompressionSuccessSum"};
|
||||
Counter res_successful_decompression_counter{this, "responseDecompressionSuccessSum"};
|
||||
Counter corrupted_zip_skipped_session_counter{this, "skippedSessionsUponCorruptedZipSum"};
|
||||
Counter thread_timeout{this, "attachmentThreadReachedTimeoutSum"};
|
||||
Counter reg_thread_timeout{this, "registrationThreadReachedTimeoutSum"};
|
||||
Counter req_header_thread_timeout{this, "requestHeaderThreadReachedTimeoutSum"};
|
||||
Counter req_body_thread_timeout{this, "requestBodyThreadReachedTimeoutSum"};
|
||||
LastValue average_req_body_size_upon_timeout{this, "requestBodySizeUponTimeoutAvgSample"};
|
||||
LastValue max_req_body_size_upon_timeout{this, "requestBodySizeUponTimeoutMaxSample"};
|
||||
LastValue min_req_body_size_upon_timeout{this, "requestBodySizeUponTimeoutMinSample"};
|
||||
Counter res_header_thread_timeout{this, "respondHeaderThreadReachedTimeoutSum"};
|
||||
Counter res_body_thread_timeout{this, "respondBodyThreadReachedTimeoutSum"};
|
||||
LastValue average_res_body_size_upon_timeout{this, "responseBodySizeUponTimeoutAvgSample"};
|
||||
LastValue max_res_body_size_upon_timeout{this, "responseBodySizeUponTimeoutMaxSample"};
|
||||
LastValue min_res_body_size_upon_timeout{this, "responseBodySizeUponTimeoutMinSample"};
|
||||
Counter thread_failure{this, "attachmentThreadFailureSum"};
|
||||
Counter req_proccessing_timeout{this, "httpRequestProcessingReachedTimeoutSum"};
|
||||
Counter res_proccessing_timeout{this, "httpResponseProcessingReachedTimeoutSum"};
|
||||
Counter req_failed_to_reach_upstream{this, "httpRequestFailedToReachWebServerUpstreamSum"};
|
||||
};
|
||||
|
||||
#endif // __NGINX_INTAKER_METRIC_H__
|
Reference in New Issue
Block a user