Log Service は、 Logtail を使用して Kubernetes クラスターログを収集し、カスタムリソース定義 (CRD) を使用して、収集設定を管理します。 ここでは、Logtailのインストール方法、及びLogtailを使用してKubernetesクラスターログを収集する方法について説明します。

設定プロセス

図 1. 設定プロセス
  1. インストールコマンドを実行して、alibaba-log-controller Helm パッケージをインストールします。
  2. 収集設定を管理するために、必要に応じて CRD またはコンソールを選択します。

手順 1. インストール

Alibaba Cloud Container Service に Kubernetes をインストールする

インストール手順
  1. Alibaba Cloud Container Service Kubernetes のマスターノードにログインします。 ログインの詳細については、「SSH による Kubernetes クラスターへのアクセス」をご参照ください。
  2. ${your_k8s_cluster_id} を Kubernetes クラスタ ID に置き換え、次のコマンドを実行します。
    wget http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/alicloud-log-k8s-install.sh -O alicloud-log-k8s-install.sh; chmod 744 ./alicloud-log-k8s-install.sh; sh ./alicloud-log-k8s-install.sh ${your_k8s_cluster_id}

    インストール後、 Log ServiceはKubernetesクラスタの同じリージョンにLog Serviceプロジェクトを自動的に作成します。 作成されるプロジェクトの名前はk8s-log-${your_k8s_cluster_id} です。 プロジェクトに、マシングループk8s-group-${your_k8s_cluster_id}が自動的に作成されます。

    Under k8s-log-${your_k8s_cluster_id} プロジェクトに、config-operation-log というという名前の Logstore が自動的に作成されます。 Logstore を削除しないでください。
インストールの例
実行が成功すると、次の情報が出力されます。
[root@iZbp******biaZ ~]# wget http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/alicloud-log-k8s-install.sh -O alicloud-log-k8s-install.sh; chmod 744 ./alicloud-log-k8s-install.sh; sh ./alicloud-log-k8s-install.sh c12ba20**************86939f0b
....
....
....
alibaba-cloud-log/Chart.yaml
alibaba-cloud-log/templates/
alibaba-cloud-log/templates/_helpers.tpl
alibaba-cloud-log/templates/alicloud-log-crd.yaml
alibaba-cloud-log/templates/logtail-daemonset.yaml
alibaba-cloud-log/templates/NOTES.txt
alibaba-cloud-log/values.yaml
NAME: alibaba-log-controller
LAST DEPLOYED: Wed May 16 18:43:06 2018
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1beta1/ClusterRoleBinding
NAME AGE
alibaba-log-controller 0s
==> v1beta1/DaemonSet
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
logtail 2 2 0 2 0  0s
==> v1beta1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
alibaba-log-controller 1 1 1 0 0s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
logtail-ff6rf 0/1 ContainerCreating 0 0s
logtail-q5s87 0/1 ContainerCreating 0 0s
alibaba-log-controller-7cf6d7dbb5-qvn6w 0/1 ContainerCreating 0 0s
==> v1/ServiceAccount
NAME SECRETS AGE
alibaba-log-controller 1 0s
==> v1beta1/CustomResourceDefinition
名前年齢
aliyunlogconfigs.log.alibabacloud.com 0s
==> v1beta1/ClusterRole
alibaba-log-controller 0s
[SUCCESS] install helm package : alibaba-log-controller success.

helm Status alibaba-log-controllerを実行して、Pod の現在のステータスを確認できます。 すべてのステータスが成功すると、インストールは成功です。

インストールが正常に完了したら、Log Service コンソールにログインします。 自動的に作成された Log Service プロジェクトが、コンソールに表示されます。 (プロジェクトがたくさんある場合は、キーワードk8s-logで検索してください。)

自分で構築した Kubernetes をインストールする

制限事項
  1. Kubernetes クラスタは、バージョン 1.8 以降でなければなりません。
  2. Helm 2.6.4 以降がインストールされていなければなりません。
