Skip to content

Commit

Permalink
Log analyzer - adding support for parssing telemetry logs
Browse files Browse the repository at this point in the history
  • Loading branch information
boazhaim committed Nov 7, 2024
1 parent 1dd3aa4 commit 5316908
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
from loganalyze.log_analyzers.console_log_analyzer import ConsoleLogAnalyzer
from loganalyze.log_analyzers.rest_api_log_analyzer import RestApiAnalyzer
from loganalyze.log_analyzers.link_flapping_analyzer import LinkFlappingAnalyzer
from loganalyze.log_analyzers.ibdiagnet_log_analyzer import IBDIAGNETLogAnalyzer

from loganalyze.pdf_creator import PDFCreator
from loganalyze.utils.common import delete_files_by_types
Expand Down Expand Up @@ -391,9 +392,9 @@ def create_analyzer(parsed_args, full_extracted_logs_list,
# Clean some unended files created during run
files_types_to_delete = set()
files_types_to_delete.add("png") #png images created for PDF report
files_types_to_delete.add("log") #logs taken from the logs
files_types_to_delete.add("csv") #tmp csv + telemetery samples
files_types_to_delete.add("gz") #gz files of logs and samples
# files_types_to_delete.add("log") #logs taken from the logs
# files_types_to_delete.add("csv") #tmp csv + telemetery samples
# files_types_to_delete.add("gz") #gz files of logs and samples
delete_files_by_types(args.destination, files_types_to_delete)

except Exception as exc:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#
# Copyright © 2013-2024 NVIDIA CORPORATION & AFFILIATES. ALL RIGHTS RESERVED.
#
# This software product is a proprietary product of Nvidia Corporation and its affiliates
# (the "Company") and all right, title, and interest in and to the software
# product, including all associated intellectual property rights, are and
# shall remain exclusively with the Company.
#
# This software product is governed by the End User License Agreement
# provided with the software product.
#

import re
from typing import Match

from loganalyze.log_parsing.base_regex import RegexAndHandlers

ITERATION_TIME_REGEX = re.compile(r"^\[ExportAPI_STATS\] Iteration time\: ([\d\.]+) sec \@ \[([\d\-]+ [\d\:\.]+)\]$")

TIMEOUT_DUMP_CORE_REGEX = re.compile(r"^timeout: the monitored command dumped core$")

TOTAL_SWITCH_PORTS_REGEX = re.compile(r"^.*Total switches\/ports \[(\d+)\/(\d+)\]\,.*$")

COLLECTX_VERSION_REGEX = re.compile(r"^\[ExportAPI\] Collectx version ([\d\.]+)$")

def iteration_time(match: Match):
iteration_time_sec = match.group(1)
timestamp = match.group(2)
return ("iteration_time", timestamp, iteration_time_sec, None)

def timeout_dump_core(match: Match):
return ("timeout_dump_core", None, None, None)

def total_switch_ports(match: Match):
total_switches = match.group(1)
total_ports = match.group(2)
return ("total_switch_ports", None, total_switches, total_ports)

def collectx_version(match:Match):
collectx_version = match.group(1)
return ("collectx_version", None, collectx_version, None)

ibdiagnet2_headers = ("type", "timestamp", "data", "extra")

ibdiagnet2_primary_log_regex_cls = RegexAndHandlers("ufm_logs_ibdiagnet2_port_counters.log", ibdiagnet2_headers)
ibdiagnet2_secondary_log_regex_cls = RegexAndHandlers("secondary_telemetry_ibdiagnet2_port_counters.log", ibdiagnet2_headers)

regex_funcs_map = {ITERATION_TIME_REGEX: iteration_time,
TIMEOUT_DUMP_CORE_REGEX:timeout_dump_core,
TOTAL_SWITCH_PORTS_REGEX: total_switch_ports,
COLLECTX_VERSION_REGEX: collectx_version}

for regex in regex_funcs_map:
ibdiagnet2_primary_log_regex_cls.add_regex(regex, regex_funcs_map[regex])
ibdiagnet2_secondary_log_regex_cls.add_regex(regex, regex_funcs_map[regex])
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,18 @@
from loganalyze.log_parsing.ibdiagnet_log_regex import ibdiagnet_log_regex_cls
from loganalyze.log_parsing.console_log_regex import console_log_regex_cls
from loganalyze.log_parsing.rest_api_log_regex import rest_api_log_regex_cls
from loganalyze.log_parsing.ibdiagnet2_port_counters_log_regex import \
ibdiagnet2_primary_log_regex_cls, ibdiagnet2_secondary_log_regex_cls

logs = [
event_log_regex_cls,
ufm_health_regex_cls,
ufm_log_regex_cls,
ibdiagnet_log_regex_cls,
console_log_regex_cls,
rest_api_log_regex_cls
rest_api_log_regex_cls,
ibdiagnet2_secondary_log_regex_cls,
ibdiagnet2_primary_log_regex_cls
]

logs_regex_csv_headers_list = []
Expand Down

0 comments on commit 5316908

Please sign in to comment.