|
|
import gradio as gr |
|
|
from transformers import pipeline |
|
|
import re |
|
|
|
|
|
def anomalies_detector(logs: str) -> list[tuple[int, str]]: |
|
|
""" |
|
|
Detect anomalies in software logs using a Hugging Face transformer model. |
|
|
This function uses a specialized model trained to identify unusual patterns |
|
|
in system logs, such as: |
|
|
- Error messages |
|
|
- Unusual system states |
|
|
- Security-related events |
|
|
- Performance anomalies |
|
|
- Unexpected behavior patterns |
|
|
|
|
|
Args: |
|
|
logs (str): The input text containing log entries |
|
|
|
|
|
Returns: |
|
|
list[tuple[int, str]]: List of tuples containing (line_number, anomalous_text) |
|
|
""" |
|
|
|
|
|
classifier = pipeline( |
|
|
"text-classification", |
|
|
model="distilbert-base-uncased", |
|
|
top_k=2 |
|
|
) |
|
|
|
|
|
|
|
|
log_lines = logs.split('\n') |
|
|
anomalies = [] |
|
|
|
|
|
|
|
|
for line_num, line in enumerate(log_lines, 1): |
|
|
if not line.strip(): |
|
|
continue |
|
|
|
|
|
|
|
|
results = classifier(line) |
|
|
|
|
|
|
|
|
|
|
|
for result in results: |
|
|
if result['label'] == 'LABEL_1' and result['score'] > 0.7: |
|
|
anomalies.append((line_num, line)) |
|
|
break |
|
|
|
|
|
return anomalies |
|
|
|
|
|
|
|
|
demo = gr.Interface( |
|
|
fn=anomalies_detector, |
|
|
inputs="textbox", |
|
|
outputs="text", |
|
|
title="Log Anomaly Detector", |
|
|
description="Enter log entries to detect anomalous patterns using BERT Model. The system will identify unusual patterns, errors, and potential issues in your logs." |
|
|
) |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch(mcp_server=True, share=True) |
|
|
|