使用 ELK Stack 进行云原生日志记录和监控:AWS 中的开发运营方法

使用 ELK Stack 进行云原生日志记录和监控

欢迎来到雲闪世界。在当今的云原生世界中,日志记录和监控是强大的 DevOps 策略的重要组成部分。监控应用程序性能、跟踪错误和分析日志对于确保无缝操作和主动识别潜在问题至关重要。在本文中,我们将指导您使用 AWS 上的 ELK Stack(Elasticsearch、Logstash 和 Kibana)设置云原生日志记录和监控,从而实现以 DevOps 为中心的方法来管理基于云的应用程序。

1.什么是ELK堆栈?

ELK Stack 是一种流行的开源解决方案,用于集中、搜索和可视化日志和指标。它由三个核心组件组成:

  • Elasticsearch:分布式、可扩展的搜索引擎,用于存储日志和指标并为其建立索引。 - Logstash:一种数据处理管道,可在将日志发送到 Elasticsearch 之前从各种来源获取并转换日志。 - Kibana:一个强大的数据可视化和探索工具,可以实时洞察 Elasticsearch 中存储的数据。
  1. 在 AWS 上设置 Elasticsearch

我们将使用 AWS CLI 在 Amazon Elasticsearch Service 中创建 Elasticsearch 集群。确保您已安装 AWS CLI 并使用适当的凭证进行配置。

复制代码
# Use AWS CLI to create an Elasticsearch clustercreate an Elasticsearch cluster
aws es create-elasticsearch-domain --domain-name my-elasticsearch-domain \
    --elasticsearch-version "7.13" \
    --elasticsearch-cluster-config InstanceType=t2.small.elasticsearch,InstanceCount=2 \
    --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=10

注意:将"my-elasticsearch-domain"替换为您的域的唯一名称。

  1. 在 AWS 上设置 Logstash

为了设置 Logstash,我们将使用 Amazon Linux 2 AMI 启动安装了 Logstash 的 EC2 实例。使用 SSH 连接到实例。

复制代码
# Launch an EC2 instance with Logstash
aws ec2 run-instances --image-id ami-0c3fd0f5d33134a76 --instance-type t2.micro \--image-id ami-0c3fd0f5d33134a76 --instance-type t2.micro \
    --key-name your-key-pair-name --security-group-ids sg-xxxxxxx --subnet-id subnet-xxxxxxx

注意:将 `ami-0c3fd0f5d33134a76` 替换为适合您所在区域的 Amazon Linux 2 AMI ID。另外,将 `your-key-pair-name` 替换为您的 SSH 密钥对的名称,将 `sg-xxxxxxx` 替换为您的安全组的 ID,将 `subnet-xxxxxxx` 替换为您的子网的 ID。

接下来,通过 SSH 进入实例:

复制代码
ssh -i /path/to/your-key-pair.pem ec2-user@public-ip-of-instancei /path/to/your-key-pair.pem ec2-user@public-ip-of-instance

现在,安装 Logstash 并将其配置为将日志转发到 Elasticsearch。

复制代码
# Install Logstash
sudo yum install -y logstash
# Create a Logstash configuration file
sudo vi /etc/logstash/conf.d/my-logstash-config.conf

在 my-logstash-config.conf 文件中,添加以下配置以从 Filebeat 接收日志:

复制代码
input {
  beats {
    port => 50445044
  }
}

output {
  elasticsearch {
    hosts => ["https://your-elasticsearch-endpoint"]
    index => "my-application-logs-%{+YYYY.MM.dd}"
  }
}

启动 Logstash:

复制代码
sudo systemctl start logstash
sudo systemctl enable logstashenable logstash
  1. 在 AWS 上设置 Kibana

与 Logstash 类似,我们将使用 Amazon Linux 2 AMI 启动另一个安装了 Kibana 的 EC2 实例。

复制代码
# Launch an EC2 instance with Kibana
aws ec2 run-instances --image-id ami-0c3fd0f5d33134a76 --instance-type t2.micro \--image-id ami-0c3fd0f5d33134a76 --instance-type t2.micro \
    --key-name your-key-pair-name --security-group-ids sg-xxxxxxx --subnet-id subnet-xxxxxxx

