日志分析服务器

用于Azure Log Analytics的Node.js MCP服务器,支持Docker和服务主体认证,提供安全日志查询和批量处理功能。

  • by rasta26
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 rasta26/azure-logs-mcp

使用说明

Azure日志分析MCP服务器(Node.js)

用于Azure日志分析的Node.js MCP服务器,支持Docker和服务主体身份验证。使用官方 @azure/monitor-query-logs Azure SDK for JavaScript的库。

快速开始

Docker(推荐)

  1. 创建 .env 文件:
cp .env.example .env
# Edit .env with your Service Principal credentials
  1. 使用Docker Compose运行:
docker-compose up --build

地方发展

  1. 安装依赖项:
npm install
  1. 设置环境变量:
export AZURE_CLIENT_ID="your-client-id"
export AZURE_CLIENT_SECRET="your-client-secret"  
export AZURE_TENANT_ID="your-tenant-id"
  1. 运行服务器:
npm start

认证

服务负责人(SPN):

  • 集 AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID
  • 如果未配置SPN,则回退到DefaultAzureCredential

VS代码+副本设置

  1. 安装扩展:

    • GitHub Copilot
    • GitHub Copilot 聊天助手
  2. 设置环境变量:

export AZURE_CLIENT_ID="your-client-id"
export AZURE_CLIENT_SECRET="your-client-secret"
export AZURE_TENANT_ID="your-tenant-id"
  1. 在VS代码中打开项目:
code .
  1. 与Copilot一起使用:
    • 打开副驾驶聊天(Ctrl+Shift+I)
    • MCP服务器将可用于Azure日志分析查询
    • 示例:“查询最后一小时的心跳表”

配置文件

  • .vscode/settings.json -MCP服务器配置
  • .vscode/launch.json -调试配置
  • mcp-config.json -独立MCP配置

调试与故障排除

启用调试模式:

export DEBUG=true
npm start

测试连接性: 使用 test_connectivity 诊断Azure连接问题的工具:

  • 测试身份验证
  • 验证工作区访问权限
  • 报告详细的错误信息

常见问题:

  • 身份验证错误:检查SPN凭据
  • 未找到工作区:验证工作区ID
  • 网络问题:检查防火墙/代理设置
  • 权限错误:确保SPN具有日志分析读取器角色

调试输出:

  • 凭据配置详细信息
  • 连接测试结果
  • 查询执行时间
  • 带有代码的详细错误消息

安全查询

可用模板:

  • failed_logins -用户登录尝试失败
  • privileged_operations -角色管理操作
  • suspicious_locations -高风险登录
  • data_access_audit -Blob存储访问模式
  • admin_activities -行政活动
  • network_security -外部网络连接
  • compliance_changes -政策和合规性变更
  • security_alerts -安全中心警报
  • security_incidents -Sentinel的安全事件
  • malware_detections -Windows Defender恶意软件检测

用途:

# List all security queries
list_security_queries

# Run a specific security query
run_security_query --query_name failed_logins --timespan PT1H

# Query security logs directly
query_security_logs --query "SecurityAlert | take 10"

# Batch query multiple security tables
query_logs_batch --queries '[
  {"id": "alerts", "query": "SecurityAlert | take 5"},
  {"id": "incidents", "query": "SecurityIncident | take 5"}
]'

新功能

安全日志查询:

  • 专用 query_security_logs 用于安全查询的工具
  • 针对SecurityEvent、SecurityAlert、SecurityIncident、SigninLogs、AuditLogs表进行了优化
  • 增强的安全查询模板

批量查询处理:

  • query_logs_batch 同时执行多个查询的工具
  • 并行执行,单独处理错误
  • 带有查询标识符的结构化结果