在AWS上使用Kibana设置Elasticsearch集群

您可以通过以下链接以PDF格式下载本文来支持我们。 以PDF格式下载指南关闭关闭关闭

本文介绍如何使用CloudFormation在AWS(Amazon Web Services)云平台上使用Kibana设置Elasticsearch集群。 它还描述了如何访问集群和Kibana端点。

需要Elasticsearch和用例:

Elasticsearch是用于日志分析和管理的托管AWS(Amazon Web Services)服务。 一个常见的用例是监视基础结构或应用程序的性能,以帮助进行故障诊断。 然后,您可以捕获事件以主动监视安全威胁。 使用Elasticsearch的其他示例是:

  • 分析VPC流日志以捕获访问VPC的有害流量。
  • 用于CloudTrail日志分析,以监视在您的AWS账户上进行的用户活动和API调用。
  • 分析Container Insights应用程序日志,以对在AWS容器平台上运行的应用程序进行故障诊断。

您可以将数据从各种来源流式传输到弹性搜索集群。 一些来源包括S3存储桶,CloudWatch日志组,dynamo DB或AWS IoT。

设置先决条件:

设置之前,用户必须确保满足以下要求:

AWS账户。

有权在AWS上创建资源的用户。

Elasticsearch和Kibana设置:

Elasticsearch群集可以具有Internet或VPC端点。

首先,通过aws-es-kibana代理访问Internet终结点群集。 对于VPC终结点群集,用户必须在Windows步进单元设置中与群集相同的VPC中的浏览器中输入Kibana或群集URL。

使用下面的CloudFormation模板创建Internet端点群集。 用户可以自定义模板以适合其特定需求。

AWSTemplateFormatVersion: "2010-09-09"
Description: "Template to create Elasticsearch domain"

Resources:
    ElasticSearchCluster:            
        Type: AWS::Elasticsearch::Domain
        Properties: 
            DomainName: test-elasticsearch
            AdvancedSecurityOptions:
                Enabled: true
                InternalUserDatabaseEnabled: false
                MasterUserOptions:
                   MasterUserARN: arn:aws:iam::*************:user/test 
            ElasticsearchVersion: 7.7
            EncryptionAtRestOptions:
                Enabled: true 
            DomainEndpointOptions:
                EnforceHTTPS: true
            ElasticsearchClusterConfig:
                DedicatedMasterEnabled: "true"
                DedicatedMasterType: "c4.large.elasticsearch"
                DedicatedMasterCount: "3"
                InstanceCount: 2
                InstanceType: "c4.large.elasticsearch"
            NodeToNodeEncryptionOptions:
                Enabled: true                
            EBSOptions:
                EBSEnabled: true
                VolumeSize: 20
                VolumeType: gp2
            AccessPolicies:
                Version: "2012-10-17"
                Statement:
                  -
                    Effect: "Allow"
                    Principal:
                       AWS: "*"
                    Action: "es:*"
                    Resource: "arn:aws:es:eu-west-1:***********:domain/test-elasticsearch/*"

Outputs:
  ESCluster:
    Description: The ES Cluster
    Value: !Ref ElasticSearchCluster

要在Internet访问终结点群集上访问Kibana,请按照下列步骤操作:

  • 在您的机器/终端上安装AWS CLI。
  • 然后使用命令(aws configure)设置aws凭证。 确保您在设备上为aws设置的凭据是用于使用上述模板创建集群的主用户的凭据。
  • 将节点安装在机器/终端上。
  • 使用以下命令安装aws-es-kibana代理(npm install -g aws-es-kibana)。
  • 运行命令(不带aws-es-kibana https的es端点)。
  • 最后,从命令输出中复制Kibana URL,并将其粘贴到浏览器中。
  • 您现在可以访问Kibana。

以下CloudFormation模板创建一个VPC /专用访问端点群集。 用户可以自定义模板以适合其特定需求。

AWSTemplateFormatVersion: "2010-09-09"
Description: "Template to create ElasticSearch domain"

Parameters:
    VPC:
        Type: String
        Description: The ID of your VPC
        Default: vpc-ID

    PrivateSubnet01:
        Type: String
        Description: The ID of your subnet
        Default: subnet-ID

    UserName:
        Type: String
        Description: The ES master user Name

    UserPassword:
        Type: String
        Description: The ES master user Password
        NoEcho: true

