37.2. 安装
在 OpenShift Container Platform 中安装聚合日志堆栈的一般步骤请参考聚合容器日志。在完成安装指南时需要考虑一些重要事项:
要让日志记录 pod 在您的集群间平均分配,应在创建项目时使用空白 节点选择器。
$ oc adm new-project logging --node-selector=""
与稍后执行的节点标签结合使用时,这会控制日志记录项目中的 pod 放置。
Elasticsearch(ES)应该部署集群大小至少为 3 个,以应对节点故障。这可以通过在清单主机文件中设置 openshift_logging_es_cluster_size
参数指定。
如需完整的参数列表,请参阅 Ansible 变量。
Kibana 需要主机名,该主机名可以从 中解析,无论浏览器将用于访问它。例如,您可能需要将 Kibana 的 DNS 别名添加到公司名称服务,以便从笔记本电脑上运行的 Web 浏览器访问 Kibana。日志记录部署会在其中一个"infra"节点或 OpenShift 路由器运行的位置创建到 Kibana 的 Route。Kibana 主机名别名应指向此机器。此主机名被指定为 Ansible openshift_logging_kibana_hostname
变量。
安装可能需要一些时间,具体取决于镜像是否已从 registry 中检索,以及集群大小。
在 openshift-logging 项目中,您可以使用 oc get all
检查您的部署。
$ oc get all NAME REVISION REPLICAS TRIGGERED BY logging-curator 1 1 logging-es-6cvk237t 1 1 logging-es-e5x4t4ai 1 1 logging-es-xmwvnorv 1 1 logging-kibana 1 1 NAME DESIRED CURRENT AGE logging-curator-1 1 1 3d logging-es-6cvk237t-1 1 1 3d logging-es-e5x4t4ai-1 1 1 3d logging-es-xmwvnorv-1 1 1 3d logging-kibana-1 1 1 3d NAME HOST/PORT PATH SERVICE TERMINATION LABELS logging-kibana kibana.example.com logging-kibana reencrypt component=support,logging-infra=support,provider=openshift logging-kibana-ops kibana-ops.example.com logging-kibana-ops reencrypt component=support,logging-infra=support,provider=openshift NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE logging-es 172.24.155.177 <none> 9200/TCP 3d logging-es-cluster None <none> 9300/TCP 3d logging-es-ops 172.27.197.57 <none> 9200/TCP 3d logging-es-ops-cluster None <none> 9300/TCP 3d logging-kibana 172.27.224.55 <none> 443/TCP 3d logging-kibana-ops 172.25.117.77 <none> 443/TCP 3d NAME READY STATUS RESTARTS AGE logging-curator-1-6s7wy 1/1 Running 0 3d logging-deployer-un6ut 0/1 Completed 0 3d logging-es-6cvk237t-1-cnpw3 1/1 Running 0 3d logging-es-e5x4t4ai-1-v933h 1/1 Running 0 3d logging-es-xmwvnorv-1-adr5x 1/1 Running 0 3d logging-fluentd-156xn 1/1 Running 0 3d logging-fluentd-40biz 1/1 Running 0 3d logging-fluentd-8k847 1/1 Running 0 3d
您应该最后有一个类似于下文的设置:
$ oc get pods -o wide NAME READY STATUS RESTARTS AGE NODE logging-curator-1-6s7wy 1/1 Running 0 3d ip-172-31-24-239.us-west-2.compute.internal logging-deployer-un6ut 0/1 Completed 0 3d ip-172-31-6-152.us-west-2.compute.internal logging-es-6cvk237t-1-cnpw3 1/1 Running 0 3d ip-172-31-24-238.us-west-2.compute.internal logging-es-e5x4t4ai-1-v933h 1/1 Running 0 3d ip-172-31-24-235.us-west-2.compute.internal logging-es-xmwvnorv-1-adr5x 1/1 Running 0 3d ip-172-31-24-233.us-west-2.compute.internal logging-fluentd-156xn 1/1 Running 0 3d ip-172-31-24-241.us-west-2.compute.internal logging-fluentd-40biz 1/1 Running 0 3d ip-172-31-24-236.us-west-2.compute.internal logging-fluentd-8k847 1/1 Running 0 3d ip-172-31-24-237.us-west-2.compute.internal logging-fluentd-9a3qx 1/1 Running 0 3d ip-172-31-24-231.us-west-2.compute.internal logging-fluentd-abvgj 1/1 Running 0 3d ip-172-31-24-228.us-west-2.compute.internal logging-fluentd-bh74n 1/1 Running 0 3d ip-172-31-24-238.us-west-2.compute.internal ... ...
默认情况下,分配给每个 ES 实例的 RAM 量为 16GB。openshift_logging_es_memory_limit
是 openshift-ansible 主机清单文件中使用的参数。请记住,这个值 的一半 将传递给单个 elasticsearch pod java 进程 堆大小。
37.2.1. 大型集群
在 100 个节点或更多节点上,建议首先从 docker pull registry.redhat.io/openshift3/logging-fluentd:v3.11
中拉取日志记录镜像。部署日志记录基础架构 Pod(Elasticsearch、Kibana 和 Curator)后,应一次在 20 个节点中执行节点标签。例如:
使用一个简单的循环:
$ while read node; do oc label nodes $node logging-infra-fluentd=true; done < 20_fluentd.lst
以下也可以工作:
$ oc label nodes 10.10.0.{100..119} logging-infra-fluentd=true
为节点分组 OpenShift 日志记录使用的速度,帮助避免在镜像 registry 等共享资源上发生冲突。
检查任何 "CrashLoopBackOff | ImagePullFailed | Error" 问题的发生情况。oc logs <pod>、
和 oc describe pod
<pod>oc get event
are helpful diagnostic commands are helpful diagnostic 命令。