From 4ea83dd77c936671fa00edb8a2fea30bbdd40430 Mon Sep 17 00:00:00 2001 From: rafabailon Date: Mon, 13 May 2024 11:35:13 +0200 Subject: [PATCH 01/13] feat: adapt analysisd columns --- .../tools/performance/visualization.py | 70 ++++++++++++------- 1 file changed, 43 insertions(+), 27 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py index f500133329..fdf73c846a 100644 --- a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py +++ b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py @@ -11,41 +11,57 @@ BINARY_NON_PRINTABLE_HEADERS = ['PID', 'Daemon', 'Version'] ANALYSISD_CSV_HEADERS = { - 'decoded_events': {'title': 'Events decoded per queue', - 'columns': ['total_events_decoded', 'syscheck_events_decoded', - 'syscollector_events_decoded', 'rootcheck_events_decoded', - 'sca_events_decoded', 'hostinfo_events_decoded', 'winevt_events_decoded', - 'other_events_decoded', 'dbsync_messages_dispatched'], - }, - 'queue_usage': {'title': 'Queue usage during the test', - 'columns': ['syscheck_queue_usage', 'syscollector_queue_usage', 'rootcheck_queue_usage', - 'sca_queue_usage', 'hostinfo_queue_usage', 'winevt_queue_usage', - 'dbsync_queue_usage', 'upgrade_queue_usage', 'event_queue_usage', - 'rule_matching_queue_usage', 'alerts_queue_usage', 'firewall_queue_usage', - 'statistical_queue_usage', 'archives_queue_usage'], - }, - 'events_decoded_per_second': {'title': 'Events decoded per second', - 'columns': ['syscheck_edps', 'syscollector_edps', 'rootcheck_edps', - 'sca_edps', 'hostinfo_edps', 'winevt_edps', - 'other_events_edps', 'events_edps', 'dbsync_mdps'], - }, - 'alerts_info': {'title': 'Alerts and events info.', - 'columns': ['events_processed', 'events_received', 'events_dropped', 'alerts_written', - 'firewall_written', 'fts_written'], - } + 'decoded_events': { + 'title': 'Events decoded per queue', + 'columns': [ + 'Decoded from azure', 'Decoded from ciscat', 'Decoded from command', 'Decoded from docker', + 'Decoded from logcollector eventchannel', 'Decoded from logcollector eventlog', + 'Decoded from logcollector macos','Decoded from logcollector others','Decoded from osquery', + 'Decoded from rootcheck','Decoded from sca','Decoded from syscheck','Decoded from syscollector', + 'Decoded from vulnerability','Decoded from agentd','Decoded from dbsync','Decoded from monitor', + 'Decoded from remote' + ], + }, + 'dropped_events': { + 'title': 'Events dropped per queue', + 'columns': [ + 'Dropped from azure', 'Dropped from ciscat', 'Dropped from command', 'Dropped from docker', + 'Dropped from logcollector eventchannel', 'Dropped from logcollector eventlog', + 'Dropped from logcollector macos', 'Dropped from logcollector others', 'Dropped from osquery', + 'Dropped from rootcheck', 'Dropped from sca', 'Dropped from syscheck', 'Dropped from syscollector', + 'Dropped from vulnerability', 'Dropped from agentd', 'Dropped from dbsync', 'Dropped from monitor', + 'Dropped from remote' + ], + }, + 'events_decoded_per_second': { + 'title': 'Events decoded per second', + 'columns': [ + 'EDPS from azure', 'EDPS from ciscat', 'EDPS from command', 'EDPS from docker', + 'EDPS from logcollector eventchannel', 'EDPS from logcollector eventlog', 'EDPS from logcollector macos', + 'EDPS from logcollector others', 'EDPS from osquery', 'EDPS from rootcheck', 'EDPS from sca', + 'EDPS from syscheck', 'EDPS from syscollector', 'EDPS from vulnerability', 'EDPS from agentd', + 'EDPS from dbsync', 'EDPS from monitor', 'EDPS from remote' + ], + }, + 'alerts_info': { + 'title': 'Alerts and events info.', + 'columns': [ + 'Events processed', 'Events received', 'Written alerts', 'Written firewall', 'Written fts' + ], + } } REMOTED_CSV_HEADERS = { 'events_info': {'title': 'Events sent and count', - 'columns': ["evt_count", "ctrl_msg_count", "discarded_count", "queued_msgs", - 'sent_bytes', 'dequeued_after_close'] + 'columns': ["Events count", "Control messages", "Discarded messages", "queued_msgs", + 'Metrics-Bytes sent', 'Dequeued messages'] }, 'queue_size': {'title': 'Queue status', - 'columns': ['queue_size', 'total_queue_size'] + 'columns': ['Queue size', 'total_queue_size'] }, 'tcp_sessions': {'title': 'TCP sessions', - 'columns': ['tcp_sessions']}, + 'columns': ['TCP sessions']}, 'recv_bytes': {'title': 'Bytes received', - 'columns': ['recv_bytes']} + 'columns': ['Metrics-Bytes received']} } AGENTD_CSV_HEADERS = { 'messages_info': {'title': 'Messages generated and total', From 4dc076e9cd7c624bfa18fadf3d21de9642f6d2bd Mon Sep 17 00:00:00 2001 From: rafabailon Date: Mon, 13 May 2024 11:39:27 +0200 Subject: [PATCH 02/13] feat: adapt remoted columns --- .../tools/performance/visualization.py | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py index fdf73c846a..bdaefd1ea8 100644 --- a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py +++ b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py @@ -52,16 +52,29 @@ } REMOTED_CSV_HEADERS = { 'events_info': {'title': 'Events sent and count', - 'columns': ["Events count", "Control messages", "Discarded messages", "queued_msgs", - 'Metrics-Bytes sent', 'Dequeued messages'] - }, - 'queue_size': {'title': 'Queue status', - 'columns': ['Queue size', 'total_queue_size'] - }, - 'tcp_sessions': {'title': 'TCP sessions', - 'columns': ['TCP sessions']}, - 'recv_bytes': {'title': 'Bytes received', - 'columns': ['Metrics-Bytes received']} + 'columns': [ + "Events count", "Control messages", "Discarded messages", "Queue usage", + 'Metrics-Bytes sent', 'Dequeued messages' + ] + }, + 'queue_size': { + 'title': 'Queue status', + 'columns': [ + 'Queue size', 'Queue usage' + ] + }, + 'tcp_sessions': { + 'title': 'TCP sessions', + 'columns': [ + 'TCP sessions' + ] + }, + 'recv_bytes': { + 'title': 'Bytes received', + 'columns': [ + 'Metrics-Bytes received' + ] + } } AGENTD_CSV_HEADERS = { 'messages_info': {'title': 'Messages generated and total', From 3f2df63f1baf2f7fdd6d1cf089bb113ea6114397 Mon Sep 17 00:00:00 2001 From: rafabailon Date: Mon, 13 May 2024 11:41:00 +0200 Subject: [PATCH 03/13] feat: adapt logcollector columns --- .../tools/performance/visualization.py | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py index bdaefd1ea8..082b2225cd 100644 --- a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py +++ b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py @@ -84,9 +84,24 @@ } LOGCOLLECTOR_CSV_HEADERS = { - 'events': {'title': 'Events generated', 'columns': ['Events']}, - 'bytes_sent': {'title': 'Bytes sent', 'columns': ['Bytes']}, - 'drops': {'title': 'Events dropped', 'columns': ['Target Drops']}, + 'events': { + 'title': 'Events generated', + 'columns': [ + 'Events' + ] + }, + 'bytes_sent': { + 'title': 'Bytes sent', + 'columns': [ + 'Bytes' + ] + }, + 'drops': { + 'title': 'Events dropped', + 'columns': [ + 'Target Drops' + ] + }, } From e9ff44244651f7183991dc3ea2fa87e27ce44b21 Mon Sep 17 00:00:00 2001 From: rafabailon Date: Mon, 13 May 2024 11:56:13 +0200 Subject: [PATCH 04/13] feat: adapt agentd columns --- .../tools/performance/visualization.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py index 082b2225cd..172c887502 100644 --- a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py +++ b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py @@ -77,10 +77,18 @@ } } AGENTD_CSV_HEADERS = { - 'messages_info': {'title': 'Messages generated and total', - 'columns': ['msg_count', 'msg_sent', 'msg_buffer']}, - 'buffered_messages': {'title': 'Events in the anti-flooding buffer', 'columns': ['msg_buffer']}, - 'ack_and_keepalive_diff': {'title': 'Difference between the last ACK and KeepAlive', 'columns': ['diff_seconds']} + 'number_of_events_and_messages': { + 'title': 'Number of events and messages', + 'columns': [ + 'Number of generated events', 'Number of messages', 'Number of events buffered' + ] + }, + 'ack_and_keepalive': { + 'title': 'Last ACK and KeepAlive', + 'columns': [ + 'Last ACK', 'Last Keepalive' + ] + } } LOGCOLLECTOR_CSV_HEADERS = { From 6dfda1e1472d2974e188ae85977e4f0352321c91 Mon Sep 17 00:00:00 2001 From: rafabailon Date: Wed, 15 May 2024 16:23:11 +0200 Subject: [PATCH 05/13] feat: add wazuhdb dataset --- .../tools/performance/visualization.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py index 172c887502..39d0fc3991 100644 --- a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py +++ b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py @@ -112,6 +112,21 @@ }, } +WAZUHDB_CSV_HEADERS = { + 'database_queries_counts': { + 'title': 'Database queries counts', + 'columns': [ + 'Received queries', 'Agent queries' + ] + }, + 'agent_queries_breakdown': { + 'title': 'Agent Queries Breakdown', + 'columns': [ + 'db-begin', 'db-close', 'db-commit', 'db-remove', 'db-sql', 'db-vacuum', 'db-get_fragmentation' + ] + } +} + class DataVisualizer: """Class that allows to visualize the data collected using the wazuh_metrics tool. @@ -342,6 +357,13 @@ def _plot_api_dataset(self): """Function to plot the information from the api.log file.""" self._plot_data(elements=['endpoint'], generic_label='Queries') + def _plot_wazuhdb_dataset(self): + """Function to plot the statistics from wazuh-wazuhdb.""" + for element in WAZUHDB_CSV_HEADERS: + columns = WAZUHDB_CSV_HEADERS[element]['columns'] + title = WAZUHDB_CSV_HEADERS[element]['title'] + self._plot_data(elements=columns, title=title, generic_label=element) + def plot(self): """Public function to plot the dataset.""" if self.target == 'binary': @@ -358,6 +380,8 @@ def plot(self): self._plot_cluster_dataset() elif self.target == 'api': self._plot_api_dataset() + elif self.target == 'wazuhdb': + self._plot_wazuhdb_dataset() else: raise AttributeError(f"Invalid target {self.target}") From c5aa4a866294791ac15c2b111f17c36aeec6be63 Mon Sep 17 00:00:00 2001 From: rafabailon Date: Fri, 17 May 2024 11:08:20 +0200 Subject: [PATCH 06/13] feat: add wazuhdb to data_visualizations --- deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py b/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py index d0fcce76b7..b177dd0c21 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py @@ -12,7 +12,7 @@ def get_script_arguments(): parser.add_argument('-s', '--sources', dest='csv_list', required=True, type=str, nargs='+', action='store', help='Paths to the CSV files separated by whitespace.') parser.add_argument('-t', '--target', dest='visualization_target', default='binary', - choices=['binary', 'analysis', 'remote', 'agent', 'logcollector', 'cluster', 'api'], + choices=['binary', 'analysis', 'remote', 'agent', 'logcollector', 'cluster', 'api', 'wazuhdb'], help='Generate data visualizations for a specific target. Default binary.') parser.add_argument('-d', '--destination', dest='destination', default=gettempdir(), help=f'Directory to store the images. Default {gettempdir()}') From fa1d1a4fc730aa8112f3b640c949b8bea85eb6f5 Mon Sep 17 00:00:00 2001 From: rafabailon Date: Fri, 17 May 2024 12:26:53 +0200 Subject: [PATCH 07/13] feat: changes to fix linter warnings --- .../wazuh_testing/tools/performance/visualization.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py index 39d0fc3991..a0eb8b426e 100644 --- a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py +++ b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py @@ -16,9 +16,9 @@ 'columns': [ 'Decoded from azure', 'Decoded from ciscat', 'Decoded from command', 'Decoded from docker', 'Decoded from logcollector eventchannel', 'Decoded from logcollector eventlog', - 'Decoded from logcollector macos','Decoded from logcollector others','Decoded from osquery', - 'Decoded from rootcheck','Decoded from sca','Decoded from syscheck','Decoded from syscollector', - 'Decoded from vulnerability','Decoded from agentd','Decoded from dbsync','Decoded from monitor', + 'Decoded from logcollector macos', 'Decoded from logcollector others', 'Decoded from osquery', + 'Decoded from rootcheck', 'Decoded from sca', 'Decoded from syscheck', 'Decoded from syscollector', + 'Decoded from vulnerability', 'Decoded from agentd', 'Decoded from dbsync', 'Decoded from monitor', 'Decoded from remote' ], }, @@ -51,9 +51,10 @@ } } REMOTED_CSV_HEADERS = { - 'events_info': {'title': 'Events sent and count', + 'events_info': { + 'title': 'Events sent and count', 'columns': [ - "Events count", "Control messages", "Discarded messages", "Queue usage", + 'Events count', 'Control messages', 'Discarded messages', 'Queue usage', 'Metrics-Bytes sent', 'Dequeued messages' ] }, From 5b8f71d2f26d7fe2549ff8ea6fa3f7d52cf6ae4d Mon Sep 17 00:00:00 2001 From: rafabailon Date: Fri, 17 May 2024 15:43:12 +0200 Subject: [PATCH 08/13] feat: use external json with columns to plot --- .../data_visualizer/agentd_csv_headers.json | 14 ++ .../data_visualizer/analysisd_csv_header.json | 40 ++++ .../binary_non_printable_headers.json | 10 + .../logcollector_csv_headers.json | 20 ++ .../data_visualizer/remoted_csv_headers.json | 27 +++ .../data_visualizer/wazuhdb_csv_headers.json | 65 ++++++ .../scripts/data_visualizations.py | 5 +- .../tools/performance/visualization.py | 202 ++++-------------- 8 files changed, 222 insertions(+), 161 deletions(-) create mode 100644 deps/wazuh_testing/wazuh_testing/data/data_visualizer/agentd_csv_headers.json create mode 100644 deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysisd_csv_header.json create mode 100644 deps/wazuh_testing/wazuh_testing/data/data_visualizer/binary_non_printable_headers.json create mode 100644 deps/wazuh_testing/wazuh_testing/data/data_visualizer/logcollector_csv_headers.json create mode 100644 deps/wazuh_testing/wazuh_testing/data/data_visualizer/remoted_csv_headers.json create mode 100644 deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/agentd_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/agentd_csv_headers.json new file mode 100644 index 0000000000..c12d9332ae --- /dev/null +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/agentd_csv_headers.json @@ -0,0 +1,14 @@ +{ + "number_of_events_and_messages": { + "title": "Number of events and messages", + "columns": [ + "Number of generated events", "Number of messages", "Number of events buffered" + ] + }, + "ack_and_keepalive": { + "title": "Last ACK and KeepAlive", + "columns": [ + "Last ACK", "Last Keepalive" + ] + } +} \ No newline at end of file diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysisd_csv_header.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysisd_csv_header.json new file mode 100644 index 0000000000..7aae769929 --- /dev/null +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysisd_csv_header.json @@ -0,0 +1,40 @@ +{ + "decoded_events": { + "title": "Events decoded per queue", + "columns": [ + "Decoded from azure", "Decoded from ciscat", "Decoded from command", "Decoded from docker", + "Decoded from logcollector eventchannel", "Decoded from logcollector eventlog", + "Decoded from logcollector macos", "Decoded from logcollector others", "Decoded from osquery", + "Decoded from rootcheck", "Decoded from sca", "Decoded from syscheck", "Decoded from syscollector", + "Decoded from vulnerability", "Decoded from agentd", "Decoded from dbsync", "Decoded from monitor", + "Decoded from remote" + ] + }, + "dropped_events": { + "title": "Events dropped per queue", + "columns": [ + "Dropped from azure", "Dropped from ciscat", "Dropped from command", "Dropped from docker", + "Dropped from logcollector eventchannel", "Dropped from logcollector eventlog", + "Dropped from logcollector macos", "Dropped from logcollector others", "Dropped from osquery", + "Dropped from rootcheck", "Dropped from sca", "Dropped from syscheck", "Dropped from syscollector", + "Dropped from vulnerability", "Dropped from agentd", "Dropped from dbsync", "Dropped from monitor", + "Dropped from remote" + ] + }, + "events_decoded_per_second": { + "title": "Events decoded per second", + "columns": [ + "EDPS from azure", "EDPS from ciscat", "EDPS from command", "EDPS from docker", + "EDPS from logcollector eventchannel", "EDPS from logcollector eventlog", "EDPS from logcollector macos", + "EDPS from logcollector others", "EDPS from osquery", "EDPS from rootcheck", "EDPS from sca", + "EDPS from syscheck", "EDPS from syscollector", "EDPS from vulnerability", "EDPS from agentd", + "EDPS from dbsync", "EDPS from monitor", "EDPS from remote" + ] + }, + "alerts_info": { + "title": "Alerts and events info.", + "columns": [ + "Events processed", "Events received", "Written alerts", "Written firewall", "Written fts" + ] + } +} \ No newline at end of file diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/binary_non_printable_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/binary_non_printable_headers.json new file mode 100644 index 0000000000..c0c52ed872 --- /dev/null +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/binary_non_printable_headers.json @@ -0,0 +1,10 @@ +{ + "binary_test": { + "title": "Usage during the test", + "columns": [ + "PID", + "Daemon", + "Version" + ] + } +} \ No newline at end of file diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/logcollector_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/logcollector_csv_headers.json new file mode 100644 index 0000000000..e434d80812 --- /dev/null +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/logcollector_csv_headers.json @@ -0,0 +1,20 @@ +{ + "events": { + "title": "Events generated", + "columns": [ + "Events" + ] + }, + "bytes_sent": { + "title": "Bytes sent", + "columns": [ + "Bytes" + ] + }, + "drops": { + "title": "Events dropped", + "columns": [ + "Target Drops" + ] + } +} \ No newline at end of file diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/remoted_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/remoted_csv_headers.json new file mode 100644 index 0000000000..c6f1c539db --- /dev/null +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/remoted_csv_headers.json @@ -0,0 +1,27 @@ +{ + "events_info": { + "title": "Events sent and count", + "columns": [ + "Events count", "Control messages", "Discarded messages", "Queue usage", + "Metrics-Bytes sent", "Dequeued messages" + ] + }, + "queue_size": { + "title": "Queue status", + "columns": [ + "Queue size", "Queue usage" + ] + }, + "tcp_sessions": { + "title": "TCP sessions", + "columns": [ + "TCP sessions" + ] + }, + "recv_bytes": { + "title": "Bytes received", + "columns": [ + "Metrics-Bytes received" + ] + } +} \ No newline at end of file diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json new file mode 100644 index 0000000000..f0f6890511 --- /dev/null +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json @@ -0,0 +1,65 @@ +{ + "database_queries_counts": { + "title": "Database queries counts", + "columns": [ + "Received queries", "Agent queries", "Global queries" + ] + }, + "agent_queries_breakdown": { + "title": "Agent queries breakdown", + "columns": [ + "db-begin", "db-close", "db-commit", "db-remove", "db-sql", "db-vacuum", "db-get_fragmentation" + ] + }, + "agent_tables_breakdown": { + "title": "Agent tables breakdown", + "columns": [ + "Table CisCat", "Table Rootcheck", "Table SCA", "Table dbsync", "Table Syscheck", + "Table Syscheck file", "Table Syscheck registry", "Table Syscheck registry_key", + "Table Syscheck registry_value", "Table Syscollector hotfixes", "Table Syscollector hwinfo", + "Table Syscollector network_address", "Table Syscollector network_iface", + "Table Syscollector network_protocol", "Table Syscollector os_info", + "Table Syscollector packages", "Table Syscollector ports", "Table Syscollector processes", + "Table Vulnerability CVEs" + ] + }, + "global_queries_breakdown": { + "title": "Global queries breakdown", + "columns": [ + "db-backup", "db-sql", "db-vacuum", "db-get_fragmentation" + ] + }, + "global_agent_queries": { + "title": "Global agent queries", + "columns": [ + "agent-delete-agent", "agent-disconnect-agents", "agent-find-agent", "agent-get-agent-info", + "agent-get-agents-by-connection-status", "agent-get-all-agents", "agent-get-distinct-groups", + "agent-get-groups-integrity", "agent-insert-agent", "agent-reset-agents-connection", + "agent-select-agent-group", "agent-select-agent-name", "agent-set-agent-groups", + "agent-sync-agent-groups-get", "agent-sync-agent-info-get", "agent-sync-agent-info-set", + "agent-update-agent-data", "agent-update-agent-name", "agent-update-connection-status", + "agent-update-status-code", "agent-update-keepalive" + ] + }, + "global_group_queries": { + "title": "Global group queries", + "columns": [ + "belongs-get-group-agents", "belongs-select-group-belong", "group-delete-group", + "group-find-group", "group-insert-agent-group", "group-select-groups" + ] + }, + "task_queries_breakdown": { + "title": "Task queries breakdown", + "columns": [ + "tasks-delete old task", "tasks-set timeout", "tasks-upgrade", "tasks-upgrade cancel", + "tasks-upgrade custom", "tasks-upgrade get status", "tasks-upgrade results", + "tasks-upgrade update status" + ] + }, + "queries_time_metrics": { + "title": "Queries time metrics", + "columns": [ + "Total Execution Time", "Agent ExecTime", "Global Queries ExecTime" + ] + } +} \ No newline at end of file diff --git a/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py b/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py index b177dd0c21..f7c665dc4f 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py @@ -18,6 +18,8 @@ def get_script_arguments(): help=f'Directory to store the images. Default {gettempdir()}') parser.add_argument('-n', '--name', dest='name', default=None, help=f'Base name for the images. Default {None}.') + parser.add_argument('-c', '--columns', dest='columns', default=None, + help=f'Path to Json with Columns to Plot. Default {None}.') return parser.parse_args() @@ -29,7 +31,8 @@ def main(): if not exists(destination): makedirs(destination) dv = DataVisualizer(dataframes=options.csv_list, target=options.visualization_target, - compare=False, store_path=options.destination, base_name=options.name) + compare=False, store_path=options.destination, base_name=options.name, + columns_path=options.columns) dv.plot() diff --git a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py index a0eb8b426e..b81a307618 100644 --- a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py +++ b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py @@ -1,133 +1,13 @@ -from os.path import join +from os.path import dirname, join, realpath from re import sub from tempfile import gettempdir +from matplotlib.ticker import LinearLocator +import json import matplotlib.dates as mdates import matplotlib.pyplot as plt import pandas as pd import seaborn as sns -from matplotlib.ticker import LinearLocator - -BINARY_NON_PRINTABLE_HEADERS = ['PID', 'Daemon', 'Version'] - -ANALYSISD_CSV_HEADERS = { - 'decoded_events': { - 'title': 'Events decoded per queue', - 'columns': [ - 'Decoded from azure', 'Decoded from ciscat', 'Decoded from command', 'Decoded from docker', - 'Decoded from logcollector eventchannel', 'Decoded from logcollector eventlog', - 'Decoded from logcollector macos', 'Decoded from logcollector others', 'Decoded from osquery', - 'Decoded from rootcheck', 'Decoded from sca', 'Decoded from syscheck', 'Decoded from syscollector', - 'Decoded from vulnerability', 'Decoded from agentd', 'Decoded from dbsync', 'Decoded from monitor', - 'Decoded from remote' - ], - }, - 'dropped_events': { - 'title': 'Events dropped per queue', - 'columns': [ - 'Dropped from azure', 'Dropped from ciscat', 'Dropped from command', 'Dropped from docker', - 'Dropped from logcollector eventchannel', 'Dropped from logcollector eventlog', - 'Dropped from logcollector macos', 'Dropped from logcollector others', 'Dropped from osquery', - 'Dropped from rootcheck', 'Dropped from sca', 'Dropped from syscheck', 'Dropped from syscollector', - 'Dropped from vulnerability', 'Dropped from agentd', 'Dropped from dbsync', 'Dropped from monitor', - 'Dropped from remote' - ], - }, - 'events_decoded_per_second': { - 'title': 'Events decoded per second', - 'columns': [ - 'EDPS from azure', 'EDPS from ciscat', 'EDPS from command', 'EDPS from docker', - 'EDPS from logcollector eventchannel', 'EDPS from logcollector eventlog', 'EDPS from logcollector macos', - 'EDPS from logcollector others', 'EDPS from osquery', 'EDPS from rootcheck', 'EDPS from sca', - 'EDPS from syscheck', 'EDPS from syscollector', 'EDPS from vulnerability', 'EDPS from agentd', - 'EDPS from dbsync', 'EDPS from monitor', 'EDPS from remote' - ], - }, - 'alerts_info': { - 'title': 'Alerts and events info.', - 'columns': [ - 'Events processed', 'Events received', 'Written alerts', 'Written firewall', 'Written fts' - ], - } -} -REMOTED_CSV_HEADERS = { - 'events_info': { - 'title': 'Events sent and count', - 'columns': [ - 'Events count', 'Control messages', 'Discarded messages', 'Queue usage', - 'Metrics-Bytes sent', 'Dequeued messages' - ] - }, - 'queue_size': { - 'title': 'Queue status', - 'columns': [ - 'Queue size', 'Queue usage' - ] - }, - 'tcp_sessions': { - 'title': 'TCP sessions', - 'columns': [ - 'TCP sessions' - ] - }, - 'recv_bytes': { - 'title': 'Bytes received', - 'columns': [ - 'Metrics-Bytes received' - ] - } -} -AGENTD_CSV_HEADERS = { - 'number_of_events_and_messages': { - 'title': 'Number of events and messages', - 'columns': [ - 'Number of generated events', 'Number of messages', 'Number of events buffered' - ] - }, - 'ack_and_keepalive': { - 'title': 'Last ACK and KeepAlive', - 'columns': [ - 'Last ACK', 'Last Keepalive' - ] - } -} - -LOGCOLLECTOR_CSV_HEADERS = { - 'events': { - 'title': 'Events generated', - 'columns': [ - 'Events' - ] - }, - 'bytes_sent': { - 'title': 'Bytes sent', - 'columns': [ - 'Bytes' - ] - }, - 'drops': { - 'title': 'Events dropped', - 'columns': [ - 'Target Drops' - ] - }, -} - -WAZUHDB_CSV_HEADERS = { - 'database_queries_counts': { - 'title': 'Database queries counts', - 'columns': [ - 'Received queries', 'Agent queries' - ] - }, - 'agent_queries_breakdown': { - 'title': 'Agent Queries Breakdown', - 'columns': [ - 'db-begin', 'db-close', 'db-commit', 'db-remove', 'db-sql', 'db-vacuum', 'db-get_fragmentation' - ] - } -} - class DataVisualizer: """Class that allows to visualize the data collected using the wazuh_metrics tool. @@ -151,7 +31,7 @@ class DataVisualizer: base_name (str, optional): base name used to store the images. """ def __init__(self, dataframes, target, compare=False, store_path=gettempdir(), x_ticks_granularity='minutes', - x_ticks_interval=1, base_name=None): + x_ticks_interval=1, base_name=None, columns_path = None): self.dataframes_paths = dataframes self.dataframe = None self.compare = compare @@ -162,6 +42,10 @@ def __init__(self, dataframes, target, compare=False, store_path=gettempdir(), x self.x_ticks_interval = x_ticks_interval self.base_name = base_name sns.set(rc={'figure.figsize': (26, 9)}) + self.columns_to_plot = None + + if target in ['binary', 'analysis', 'remote', 'agent', 'logcollector', 'wazuhdb']: + self.columns_to_plot = self._load_columns_to_plot(columns_path) @staticmethod def _color_palette(size): @@ -175,6 +59,23 @@ def _color_palette(size): """ return sns.hls_palette(size if size > 1 else 1, h=.5) + def _load_columns_to_plot(self, columns_path): + complete_path = columns_path + + if complete_path is None: + filename = None + + if self.target == 'binary': + filename = self.target + '_non_printable_headers.json' + elif self.target == 'logcollector': + filename = self.target + '_csv_headers.json' + else: + filename = self.target + 'd_csv_headers.json' + + complete_path = join(dirname(realpath(__file__)), '..', '..', 'data', 'data_visualizer', filename) + + return json.load(complete_path) + def _load_dataframes(self): """Load the dataframes from dataframes_paths.""" for df_path in self.dataframes_paths: @@ -314,21 +215,16 @@ def _plot_data(self, elements, title=None, generic_label=None): def _plot_binaries_dataset(self): """Function to plot the hardware data of the binary.""" - elements = self.dataframe.columns.drop(BINARY_NON_PRINTABLE_HEADERS) - self._plot_data(elements, title="usage during the test") - - def _plot_analysisd_dataset(self): - """Function to plot the statistics from wazuh-analysisd.""" - for element in ANALYSISD_CSV_HEADERS: - columns = ANALYSISD_CSV_HEADERS[element]['columns'] - title = ANALYSISD_CSV_HEADERS[element]['title'] - self._plot_data(elements=columns, title=title, generic_label=element) - - def _plot_remoted_dataset(self): - """Function to plot the statistics from wazuh-remoted.""" - for element in REMOTED_CSV_HEADERS: - columns = REMOTED_CSV_HEADERS[element]['columns'] - title = REMOTED_CSV_HEADERS[element]['title'] + for element in self.columns_to_plot: + columns = self.dataframe.columns.drop(self.columns_to_plot[element]['columns']) + title = self.columns_to_plot[element]['title'] + self._plot_data(elements=columns, title=title) + + def _plot_generic_dataset(self): + """Function to plot the statistics from analysisd, remoted, logcollector and wazuhdb.""" + for element in self.columns_to_plot: + columns = self.columns_to_plot[element]['columns'] + title = self.columns_to_plot[element]['title'] self._plot_data(elements=columns, title=title, generic_label=element) def _plot_agentd_dataset(self): @@ -338,16 +234,9 @@ def _plot_agentd_dataset(self): pd.to_datetime(self.dataframe['last_ack'])) self.dataframe['diff_seconds'] = self.dataframe.diff_seconds.dt.total_seconds() - for element in AGENTD_CSV_HEADERS: - columns = AGENTD_CSV_HEADERS[element]['columns'] - title = AGENTD_CSV_HEADERS[element]['title'] - self._plot_data(elements=columns, title=title, generic_label=element) - - def _plot_logcollector_dataset(self): - """Function to plot the statistics from a single file of logcollector.""" - for element in LOGCOLLECTOR_CSV_HEADERS: - columns = LOGCOLLECTOR_CSV_HEADERS[element]['columns'] - title = LOGCOLLECTOR_CSV_HEADERS[element]['title'] + for element in self.columns_to_plot: + columns = self.columns_to_plot[element]['columns'] + title = self.columns_to_plot[element]['title'] self._plot_data(elements=columns, title=title, generic_label=element) def _plot_cluster_dataset(self): @@ -358,31 +247,24 @@ def _plot_api_dataset(self): """Function to plot the information from the api.log file.""" self._plot_data(elements=['endpoint'], generic_label='Queries') - def _plot_wazuhdb_dataset(self): - """Function to plot the statistics from wazuh-wazuhdb.""" - for element in WAZUHDB_CSV_HEADERS: - columns = WAZUHDB_CSV_HEADERS[element]['columns'] - title = WAZUHDB_CSV_HEADERS[element]['title'] - self._plot_data(elements=columns, title=title, generic_label=element) - def plot(self): """Public function to plot the dataset.""" if self.target == 'binary': self._plot_binaries_dataset() elif self.target == 'analysis': - self._plot_analysisd_dataset() + self._plot_generic_dataset() elif self.target == 'remote': - self._plot_remoted_dataset() + self._plot_generic_dataset() elif self.target == 'agent': self._plot_agentd_dataset() elif self.target == 'logcollector': - self._plot_logcollector_dataset() + self._plot_generic_dataset() elif self.target == 'cluster': self._plot_cluster_dataset() elif self.target == 'api': self._plot_api_dataset() elif self.target == 'wazuhdb': - self._plot_wazuhdb_dataset() + self._plot_generic_dataset() else: raise AttributeError(f"Invalid target {self.target}") From fcbe8c1602854115a75090e85200d09d3c5d3526 Mon Sep 17 00:00:00 2001 From: rafabailon Date: Fri, 17 May 2024 15:45:53 +0200 Subject: [PATCH 09/13] feat: changes to fix linter warnings --- .../wazuh_testing/tools/performance/visualization.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py index b81a307618..9f201d3082 100644 --- a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py +++ b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py @@ -9,6 +9,7 @@ import pandas as pd import seaborn as sns + class DataVisualizer: """Class that allows to visualize the data collected using the wazuh_metrics tool. @@ -31,7 +32,7 @@ class DataVisualizer: base_name (str, optional): base name used to store the images. """ def __init__(self, dataframes, target, compare=False, store_path=gettempdir(), x_ticks_granularity='minutes', - x_ticks_interval=1, base_name=None, columns_path = None): + x_ticks_interval=1, base_name=None, columns_path=None): self.dataframes_paths = dataframes self.dataframe = None self.compare = compare @@ -73,7 +74,7 @@ def _load_columns_to_plot(self, columns_path): filename = self.target + 'd_csv_headers.json' complete_path = join(dirname(realpath(__file__)), '..', '..', 'data', 'data_visualizer', filename) - + return json.load(complete_path) def _load_dataframes(self): From afc8f560974bf4e226c88b6da56059f2d252d969 Mon Sep 17 00:00:00 2001 From: rafabailon Date: Mon, 20 May 2024 10:18:57 +0200 Subject: [PATCH 10/13] feat: add default files and modify json logic --- deps/wazuh_testing/setup.py | 3 ++- .../{wazuhdb_csv_headers.json => wazuhdbd_csv_headers.json} | 0 .../wazuh_testing/tools/performance/visualization.py | 5 ++++- 3 files changed, 6 insertions(+), 2 deletions(-) rename deps/wazuh_testing/wazuh_testing/data/data_visualizer/{wazuhdb_csv_headers.json => wazuhdbd_csv_headers.json} (100%) diff --git a/deps/wazuh_testing/setup.py b/deps/wazuh_testing/setup.py index 82d21affbd..769925ffae 100644 --- a/deps/wazuh_testing/setup.py +++ b/deps/wazuh_testing/setup.py @@ -33,7 +33,8 @@ 'data/vulnerability_parsed_packages.json', 'tools/migration_tool/delta_schema.json', 'end_to_end/vulnerability_detector_packages/vuln_packages.json', - 'tools/migration_tool/CVE_JSON_5.0_bundled.json' + 'tools/migration_tool/CVE_JSON_5.0_bundled.json', + 'data/data_visualizer/*' ] scripts_list = [ diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdbd_csv_headers.json similarity index 100% rename from deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json rename to deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdbd_csv_headers.json diff --git a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py index 9f201d3082..9185442792 100644 --- a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py +++ b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py @@ -75,7 +75,10 @@ def _load_columns_to_plot(self, columns_path): complete_path = join(dirname(realpath(__file__)), '..', '..', 'data', 'data_visualizer', filename) - return json.load(complete_path) + with open(complete_path, 'r') as columns_file: + columns_data = json.load(columns_file) + + return columns_data def _load_dataframes(self): """Load the dataframes from dataframes_paths.""" From 7d31af2d3009ec9332da1db1a28c155262c69ed7 Mon Sep 17 00:00:00 2001 From: rafabailon Date: Mon, 20 May 2024 13:02:41 +0200 Subject: [PATCH 11/13] feat: change file names and fix conditionals --- ...csv_headers.json => agent_csv_headers.json} | 0 ...v_header.json => analysis_csv_headers.json} | 0 ...sv_headers.json => remote_csv_headers.json} | 0 ...v_headers.json => wazuhdb_csv_headers.json} | 0 .../tools/performance/visualization.py | 18 ++++++++---------- 5 files changed, 8 insertions(+), 10 deletions(-) rename deps/wazuh_testing/wazuh_testing/data/data_visualizer/{agentd_csv_headers.json => agent_csv_headers.json} (100%) rename deps/wazuh_testing/wazuh_testing/data/data_visualizer/{analysisd_csv_header.json => analysis_csv_headers.json} (100%) rename deps/wazuh_testing/wazuh_testing/data/data_visualizer/{remoted_csv_headers.json => remote_csv_headers.json} (100%) rename deps/wazuh_testing/wazuh_testing/data/data_visualizer/{wazuhdbd_csv_headers.json => wazuhdb_csv_headers.json} (100%) diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/agentd_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/agent_csv_headers.json similarity index 100% rename from deps/wazuh_testing/wazuh_testing/data/data_visualizer/agentd_csv_headers.json rename to deps/wazuh_testing/wazuh_testing/data/data_visualizer/agent_csv_headers.json diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysisd_csv_header.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysis_csv_headers.json similarity index 100% rename from deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysisd_csv_header.json rename to deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysis_csv_headers.json diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/remoted_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/remote_csv_headers.json similarity index 100% rename from deps/wazuh_testing/wazuh_testing/data/data_visualizer/remoted_csv_headers.json rename to deps/wazuh_testing/wazuh_testing/data/data_visualizer/remote_csv_headers.json diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdbd_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json similarity index 100% rename from deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdbd_csv_headers.json rename to deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json diff --git a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py index 9185442792..807d3ed5b5 100644 --- a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py +++ b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py @@ -61,24 +61,22 @@ def _color_palette(size): return sns.hls_palette(size if size > 1 else 1, h=.5) def _load_columns_to_plot(self, columns_path): - complete_path = columns_path + full_path = columns_path - if complete_path is None: + if full_path is None: filename = None - if self.target == 'binary': - filename = self.target + '_non_printable_headers.json' - elif self.target == 'logcollector': + if self.target != 'binary': filename = self.target + '_csv_headers.json' else: - filename = self.target + 'd_csv_headers.json' + filename = self.target + '_non_printable_headers.json' - complete_path = join(dirname(realpath(__file__)), '..', '..', 'data', 'data_visualizer', filename) + full_path = join(dirname(realpath(__file__)), '..', '..', 'data', 'data_visualizer', filename) - with open(complete_path, 'r') as columns_file: - columns_data = json.load(columns_file) + with open(full_path, 'r') as columns_file: + full_data = json.load(columns_file) - return columns_data + return full_data def _load_dataframes(self): """Load the dataframes from dataframes_paths.""" From 3d68f639c73d9a82297703dcd6d5a2d9ef13425a Mon Sep 17 00:00:00 2001 From: rafabailon Date: Tue, 4 Jun 2024 13:51:54 +0200 Subject: [PATCH 12/13] feat: add blank line in json --- .../wazuh_testing/data/data_visualizer/agent_csv_headers.json | 2 +- .../data/data_visualizer/analysis_csv_headers.json | 2 +- .../data/data_visualizer/binary_non_printable_headers.json | 2 +- .../data/data_visualizer/logcollector_csv_headers.json | 2 +- .../wazuh_testing/data/data_visualizer/remote_csv_headers.json | 2 +- .../wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/agent_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/agent_csv_headers.json index c12d9332ae..ecdee0afb3 100644 --- a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/agent_csv_headers.json +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/agent_csv_headers.json @@ -11,4 +11,4 @@ "Last ACK", "Last Keepalive" ] } -} \ No newline at end of file +} diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysis_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysis_csv_headers.json index 7aae769929..1bb8bea5ed 100644 --- a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysis_csv_headers.json +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/analysis_csv_headers.json @@ -37,4 +37,4 @@ "Events processed", "Events received", "Written alerts", "Written firewall", "Written fts" ] } -} \ No newline at end of file +} diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/binary_non_printable_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/binary_non_printable_headers.json index c0c52ed872..c3c027e29e 100644 --- a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/binary_non_printable_headers.json +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/binary_non_printable_headers.json @@ -7,4 +7,4 @@ "Version" ] } -} \ No newline at end of file +} diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/logcollector_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/logcollector_csv_headers.json index e434d80812..b2a5128292 100644 --- a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/logcollector_csv_headers.json +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/logcollector_csv_headers.json @@ -17,4 +17,4 @@ "Target Drops" ] } -} \ No newline at end of file +} diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/remote_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/remote_csv_headers.json index c6f1c539db..77ccc2ccea 100644 --- a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/remote_csv_headers.json +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/remote_csv_headers.json @@ -24,4 +24,4 @@ "Metrics-Bytes received" ] } -} \ No newline at end of file +} diff --git a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json index f0f6890511..d3692126df 100644 --- a/deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json +++ b/deps/wazuh_testing/wazuh_testing/data/data_visualizer/wazuhdb_csv_headers.json @@ -62,4 +62,4 @@ "Total Execution Time", "Agent ExecTime", "Global Queries ExecTime" ] } -} \ No newline at end of file +} From c2dd9fe1a080e21b80c5d81a86d7d71cfcad1494 Mon Sep 17 00:00:00 2001 From: rafabailon Date: Tue, 4 Jun 2024 13:59:07 +0200 Subject: [PATCH 13/13] feat: update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8758e4563..807d076de6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ All notable changes to this project will be documented in this file. ### Changed +- Fix workload benchmark plots ([#5364](https://github.com/wazuh/wazuh-qa/pull/5364)) \- (Framework) - Disable debug evidences for Vulnerability Detector E2E tests by default ([#5331](https://github.com/wazuh/wazuh-qa/pull/5331)) \- ( Tests) - Include CVE-2023-4822 vulnerability to grafana packages ([#5332](https://github.com/wazuh/wazuh-qa/pull/5332)) \- (Framework) - Remove sslverify from host manager install package method ([#5339](https://github.com/wazuh/wazuh-qa/pull/5339)) \- (Framework)