Resources:
    ESSecurityGroup:
        Type: "AWS::EC2::SecurityGroup"
        Properties:
            GroupDescription: "security group for ES Cluster access"
            GroupName: "test-ES-sg"
            VpcId: !Ref VPC
            SecurityGroupIngress: 
              - 
                CidrIp: "0.0.0.0/0"
                FromPort: 80
                IpProtocol: "tcp"
                ToPort: 80

              - 
                CidrIp: "0.0.0.0/0"
                FromPort: 443
                IpProtocol: "tcp"
                ToPort: 443

            SecurityGroupEgress: 
              - 
                CidrIp: "0.0.0.0/0"
                IpProtocol: "-1"

    ElasticSearchCluster:            
        Type: AWS::Elasticsearch::Domain
        Properties: 
            DomainName: test-elasticsearch
            AdvancedSecurityOptions:
                Enabled: true
                InternalUserDatabaseEnabled: true
                MasterUserOptions:
                   MasterUserName: !Ref UserName
                   MasterUserPassword: !Ref UserPassword 
            ElasticsearchVersion: 7.7
            EncryptionAtRestOptions:
                Enabled: true 
            DomainEndpointOptions:
                EnforceHTTPS: true
            ElasticsearchClusterConfig:
                DedicatedMasterEnabled: "true"
                DedicatedMasterType: "c4.large.elasticsearch"
                DedicatedMasterCount: "3"
                InstanceCount: 1
                InstanceType: c4.large.elasticsearch
            NodeToNodeEncryptionOptions:
                Enabled: true                
            EBSOptions:
                EBSEnabled: true
                VolumeSize: 20
                VolumeType: gp2
            VPCOptions: 
                SecurityGroupIds:
                  - !Ref ESSecurityGroup
                SubnetIds:
                  - !Ref PrivateSubnet01
            AccessPolicies:
                Version: "2012-10-17"
                Statement:
                  -
                    Effect: "Allow"
                    Principal:
                       AWS: "*"
                    Action: "es:*"
                    Resource: "arn:aws:es:eu-west-1:************:domain/test-elasticsearch/*"

Outputs:
  ESCluster:
    Description: Public Subnet 01 ID in the VPC
    Value: !Ref ElasticSearchCluster

Kibana用户访问管理:

最重要的任务之一是添加其他用户,并使用角色和角色映射来管理对Kibana的访问。 启用Kibana审核日志记录以监视用户访问权限也很重要。

登录到Kibana以添加用户并创建角色以分配给Kibana用户。 然后向下滚动到最左侧的安全图标(南京锁状图标),然后单击它。 打开一个窗口,您可以在其中创建角色并将用户映射到这些角色。 见下文:

N / B:首次创建Elasticsearch集群时,只有主用户才能访问“安全性”选项卡。[セキュリティ]对选项卡的访问允许用户创建角色并将角色分配给用户。 然后其他用户[セキュリティ]必须为您分配Security Manager角色才能访问这些选项卡。[セキュリティ]在选项卡上,转到角色映射,然后在安全管理器中添加用户IAM用户ARN。

启用Kibana审核日志记录[セキュリティ]在标签上[監査ログ]单击。 然后打开“启用审核日志”。 返回AWS Elastic Search控制台,然后单击仪表板上的集群。[ログ]选择一个标签。[監査ログの設定]滚动到。[enable]单击,然后按照说明进行操作以选择要将日志发布到的CloudWatch日志组。

Elasticsearch日志管理和数据存储选项:

由于存储成本呈指数级增长,在没有适当的日志管理的情况下维护Elasticsearch集群非常昂贵。

AWS Elasticsearch提供了超热存储,使用户可以便宜得多地存储PB级数据。 要使用此功能,您需要按以下步骤在群集中启用超级热存储: 在Elasticsearch控制台中,转到您创建的域。[ドメインの編集]单击。 然后向下滚动到“超级热数据”节点。 参见下图。

在AWS上使用Kibana设置Elasticsearch集群

除了启用超级热存储,用户还需要创建索引策略,以允许将索引从热存储迁移到热存储。 以下是一个索引策略的示例,该策略将数据/索引从热迁移到热,然后删除阶段。

{
    "policy": {
        "policy_id": "hot-warm-delete",
        "description": "a hot-warm-delete workflow.",
        "last_updated_time": 1599914073036,
        "schema_version": 1,
        "error_notification": null,
        "default_state": "hot",
        "states": [
            {
                "name": "hot",
                "actions": [
                    {
                        "replica_count": {
                            "number_of_replicas": 1
                        }
                    }
                ],
                "transitions": [
                    {
                        "state_name": "warm",
                        "conditions": {
                            "min_index_age": "1d"
                        }
                    }
                ]
            },
            {
                "name": "warm",
                "actions": [
                    {
                        "timeout": "24h",
                        "retry": {
                            "count": 5,
                            "backoff": "exponential",
                            "delay": "1h"
                        },
                        "warm_migration": {}
                    }
                ],
                "transitions": [
                    {
                        "state_name": "delete",
                        "conditions": {
                            "min_index_age": "20d"
                        }
                    }
                ]
            },
            {
                "name": "delete",
                "actions": [
                    {
                        "delete": {}
                    }
                ],
                "transitions": []
            }
        ]
    }
}

要创建策略,请登录到Kibana。 然后向下滚动到最左侧的IM图标。 点击它[インデックス管理]将打开一个选项卡。 在这里,您可以创建一个策略并将其应用于索引。 参见下图。

在AWS上使用Kibana设置Elasticsearch集群

重要链接:

更多研究链接:

创建和管理Amazon Elasticsearch Service域

开始使用Amazon Elasticsearch Service

下一步:

运行集群后的下一步是将CloudWatch日志流式传输到Kibana。 请注意下一篇文章。

快乐大厦!!!

******业余工程师******

您可以通过以下链接以PDF格式下载本文来支持我们。 以PDF格式下载指南关闭关闭关闭

Sidebar