将 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 收集器)
查看以下链接以获取更多信息:
我遇到了类似的问题。下面是我如何让它工作的完整细节。
设置:
- 可通过 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_USER
和 FLUENT_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 的问题(因为这可能会改变),但一旦我解决了这些问题,我会更新我的回复。
我有一个测试 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 收集器)
查看以下链接以获取更多信息:
我遇到了类似的问题。下面是我如何让它工作的完整细节。
设置:
- 可通过 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_USER
和 FLUENT_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 的问题(因为这可能会改变),但一旦我解决了这些问题,我会更新我的回复。