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

設定プロセス

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

ステップ 1.Logtail のインストール

マネージド Kubernetes クラスターの Container Service へのインストール

マネージド Kubernetes クラスターに Logtail をインストールする方法の詳細については、「Log Serviceを使用した Kubernetes クラスターログの収集」の「 Log Serviceコンポーネントの手動インストール」セクションをご参照ください。

Alibaba Cloud Container Service への Kubernetes のインストール

手順
  1. Alibaba Cloud Container Service Kubernetes のマスターノードにログインします。 詳細については、「SSH による Kubernetes クラスターへのアクセス」をご参照ください。
  2. ${your_k8s_cluster_id} を Kubernetes クラスタ ID に置き換え、次のコマンドを実行します。
    wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/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} が自動的に作成されます。

    • config-operation-log という名前の Logstore が k8s-log-${your_k8s_cluster_id} プロジェクトに自動的に作成されます。これは alibaba-log-controller の操作ログの格納に使用されます。 alibaba-log-controller のトラブルシューティングに必要な Logstore なので削除できません。
    • 収集したログを既存プロジェクトに格納するには、sh ./alicloud-log-k8s-install.sh${your_k8s_cluster_id}${your_project_name} インストールコマンドを実行して、プロジェクトがご使用の Kubernetes クラスターがデプロイされるリージョンに属していることを確認します。
インストール例
実行が成功すると、次の情報が出力されます。
[root@iZbp******biaZ ~]# wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/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          <none>         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
NAME                                   AGE
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-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/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。 サービスエンドポイント を表示できます。たとえば、China East 1 (Hangzhou) のリージョン ID は cn-hangzhou です。
    {aliuid} ユーザー ID (AliUid) です。 パラメータを Alibaba Cloud アカウント ID AliUid に置き換える必要があります。
    AliUid 文字のストリングです。 ご使用の AliUid の表示方法の詳細については、「 Alibaba Cloud ECS インスタンス以外または他のアカウントの ECS インスタンスからログを収集する」のステップ 1 をご参照ください。
    {access-key-id} アカウントアクセスキー ID。 サブアカウントの AccessKey を使用し、AliyunLogFullAccess 権限を与えることを推奨します。 詳細については、「概要」をご参照ください。
    {access-key-secret} アカウントのアクセスキーシークレット。 サブアカウントの AccessKey を使用し、AliyunLogFullAccess 権限を与えることを推奨します。 詳細については、「概要」をご参照ください.
    インストール後、 Log Service はマシングループをプロジェクトに自動的に作成します。 マシングループ名は、k8s-group-${your_k8s_cluster_id} です。
    • Logstore config-operation-log は、k8s-log-${your_k8s_cluster_id} プロジェクトに自動的に作成されます。 この Logstore は削除しないでください。
    • 自分で構築した kubernetes のインストール後、他の POD を削除中に container text file busy エラーが発生しないようにするために、Logtail は privileged 権限を付与します。 詳細については、『bug 1468249』、『bug 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          <none>         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 : ***************, accessKeyId : LTA**********
[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 つのモードの比較です。

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

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

コンソール上でのコレクション構成の管理

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

CRD 管理による取得設定

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

詳細は、「CRD での Kubernetes ログ収集の設定」をご参照ください。

その他の操作

DaemonSet デプロイの移行手順

以前に使用した WebSphere の set メソッドを使用して Log Service をデプロイした場合、設定管理に CRD を使用することはできません。 次の方法で新しいバージョンに移行できます。
アップグレード中に、いくつかのログが複製されます。 CRD 管理設定は、CRD を使用して作成された設定に対してのみ使用できます。 履歴設定は、CRD モードを使用して作成されていないため、CRD 管理モードはサポートしていません。
  1. 新しいバージョンの形式でインストールすると、インストールコマンドには、以前のkubernetes クラスタで使用されていた Log Service プロジェクト名のパラメーターが最後に追加されます。
    たとえば、プロジェクト名が k8s-log-demo で、クラスタ ID が c12ba2028cxxxxxxxxxx6939f0b の場合、インストールコマンドは次のようになります。
    wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/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 に置き換える必要があります。

<p class="p">たとえば、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 です。

バージョン番号、IP、および Logtail の起動時間の確認

例:
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl get po -n kube-system | grep logtail
NAME            READY     STATUS    RESTARTS   AGE
logtail-ds-gb92k   1/1       Running   0          2h
logtail-ds-wm7lw   1/1       Running   0          4d
[root@iZbp1dsu6v77zfb40qfbiaZ ~]# kubectl exec logtail-ds-gb92k -n kube-system cat /usr/local/ilogtail/app_info.json
{
   "UUID" : "",
   "hostname" : "logtail-ds-gb92k",
   "instance_id" : "0EBB2B0E-0A3B-11E8-B0CE-0A58AC140402_172.20.4.2_1517810940",
   "ip" : "172.20.4.2",
   "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-ds-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