通过 SSH 登录 Kibana 实例:

复制代码
ssh -i /path/to/your-key-pair.pem ec2-user@public-ip-of-instancei /path/to/your-key-pair.pem ec2-user@public-ip-of-instance

现在,安装 Kibana:

复制代码
# Install Kibana
sudo yum install -y kibana
# Configure Kibana to connect to Elasticsearch
sudo vi /etc/kibana/kibana.yml

在 `kibana.yml` 文件中,添加以下配置以指定 Elasticsearch 端点:

复制代码
elasticsearch.hosts: ["https://your-elasticsearch-endpoint"]

将 `your-elasticsearch-endpoint` 替换为您的 Elasticsearch 集群的端点。

sudo systemctl start kibana
sudo systemctl enable kibanaenable kibana
  1. 将日志流式传输到 ELK Stack

选择以下日志传送程序之一将日志从您的应用程序流式传输到 Logstash:

使用 Filebeat(用于文本日志):

在应用程序服务器上安装并配置 Filebeat:

# Install Filebeat
sudo yum install -y filebeat
# Configure Filebeat to send logs to Logstash
sudo vi /etc/filebeat/filebeat.yml

在 filebeat.yml 文件中添加以下配置:

复制代码
output.logstash:
 hosts: ["logstash-private-ip:5044"]

将 `logstash-private-ip` 替换为 Logstash 实例的私有 IP 地址。

启动并启用 Filebeat:

复制代码
sudo systemctl start filebeat
sudo systemctl enable filebeatenable filebeat

使用 Fluentd(用于 JSON 日志):

在应用程序服务器上安装并配置 Fluentd:

复制代码
# Install Fluentd
curl -L https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent4.sh | sh
# Configure Fluentd to send logs to Logstash
sudo vi /etc/td-agent/td-agent.conf

在`td-agent.conf`文件中,添加以下配置:

复制代码
<match my_application.**>
  @type forward
  <server>
    host logstash-private-ip
    port 5044
  </server>
</match>

启动并启用 Fluentd:

sudo systemctl start td-agenttd-agent
sudo systemctl enable td-agent
  1. 在 Kibana 中监控和可视化日志

从您的 Web 浏览器访问 Kibana:

http://public-ip-of-kibana-instance

在 Kibana 中创建索引模式来定义日志数据结构。在 Kibana 中探索、可视化和创建仪表板,以深入了解应用程序的性能和运行状况。

结论 通过执行这些步骤并使用提供的 AWS CLI 命令和配置文件,我们可以使用 AWS 上的 ELK Stack 设置云原生日志记录和监控。这种以 DevOps 为中心的方法使我们的团队能够高效地排除故障、调试和优化云原生应用程序,从而在云原生时代增强客户体验并取得业务成功。通过集中的日志和指标,我们可以深入了解您的应用程序的性能和运行状况,从而更好地制定决策并主动管理您的基于云的应用程序。

感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)

相关推荐
是芽芽哩!2 小时前
【Kubernetes 指南】基础入门——Kubernetes 基本概念(二)
云原生·容器·kubernetes
m0_663234013 小时前
云原生是什么
云原生
运维小文5 小时前
K8S中的服务质量QOS
云原生·容器·kubernetes
华为云开发者联盟5 小时前
Karmada v1.12 版本发布!单集群应用迁移可维护性增强
云原生·kubernetes·开源·容器编排·karmada
Hadoop_Liang5 小时前
Kubernetes Secret的创建与使用
云原生·容器·kubernetes
元气满满的热码式5 小时前
K8S集群部署实战(超详细)
云原生·容器·kubernetes
秀儿y7 小时前
单机服务和微服务
java·开发语言·微服务·云原生·架构
运维&陈同学12 小时前
【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
运维·elk·elasticsearch·云原生·kibana·heartbeat·metricbeat
有一个好名字1 天前
zookeeper分布式锁模拟12306买票
分布式·zookeeper·云原生
Anna_Tong1 天前
云原生大数据计算服务 MaxCompute 是什么?
大数据·阿里云·云原生·maxcompute·odps