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 にラップトップで実行される Web ブラウザーからアクセスできるように Kibana の DNS エイリアスを企業名サービスに追加する必要がある場合があります。ロギングのデプロイでは、インフラストラクチャーノードの 1 つの Kibana にルートを作成するか、または OpenShift ルーターの実行中にルートを作成します。Kibana ホスト名のエイリアスはこのマシンを参照する必要があります。このホスト名は Ansible openshift_logging_kibana_hostname
変数として指定されます。
イメージがレジストリーからすでに取得されているかどうかや、クラスターのサイズによっては、インストールに時間がかかる場合があります。
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 の容量は 16 GB です。openshift_logging_es_memory_limit
は openshift-ansible ホストインベントリーファイルで使用されるパラメーターです。この値の半分が個々の elasticsearch Pod java プロセスの ヒープサイズ に渡されることに注意してください。
EFK のインストールの詳細はこちら を参照してください。
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 ロギングで DaemonSet が一定のペースで使用されるので、イメージレジストリーなどの共有リソース上の競合を回避できます。
CrashLoopBackOff | ImagePullFailed | Error の問題が発生したかどうかを確認します。oc logs <pod>
、oc describe pod <pod>
および oc get event
は、役に立つ診断コマンドです。