将 Kubernetes 集群日志发送到 AWS Elasticsearch

Send Kubernetes cluster logs to AWS Elasticsearch

我有一个测试 Kubernetes 集群,我在 AWS 上创建了 elasticsearch,其中包括用于日志管理的 Kibana。

端点:https://search-this-is-my-es-wuktx5la4txs7avvo6ypuuyri.ca-central-1.es.amazonaws.com

据我搜索,我必须从 fluentd 发送日志。然后我尝试使用这个 article 来实现 DaemonSet。运气不好。

你能把任何好的文档分享给我吗

Kibana 在 Elasticsearch 集群上索引的内容之上提供可视化功能。用户可以根据大量数据创建条形图、折线图和散点图,或饼图和地图。

为了将日志数据推送到 Elasticsearch,大多数人使用 logstash/fluentd(log/data 收集器)

查看以下链接以获取更多信息:

https://www.elastic.co/webinars/introduction-elk-stack

https://logz.io/blog/fluentd-logstash/

我遇到了类似的问题。下面是我如何让它工作的完整细节。

设置:

  • 可通过 VPC 访问 AWS ES 实例。
  • 使用 this yaml file 作为模板。
  • k8s客户端版本v1.9.2
  • k8s服务器版本v1.8.7

主机问题:

我遇到的主要问题是正确定义环境变量。对于 FLUENT_ELASTICSEARCH_HOST,我在主机 URL 上包含了 https:// 前缀。一旦我删除它,我的连接问题就消失了。

身份验证:

没有为 AWS ES 配置用户名或密码。根据 this discussion,我将 FLUENT_ELASTICSEARCH_USERFLUENT_ELASTICSEARCH_PASSWORD 值设置为 null。

示例配置:

这是我的 daemonset yaml 文件中的全套环境变量:

- name:  FLUENT_ELASTICSEARCH_HOST
  value: "vpc-MY-DOMAIN.REGION.es.amazonaws.com"
- name:  FLUENT_ELASTICSEARCH_PORT
  value: "443"
- name: FLUENT_ELASTICSEARCH_SCHEME
  value: "https"
- name: FLUENT_ELASTICSEARCH_USER
  value: null
- name: FLUENT_ELASTICSEARCH_PASSWORD
  value: null

奖励:连接到 Kibana

我没有设置 AWS Cognito,而是在我的 kubernetes 集群中创建了一个 nginx pod,用作访问 Kibana 的代理。我使用 kubectl port-foward 命令从我的本地计算机访问 nginx 服务器。

这是我的 nginx.conf:

server {
  listen 80;
  listen [::]:80;

  server_name MY-DOMAIN;

  location /_plugin/kibana {
      proxy_pass https://vpc-MY-DOMAIN.REGION.es.amazonaws.com/_plugin/kibana;
  }
  location / {
      proxy_pass https://vpc-MY-DOMAIN.REGION.es.amazonaws.com;
  }
}

部署 nginx pod 后,我 运行 这个命令:

kubectl port-forward POD_NAME 8888:80

现在可以在 http://localhost:8888/_plugin/kibana

访问 Kibana

我仍然遇到 port-foward 命令的超时问题和 nginx 缓存 ES 服务 IP 的问题(因为这可能会改变),但一旦我解决了这些问题,我会更新我的回复。