インストール手順
  1. Log Service コンソールで、プロジェクトを作成します。 プロジェクト名は、k8s-log-custom-で始める必要があります。
  2. 次のコマンドで、パラメーターをご自分のパラメーターに置き換え、コマンドを実行します。
    wget http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/alicloud-log-k8s-custom-install.sh -O alicloud-log-k8s-custom-install.sh; chmod 744 ./alicloud-log-k8s-custom-install.sh; sh ./alicloud-log-k8s-custom-install.sh {your-project-suffix} {region-id} {aliuid} {access-key-id} {access-key-secret}

    パラメーターと説明は次のとおりです。

    名前 説明
    {your-project-suffix} 2 番目の手順で作成したプロジェクト名のk8s-log-custom-の後の部分。 たとえば、作成したプロジェクトがk8s-log-custom-xxxxの場合 、xxxxを入力します。
    {regionId} プロジェクトが配置されているリージョンの ID。 Service endpointを表示できます。たとえば、中国 (杭州) のリージョン ID は、 cn-hangzhou です。
    {aliuid} ユーザー ID は、Alibaba Cloud マスターアカウントのユーザー IDで置き換えてください。 マスターアカウントのユーザー IDはString型で、ID の表示方法については、ユーザー ID 設定のセクション 2.1 をご参照ください。
    {access-key-id} アカウントアクセスキー ID。 サブアカウントアクセスキーを使用し、 権限を与えることを推奨します。概要
    {access-key-secret} アカウントのアクセスキーシークレット。 サブアカウントの AccessKey を使用し、 AliyunLogFullAccess 権限を与えることを推奨します。 詳細については、概要を参照してください。
    インストール後、 Log Service はマシングループをプロジェクトに自動的に作成します。 マシングループ名は、k8s-group-${your_k8s_cluster_id}です。
    • Logstoreconfig-operation-logは、k8s-log-${your_k8s_cluster_id} プロジェクトに自動的に作成されます。 この Logstore は削除しないでください。
    • 自分で構築した kubernetes のインストールの後、Logtail はprivileged権限を付与します。それは他のPOD を削除中にcontainer text file busyにならないようにするためです。 詳細については、bug 1468249bug 1441737 、およびissue 34538をご参照ください。
インストールの例
実行に成功すると、次のように出力されます。
[root@iZbp1dsxxxxxqfbiaZ ~]# wget http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/alicloud-log-k8s-custom-install.sh -O alicloud-log-k8s-custom-install.sh; chmod 744 ./alicloud-log-k8s-custom-install.sh; sh ./alicloud-log-k8s-custom-install.sh xxxx cn-hangzhou 165xxxxxxxx050 LTAxxxxxxxxxxx AIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe
....
....
....
NAME:alibaba-log-controller
LAST DEPLOYED: Fri May 18 16:52:38 2018
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1beta1/ClusterRoleBinding
NAME AGE
alibaba-log-controller 0s
==> v1beta1/DaemonSet
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
logtail-ds 2 2 0 2 0  0s
==> v1beta1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
alibaba-log-controller 1 1 1 0 0s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
logtail-ds-7xf2d 0/1 ContainerCreating 0 0s
logtail-ds-9j4bx 0/1 ContainerCreating 0 0s
alibaba-log-controller-796f8496b6-6jxb2 0/1 ContainerCreating 0 0s
==> v1/ServiceAccount
NAME SECRETS AGE
alibaba-log-controller 1 0s
==> v1beta1/CustomResourceDefinition
NAME AGE
aliyunlogconfigs.log.alibabacloud.com 0s
==> v1beta1/ClusterRole
alibaba-log-controller 0s
[INFO] your k8s is using project : k8s-log-custom-xxx, region : cn-hangzhou, aliuid : 1654218*********, accessKeyId : LTAxxxxxxxxxxx
[SUCCESS] install helm package : alibaba-log-controller success.

helm status alibaba-log-controllerを使用してPodの現行状態をチェックできます。 すべてのステータスが成功すると、インストールは完了です。

インストール後、Log Service コンソールにログインします。 自動的に作成された Log Service プロジェクトを表示できます。 プロジェクトがたくさんある場合は、キーワードk8s-logで検索してください。

