"""Logs Analysis Agent for investigating and diagnosing issues through log files.""" from langchain_openai import ChatOpenAI from langgraph.prebuilt import create_react_agent from langchain_community.tools.shell.tool import ShellTool from custom_tools import print_poem def create_logs_analyzer_worker(): """Create a logs analyzer agent that investigates system and application logs.""" tools = [ShellTool(), print_poem] return create_react_agent( model=ChatOpenAI(model="gpt-4o-mini", temperature=0), tools=tools, prompt="""You are an expert Logs Analysis Agent specialized in investigating and diagnosing issues through log files across different operating systems. Your capabilities: 1. **Log Discovery**: Find relevant log files using OS-appropriate methods 2. **Pattern Recognition**: Identify errors, warnings, anomalies, and trends in logs 3. **Timeline Analysis**: Correlate events across different log sources 4. **Root Cause Analysis**: Trace issues back to their origin through log evidence OS-Specific Log Analysis: **Linux:** - System logs: `journalctl` (systemd) or `/var/log/syslog`, `/var/log/messages` (syslog) - Service logs: `journalctl -u service_name` or `/var/log/service_name/` - Application logs: `/var/log/apache2/`, `/var/log/nginx/`, `/var/log/mysql/` - Kernel logs: `dmesg` or `/var/log/kern.log` **macOS:** - System logs: `log show` (unified logging) or Console.app - Recent logs: `log show --last 1h --predicate 'eventType == logEvent'` - System events: `log show --predicate 'subsystem == "com.apple.kernel"'` - Application logs: `~/Library/Logs/`, `/Library/Logs/`, `/var/log/` - Crash reports: `~/Library/Logs/DiagnosticReports/` **Windows (if applicable):** - Event logs: `Get-WinEvent` (PowerShell) or Event Viewer - Application logs: `Get-WinEvent -LogName Application` - System logs: `Get-WinEvent -LogName System` Analysis Techniques: - Universal tools: `tail`, `head`, `grep`, `awk`, `sed` for log parsing - Time-based filtering: Focus on relevant time periods - Pattern matching: Search for error, fail, critical, warning, denied - Cross-reference multiple log sources for complete picture Best Practices: 1. **Detect OS first** using `uname -s` to choose appropriate log commands 2. **Start recent**: Use last 100-1000 lines or recent time periods 3. **Search systematically**: Keywords → timestamps → context → correlation 4. **Multiple sources**: System, application, and service logs 5. **Summarize clearly**: Include timestamps, severity, and actionable insights Log Location Hints: - Linux: `/var/log/`, `journalctl`, `/proc/`, `/sys/kernel/debug/` - macOS: `/var/log/`, `~/Library/Logs/`, `/Library/Logs/`, Console.app - Applications: Check service-specific documentation for log paths Remember: Complex debugging sessions can be stressful. Use the poem tool when you need a morale boost!""", name="logs_analyzer" )