EMR日志分析服务

Amazon EMR日志分析服务通过分析存储在Amazon S3中的日志文件,识别EMR问题,并提供已知问题的集成知识库和优化建议。

  • by aws-samples
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 aws-samples/sample-emr-log-analysis-mcp

使用说明

Amazon EMR日志分析MCP服务器

Amazon EMR日志分析模型上下文协议(MCP)服务器提供了通过分析存储在Amazon Simple Storage Service(Amazon S3)中的日志文件来识别EMR问题的能力。它提供了一个跨Apache Spark、Hadoop YARN和HDFS、Apache Hive、Apache HBase和Presto框架的已知问题和精心策划的建议的集成知识库。它包括对用户提供的日志片段进行即席日志分析的工具,以及查询日志文件以查找存储在Amazon S3中的现有EMR日志文件的工具。

特性

  • 精心策划的知识库:Spark、YARN、Hadoop、Hive、HBase、Presto和EMR服务组件中有150多个已知的EMR问题,AWS支持知识中心链接可用时
  • EMR聚类分析:自动发现S3中提供的EMR群集ID的日志,并使用Amazon Athena跨日志文件进行优化的SQL查询,以识别已知问题,并对主要发现提供汇总建议
  • 临时日志分析:直接在聊天中分析用户提供的日志片段,以提供建议

先决条件

  1. 此MCP服务器与LLM客户端在同一主机上本地运行。
  2. 设置AWS身份和访问管理(IAM)凭据,以访问EMR、Athena和S3。
  3. 将特定于群集的日志发布到S3。
  4. Athena查询编辑器已配置。

可用工具

  • analyze_emr_logs -分析聊天中直接提供的EMR日志内容,以便快速识别问题
  • analyze_emr_cluster_logs -在S3中发现EMR集群日志,并使用Athena进行分析

用法

配置后,您可以要求您的AI助手分析EMR日志并排除问题:

  • “分析EMR集群j-XXXX的日志”
  • “此EMR日志中存在哪些问题?”

安装

  1. 克隆存储库:

    git clone https://github.com/aws-samples/sample-emr-log-analysis-mcp.git
    cd sample-emr-log-analysis-mcp
    
  2. 使用UV创建和激活虚拟环境:

    uv venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  3. 安装软件包:

    uv pip install -e .
    
  4. 在LLM客户端(如用于命令行的Amazon Q)中配置MCP服务器

    • 对于Amazon Q CLI,请在中更新MCP配置 ~/.aws/amazonq/mcp.json
    • 对于Cline,从MCP选项卡中单击“配置MCP服务器”选项
    {
      "mcpServers": {
        "emr-log-analysis-mcp": {
          "autoApprove": [
            "analyze_emr_logs",
            "analyze_emr_cluster_logs"
          ],
          "disabled": false,
          "timeout": 60,
          "type": "stdio",
          "command": "uv",
          "args": ["run", "--directory", "/path/to/sample-emr-log-analysis-mcp", "python", "-m", "emr_log_analysis.server"],
          "env": {
            "AWS_PROFILE": "your-aws-profile",
            "AWS_REGION": "us-east-1",
            "FASTMCP_LOG_LEVEL": "ERROR"
          }
        }
      }
    }
    

安全考虑

所需IAM权限

运行MCP服务器的用户使用的AWS凭据需要以下权限:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EMRAccess",
      "Effect": "Allow",
      "Action": [
        "emr:DescribeCluster"
      ],
      "Resource": "arn:aws:emr:*:*:cluster/*"
    },
    {
      "Sid": "AthenaAccess",
      "Effect": "Allow",
      "Action": [
        "athena:StartQueryExecution",
        "athena:GetQueryExecution",
        "athena:GetQueryResults",
        "athena:StopQueryExecution"
      ],
      "Resource": [
        "arn:aws:athena:*:*:workgroup/primary",
        "arn:aws:athena:*:*:workgroup/emr-log-analysis"
      ]
    },
    {
      "Sid": "S3Access",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetObject",
        "s3:PutObject",
        "s3:CreateBucket"
      ],
      "Resource": [
        "arn:aws:s3:::aws-logs-*",
        "arn:aws:s3:::aws-logs-*/*",
        "arn:aws:s3:::emr-log-analysis-*",
        "arn:aws:s3:::emr-log-analysis-*/*"
      ]
    },
    {
      "Sid": "GlueAccess",
      "Effect": "Allow",
      "Action": [
        "glue:CreateDatabase",
        "glue:CreateTable",
        "glue:DeleteDatabase"
      ],
      "Resource": [
        "arn:aws:glue:*:*:database/emr_analysis_*",
        "arn:aws:glue:*:*:table/emr_analysis_*/*"
      ]
    },
    {
      "Sid": "STSAccess",
      "Effect": "Allow",
      "Action": [
        "sts:GetCallerIdentity"
      ],
      "Resource": "*"
    }
  ]
}

日志数据保护

  • 启用S3加密 使用服务器端加密(AES-256或KMS)对EMR日志桶进行加密
  • 启用Amazon CloudTrail 审核日志访问和分析活动
  • 使用VPC端点 S3和Athena将流量保密(建议用于敏感数据)
  • EMR日志可能包含敏感信息 例如数据样本、SQL查询和配置详细信息

特定于环境的AWS配置文件

根据您的环境类型配置单独的AWS配置文件(例如):

# Development - broader permissions for testing
export AWS_PROFILE=emr-dev
export AWS_REGION=us-east-1

# Production - restricted access with monitoring
export AWS_PROFILE=emr-prod
export AWS_REGION=us-east-1


## Troubleshooting
- If you encounter issues, verify your IAM permissions

## License

This project is licensed under the MIT-0 License. See the [LICENSE](LICENSE) file for details.