手順 2. 設定

ログ収集は、デフォルトでコンソール設定モードをサポートしています。 また、Kubernetes マイクロサービス開発の CRD 設定モードも提供されています。 kubectl を使用して設定を管理できます。 2 つの設定の比較は次のとおりです。

- CDRモード コンソールモード
操作上の複雑さ
機能 コンソールモードを除く、高度な設定をサポート。
複雑さ
ネットワーク接続 Kubernetes クラスタに接続 インターネットに接続
デプロイメントコンポーネントとの連携 サポート 未サポート
認証方法 Kubernetes 認証 クラウドアカウント認証

Kubernetes のデプロイメント、および公開プロセスと連携されているため、収集設定管理に CRD メソッドを使用することを推奨します。

コンソール上でコレクションの設定を管理する

必要に応じてコンソールにLogtail収集設定を作成します。 設定手順については、以下をご参照ください。

CRD 管理による取得設定

kubernetes マイクロサービス開発モデルでは、ログサービスも CRD を設定する方法を提供し、kubectl を直接使用して設定を管理できます。また、kubernetes デプロイメントと連携し、公開プロセスをより完全に行うことができます。

詳細については、CRD での Kubernetes ログ収集の設定を参照してください。

その他の操作

Glasonset デプロイメントの移行手順

以前に使用した WebSphere の set メソッドを使用して Log Service をデプロイした場合、設定管理に CRD を使用することはできません。 次の方法で新しいバージョンに移行できます。
アップグレード中に、いくつかのログが複製されます。 CRD 管理設定は、CRD を使用して作成された設定に対してのみ使用できます。 履歴設定は、 CRD モードを使用して作成されていないため、CRD 管理モードはサポートしていません。
  1. 新しいバージョンの形式でインストールすると、インストールコマンドには、以前のkubernetes クラスタで使用されていた Log Service プロジェクト名のパラメーターが最後に追加されます。
    たとえば、プロジェクト名がk8s-log-demoで、クラスタ ID が c12ba2028cxxxxxxxxxx6939f0bの場合、インストールコマンドは次のようになります。
    wget
              http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/alicloud-log-k8s-install.sh -O
              alicloud-log-k8s-install.sh; chmod 744 ./alicloud-log-k8s-install.sh; sh
              ./alicloud-log-k8s-install.sh c12ba2028cxxxxxxxxxx6939f0b k8s-log-demo.
  2. インストールが成功したら、Log Service コンソールで、履歴収集設定を新しいマシングループk8s-group-${your_k8s_cluster_id}に適用します。
  3. 1 分後、履歴収集設定はマシングループの履歴にバインドされます。
  4. ログ収集が正常であれば、以前にインストールした Logtail DaemonSet を削除できます。

同じ Log Service プロジェクトで複数のクラスタを使用する

複数のクラスタを使用して、同じ Log Service プロジェクトにログを収集することができます。 他のクラスタ Log Service コンポーネントをインストールする際、インストールパラメーターの${your_k8s_cluster_id}を、最初にインストールしたクラスタ ID に置き換える必要があります。

たとえば、 ID が abc001、abc002、および abc003 の 3 つのクラスタがあるとします。 3 つのクラスタのインストールパラメーター${your_k8s_cluster_id}は、すべてabc001にする必要があります。

リージョン間の Kubernetes マルチクラスタ共有では、この方法はサポートしていません。

Logtail コンテナログ

Logtail ログは、Logtail コンテナの/usr/local/ilogtail/ディレクトリに格納されており、ファイル名は、ilogtail.LOGおよびilogtail.pluginです。コンテナの stdout に参照の意味はありません。そのため、次の stdout の出力を無視できます。
start umount useless mount points, /shm$|/merged$|/mqueue$
umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c82155/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c22dbe/merged: must be superuser to unmount
......
xargs: umount: exited with status 255; aborting
umount done
start logtail
ilogtail is running
logtail status:
ilogtail is running

