在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控制台中,转到您创建的域。[ドメインの編集]单击。 然后向下滚动到“超级热数据”节点。 参见下图。
除了启用超级热存储,用户还需要创建索引策略,以允许将索引从热存储迁移到热存储。 以下是一个索引策略的示例,该策略将数据/索引从热迁移到热,然后删除阶段。
{
"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图标。 点击它[インデックス管理]将打开一个选项卡。 在这里,您可以创建一个策略并将其应用于索引。 参见下图。
重要链接:
更多研究链接:
创建和管理Amazon Elasticsearch Service域
开始使用Amazon Elasticsearch Service
下一步:
运行集群后的下一步是将CloudWatch日志流式传输到Kibana。 请注意下一篇文章。
快乐大厦!!!
******业余工程师******
您可以通过以下链接以PDF格式下载本文来支持我们。 以PDF格式下载指南关闭关闭关闭