Kubernetes クラスタ内のログ関連コンポーネントのステータスを表示する

helm status alibaba-log-controller

alibaba-log-controller の起動に失敗した場合は?

次のようにインストールを実行してください。

  1. インストールコマンドは、kubernetes クラスタのマスターノードで実行されます
  2. インストールコマンドパラメーターは、クラスタ ID に入力されます。

これらの問題によりインストールが失敗した場合は、 helm del —purge alibaba-log-controllerrを使用して、インストールパッケージを削除し、再度インストールを実行してください。

インストールの失敗が続く場合は、チケットを起票し、サポートセンターへお問い合わせください。

Kubernetes クラスタの Logtail DaemonSet のステータスを確認する

kubectl get ds -n kube-systemコマンドを実行し、Logtail の実行状態を確認できます。

Logtail のデフォルトの namespace は、kube-systemです。

Logtail のリソース制限を調整する方法

デフォルトでは、Logtail は最大 40% の CPU と 200M の RAM しか占有できません。 処理速度を上げる必要がある場合は、次の 2 つのセクションでパラメーターを調整する必要があります。

  • YAMLテンプレートのresourceslimitsrequests
  • Logtail 起動設定ファイルのパスは、YAML テンプレートのALIYUN_LOGTAIL_CONFIG環境変数です。 変更方法については、「Logtail 起動設定パラメーター」 をご参照ください。

Logtail DaemonSet の強制更新

logtail-daemonset.yamlファイルを修正後、次のコマンドを実行して、Logtail DaemonSet を強制的に更新します。
kubectl --namespace=kube-system delete ds logtail
kubectl apply -f ./logtail-daemonset.yaml
強制更新中にデータの重複が発生することがあります。

Logtail DaemonSet の設定情報を確認する

'kubectl describe ds logtail -n kube-system'

Logtail のバージョン番号、IP、開始時刻などを確認する

例は次のとおりです。
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl get po -n kube-system -l k8s-app=logtail
NAME READY STATUS RESTARTS AGE
logtail-gb92k 1/1 Running 0 2h
logtail-wm7lw 1/1 Running 0 4d
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl exec logtail-gb92k -n kube-system cat /usr/local/ilogtail/app_info.json
{
   "UUID" : "",
   "hostname" : "logtail-gb92k",
   "instance_id" : "********************************",
   "ip" : "*.*.*.*",
   "logtail_version" : "0.16.2",
   "os" : "Linux; 3.10.0-693.2.2.el7.x86_64; #1 SMP Tue Sep 12 22:26:13 UTC 2017; x86_64",
   "update_time" : "2018-02-05 06:09:01"
}

Logtail の実行ログを表示する

Logtail 実行ログは、/usr/local/ilogtail/ディレクトリに格納されます。 ファイル名は、ilogtail.LOGです。 ファイルは圧縮され、ilogtail.LOG.x.gzとして保存されます。

例は次のとおりです。
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl exec logtail-gb92k -n kube-system tail /usr/local/ilogtail/ilogtail.LOG
[2018-02-05 06:09:02.168693] [INFO] [9] [build/release64/sls/ilogtail/LogtailPlugin.cpp:104] logtail plugin Resume:start
[2018-02-05 06:09:02.168807] [INFO] [9] [build/release64/sls/ilogtail/LogtailPlugin.cpp:106] logtail plugin Resume:success
[2018-02-05 06:09:02.168822] [INFO] [9] [build/release64/sls/ilogtail/EventDispatcher.cpp:369] start add existed check point events, size:0
[2018-02-05 06:09:02.168827] [INFO] [9] [build/release64/sls/ilogtail/EventDispatcher.cpp:511] add existed check point events, size:0 cache size:0 event size:0 success count:0
				

pod の Logtail を再起動する

例は次のとおりです。
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl exec logtail-gb92k -n kube-system /etc/init.d/ilogtaild stop
kill process Name: ilogtail pid: 7
kill process Name: ilogtail pid: 9
stop success
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl exec logtail-gb92k -n kube-system /etc/init.d/ilogtaild start
ilogtail is running