Log Service は Alibaba Cloud Container Service の Kubernetes クラスターと連携されています。 クラスター作成時に、コンテナーの標準出力およびコンテナーのテキストファイルなどの Kubernetes クラスターに関するコンテナーログを素早く収集するために、Log Service を有効化します。
Kubernetes クラスター作成時の Log Service の有効化
Kubernetes クラスターをまだ作成していない場合、このセクションの以下の手順で Log Serivce を有効化してください。
- Container Service コンソール にログインします。
- 左側のナビゲーションウィンドウで [クラスター] をクリックし、右上隅の [Kubernetes クラスターの作成] をクリックします。
- [作成] ページのクラスターの設定方法に関しては、「クラスターの作成」をご参照ください。
- ページの下部まで移動し、[Log Service の使用] チェックボックスをオンにします。 新しく作成された Kubernetes クラスターに、ログプラグインがインストールされます。
- [Log Service の使用] チェックボックスをオンにした際、プロジェクトオプションが表示されます。 プロジェクトは、ログを管理する Log Service
での単位です。 プロジェクトについて詳しくは、「プロジェクト」をご参照ください。 現在、2 つの方法によりプロジェクトを使用できます。
- 既存のプロジェクトを選択し、収集したログを管理します。
- システムにより、収集したログを管理する新しいプロジェクトが自動的に作成されます。 プロジェクト名は自動的に
k8s-log-{ClusterID}
と設定されます。"ClusterID" は 作成された Kubernetes クラスターの固有識別子です。
- 既存のプロジェクトを選択し、収集したログを管理します。
- 設定完了後、右上隅の [作成] をクリックします。 表示されたダイアログボックスで、[OK] をクリックします。
クラスターの作成が完了した後、新しく作成された Kubernetes クラスターが [クラスターリスト] ページに表示されます。
作成された Kubernetes クラスターでの Log Service コンポーネントの手動インストール
Kubernetes クラスターを作成している場合、Log Service を使用するには、このセクションの以下の方法に従ってください。
- Log Service コンポーネントがインストールされていません。 コンポーネントを手動でインストールしてください。
- 以前のバージョン の Log Service コンポーネントがインストールされています。 コンポーネントをアップグレードしてください。 コンポーネントをアップグレードしない場合、ログ収集の設定には、Log Service コンソールまたは CRD (custom resource difinition) のみが使用できます。
Log Service コンポーネントのバージョンの確認
- Cloud Shell を使用してターゲット Kubernetes クラスターに接続してください。
詳細は、「Cloud Shell 上での kubectl を使用した Kubernetes クラスターの管理」をご参照ください。
- 以下のコマンドを実行し、アップグレードまたは移行操作が必要かどうかを素早く判断します。
$ kubectl describe daemonsets -n kube-system logtail-ds | grep ALICLOUD_LOG_DOCKER_ENV_CONFIG
ALICLOUD_LOG_DOCKER_ENV_CONFIG: true
が表示された場合、アップグレードまたは移行の必要がなく、コンポーネントを直接使用することができます。- 他の結果が表示された場合は、さらにコンポーネントを確認します。
- 以下のコマンドを実行し、コンポーネントのインストールに Helm を使用するかどうか判断します。
$ helm get alibaba-log-controller | grep CHART CHART: alibaba-cloud-log-0.1.1
- 出力の 0.1.1 が Log Service コンポーネントのバージョンです。 0.1.1 およびそれ以降のバージョンをお使いください。 バージョンがそれ以前の場合、Log Service コンポーネントのアップグレードを参照して、コンポーネントをアップグレードしてください。 有効なバージョンのコンポーネントをインストールするために Helm を使用している場合は、次の手順を飛ばすことができます。
- 結果が出力されない場合、コンポーネントは Helm を使用してインストールされています。 ただし、DeamonSet インストール方法が使用されている場合があります。 次の手順に従って、さらに確認してください。
- DeamonSet は旧バージョンまたは新バージョンです。
$ kubectl get daemonsets -n kube-system logtail
- 出力がない場合または
No resources found.
が出力された場合、Log Service コンポーネントがインストールされていません。 インストール方法について詳しくは、「Log Service コンポーネントの手動インストール」をご参照ください。 - 正しい結果が出力された場合、旧バージョンの DaemonSet がアップグレードが必要なコンポーネントのインストールに使用されています。 コンポーネントのアップグレードについて詳しくは、「Log Service コンポーネントのアップグレード」をご参照ください。
- 出力がない場合または
Log Service コンポーネントの手動インストール
- Cloud Shell を使用してターゲット Kubernetes クラスターに接続します。
詳細は、「Cloud Shell 上での kubectl を使用した Kubernetes クラスターの管理」をご参照ください.
- Cloud Shell で
echo $ ALIBABA_CLOUD_ACCOUNT_ID
コマンドを使用して、Alibaba Cloud アカウントの ID を取得します。 - 以下のコマンドを実行します。
注 このコマンドでは、必要に応じて次のパラメーターを指定する必要があります。
$ {your_k8s_cluster_id}
、{your_ali_uid}
および{your_k8s_cluster_region_id}
wget https://acs-logging.oss-cn-hangzhou.aliyuncs.com/alicloud-k8s-log-installer.sh -O alicloud-k8s-log-installer.sh; chmod 744 ./alicloud-k8s-log-installer.sh; ./alicloud-k8s-log-installer.sh --cluster-id ${your_k8s_cluster_id} --ali-uid ${your_ali_uid} --region-id ${your_k8s_cluster_region_id}
インストール例
[root@iZbp******biaZ ~]# wget https://acs-logging.oss-cn-hangzhou.aliyuncs.com/alicloud-k8s-log-installer.sh -O alicloud-k8s-log-installer.sh; chmod 744 ./alicloud-k8s-log-installer.sh; ./alicloud-k8s-log-installer.sh --cluster-id c77a*****************0106 --ali-uid 19*********19 --region-id cn-hangzhou
--2018-09-28 15:25:33-- https://acs-logging.oss-cn-hangzhou.aliyuncs.com/alicloud-k8s-log-installer.sh
Resolving acs-logging.oss-cn-hangzhou.aliyuncs.com... 118.31.219.217, 118.31.219.206
Connecting to acs-logging.oss-cn-hangzhou.aliyuncs.com|118.31.219.217|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2273 (2.2K) [text/x-sh]
Saving to: ‘alicloud-k8s-log-installer.sh’
alicloud-k8s-log-installer.sh 100%[================================================================================================================>] 2.22K --. -KB/s in 0s
2018-09-28 15:25:33 (13.5 MB/s) - ‘alicloud-k8s-log-installer.sh’ saved [2273/2273]
--2018-09-28 15:25:33-- http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/alibaba-cloud-log.tgz
Resolving logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com... 118.31.219.49
Connecting to logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com|118.31.219.49|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2754 (2.7K) [application/x-gzip]
Saving to: ‘alibaba-cloud-log.tgz’
alibaba-cloud-log.tgz 100%[================================================================================================================>] 2.69K --. -KB/s in 0s
2018-09-28 15:25:34 (79.6 MB/s) - ‘alibaba-cloud-log.tgz’ saved [2754/2754]
[INFO] your k8s is using project : k8s-log-c77a92ec5a3ce4e64a1bf13bde1820106
NAME: alibaba-log-controller
LAST DEPLOYED: Fri Sep 28 15:25:34 2018
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1beta1/CustomResourceDefinition
NAME AGE
aliyunlogconfigs.log.alibabacloud.com 0s
==> v1beta1/ClusterRole
alibaba-log-controller 0s
==> 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-6v979 0/1 ContainerCreating 0 0s
logtail-ds-7ccqv 0/1 ContainerCreating 0 0s
alibaba-log-controller-84d8b6b8cf-nkrkx 0/1 ContainerCreating 0 0s
==> v1/ServiceAccount
NAME SECRETS AGE
alibaba-log-controller 1 0s
[SUCCESS] install helm package : alibaba-log-controller success.
Log Service コンポーネントのアップグレード
Helm または DeamonSet を使用して、以前のバージョンの Log Service コンポーネントをインストールしている場合、以下のようにコンポーネントのアップグレードまたは移行を行ってください。Helm による Log Service コンポーネントのアップグレード (推奨)
- 以下のコマンドを実行し、Log Service コンポーネントの最新の Helm パッケージをダウンロードします。
wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/alibaba-cloud-log.tgz -O alibaba-cloud-log.tgz
- Helm アップグレード使用して、コンポーネントをアップグレードします。 コマンドは以下のようになります。
helm get values alibaba-log-controller --all > values.yaml && helm upgrade alibaba-log-controller alibaba-cloud-log.tgz --recreate-pods -f values.yaml
DaemonSet による Log Service コンポーネントのアップグレード
DaemonSet テンプレートを変更することにより、Log Service コンポーネントをアップグレードできます。 イメージアカウントが acs の場合、コンテナレジストリで表示できる最新バージョンに、イメージタグをアップグレードします。 イメージアカウントが acs の場合、コンテナレジストリ で表示できる最新バージョンに、イメージタグをアップグレードします。
- タグのアップグレードで Logtail のローリング更新が有効になっていない場合、Logtail ポッドを手動で削除して、Logtail 更新をトリガーする必要があります。
- マスターノードを含むすべてのノードで、Logtail が実行されているかどうかを確認する必要があります。 Logtail がすべてのノードで実行されない場合、 Logtail の tolerations を設定する必要があります。
tolerations:
- operator: "Exists"
詳細については、「最新の Helm パッケージ構成」をご参照ください。
DeamonSet の移行
このアップグレード方法は、Log Service コンポーネントバージョンの確認 の際に、旧バージョンの DaemonSet によりコンポーネントがインストールされたことを確認した場合に当てはまります。 この方法は、Container Service の Log Service 設定をサポートしていません。 以下のようにコンポーネントをアップグレードできます。
- インストールコマンドの最後に、お使いの Kubernetes クラスターにより使用される Log Service のプロジェクト名をパラメーターとして追加します。
たとえば、プロジェクト名が "k8s-log-demo" で、クラスター ID が " c12ba2028cxxxxxxxxxx6939f0b" の場合、インストールコマンドは次のようになります。
wget https://acs-logging.oss-cn-hangzhou.aliyuncs.com/alicloud-k8s-log-installer.sh -O alicloud-k8s-log-installer.sh; chmod 744 ./alicloud-k8s-log-installer.sh; ./alicloud-k8s-log-installer.sh --cluster-id c12ba2028cxxxxxxxxxx6939f0b --ali-uid 19*********19 --region-id cn-hangzhou --log-project k8s-log-demo
- インストールが正常に完了したら、Log Service コンソール にログインします。
- インストールが正常に完了したら、Log Service コンソール にログインします。
- Log Service コンソールで、新しいマシングループ
k8s-group-${your_k8s_cluster_id}
に、プロジェクトの履歴収集設定および Logstore を適用します。 - 1 分後、履歴収集設定はマシングループの履歴からバインドを解除されます。
- ログ収集が正常である場合、以前にインストールした Logtail DaemonSet を削除できます。
アプリケーション作成時の Log Service の設定
Container Service により、アプリケーション作成時に、コンテナーログの収集のため Log Service を設定することができます。 現在、アプリケーション作成に、コンソールまたは YAML テンプレートを使用できます。
コンソールによるアプリケーションの作成
- Container Service コンソール にログインします。
- Container Service-Kubernetes の左側のナビゲーションウィンドウで、 をクリックします。 右上隅の [イメージによる作成] をクリックします。
- 名前、クラスター、名前空間、レプリカ および タイプ を設定し、 [次へ] をクリックします。
- コンテナー ページ上で、Tomcat イメージを選択し、コンテナーのログ収集を設定します。
以下では Log Service に関係する設定についてのみ説明しています。 他のアプリケーション設定について詳しくは、「イメージを利用したデプロイアプリケーションの作成」をご参照ください。
- Log Service を設定します。 + 記号をクリックし、Logstore 名 および ログパス からなる設定を作成します。
- Logstore 名: 収集されたログが保存される Logstore を指定します。 指定された Logstore が存在しない場合、クラスターに関連づけられた Log
Service のプロジェクトに Logstore がシステムにより自動的に作成されます。
注 Logstore 名にはアンダースコア (_) を使用することはできません。 代わりにハイフン (-) を使用できます。
- ログパス: 収集されたログがあるパスを指定します。 たとえば、"/usr/local/tomcat/logs/catalina. *.log" を使用し、Tomcat のテキストログを収集します。
注 ログパスを stdout として指定した場合、コンテナーの標準出力および標準エラー出力が収集されます。
それぞれの設定は自動的に、対応する Logstore の設定として作成されます。 デフォルトでは、ログ収集にシンプルモード (1 行ずつ) が使用されます。 多くの収集モードを使用するには、ログインし、Log Service コンソールに移動します。対応するプロジェクト (デフォルトでは、"k8s-log" というプレフィックスをもちます) および設定を変更する Logstore を入力します。
- Logstore 名: 収集されたログが保存される Logstore を指定します。 指定された Logstore が存在しない場合、クラスターに関連づけられた Log
Service のプロジェクトに Logstore がシステムにより自動的に作成されます。
- タグをカスタマイズします。 + 記号をクリックし、新しいカスタムタグを作成します。 それぞれのカスタムタグは、収集したログに追加されるキーとバリューのペアです。 カスタムタグを使用し、コンテナーログにマークをすることができます。
たとえば、バージョン番号としてカスタムタグを作成できます。
- コンテナーのすべての設定が完了したら、右上隅の [次へ] をクリックし、次の設定を実行します。 詳細は、「イメージを利用したデプロイアプリケーションの作成」をご参照ください。
YAML テンプレートによるアプリケーションの作成
- Container Service コンソール にログインします。
- Container Service-Kubernetes の左側のナビゲーションウィンドウで、 を選択します。 右上隅の [テンプレートによる作成] をクリックします。
- YAML テンプレートの構文は Kubernetes 構文のものと同じです。 コンテナー用の収集設定を指定するため、コンテナーへ 収集設定 および カスタムタグ を追加し、対応する volumeMounts およびボリュームを作成するため "env" を使用する必要があります。 シンプルポッドの例は以下のようになります。
apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: ######### Configure environment variables ########### - name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log - name: aliyun_logs_mytag1_tags value: tag1=v1 ############################### ######### Configure vulume mount ########### volumeMounts: - name: volumn-sls-mydemo mountPath: /var/log volumes: - name: volumn-sls-mydemo emptyDir: {} ###############################
- ニーズに合わせて、3 つのパートを順番に設定します。
- 1 つ目のパートでは、環境変数を使用し、収集設定 および カスタムタグ を作成します。 設定に関係するすべての環境変数は、
aliyun_logs_
というプレフィックスを持ちます。 - 収集設定の作成に関するルールは、以下のようになります。
- name: aliyun_logs_{Logstore name} value: {log path}
例として、2 つの収集設定を作成します。
aliyun_logs_log-stdout
"env" により、"log-stdout" という名前の Logstore および stdout のログパスを含む設定を作成します。 コンテナーの標準出力は "log-stdout" という名前の Logstore に収集され保存されます。注 Logstore 名にはアンダースコア (_) を使用できません。 代わりにハイフン (-) を使用できます。 - カスタムタグ の作成に関するルールは、以下のようになります。
タグの設定後にコンテナーのログが収集された場合、タグに対応するフィールドが自動的に Log Service にアタッチされます。- name: aliyun_logs_{a name without '_'}_tags value: {Tag name}={Tag value}
- 収集設定に stdout ログパスではないパスが指定された場合、これに対応する volumeMounts を作成します。
たとえば、"/var/log/*.log" ログパスが収集設定に追加され、それにより "/var/log" volumeMounts が追加されます。
- YAML テンプレートの作成が完了したら、[デプロイメント] をクリックし、テンプレートの設定を実行する Kubernetes クラスターに配信します。
ログ収集の制御に環境変数を設定する
パラメーター | 説明 | 例 | 備考 |
---|---|---|---|
aliyun_logs_{key} |
|
|
|
aliyun_logs_{key}_tags |
任意。 ログの特定に使用されます。 このパラメーター値の形式は、{tag-key}={tag-value} です。 |
|
- |
aliyun_logs_{key}_project |
任意。 収集したログを保存するため、Log Service 内のプロジェクトを指定するために使用されます。 このパラメーターを設定しない場合、ログはターゲット Kubernetes クラスターに設定したプロジェクトに収集されます。 |
|
Logtail があるリージョンと同じリージョンに、プロジェクトを設定する必要があります。 |
aliyun_logs_{key}_logstore |
任意。 Log Service の Logstore を指定するために使用されます。 このパラメーターを指定しない場合、収集したログの保存には、{key} という名前の Logstore が使用されます。
|
|
- |
aliyun_logs_{key}_shard |
任意。 Logstore のシャード数の指定に使用されます。 このパラメーター値の範囲は、1~10 です。 このパラメーターを指定しない場合、デフォルトでは、 2 つのシャードが作成されます。 |
|
- |
aliyun_logs_{key}_ttl |
任意。 ログが保存される期間 (日単位) の指定に使用されます。 このパラメータ値の範囲は 1~3650 です。
|
|
- |
aliyun_logs_{key}_machinegroup |
任意。 マシングループの指定に使用されます。 このパラメーターを設定しない場合、デフォルトのマシングループが有効になります。 |
|
- |
シナリオ 1 : 1 つの Logstore に複数のアプリケーションのログデータを収集する
aliyun_logs_{key}_logstore パラメーターを設定して、このタスクを実行します。 たとえば、2 つのアプリケーションの stdout ログを stdout-logstore
という名前の 1 つの Logstore に収集するには、このパラメーターを使用して、 2 つのアプリケーションの環境変数を設定します。
######### set environment variables ###########
- name: aliyun_logs_app1-stdout
value: stdout
- name: aliyun_logs_app1-stdout_logstore
value: stdout-logstore
アプリケーション 2 の環境変数を、以下のとおり設定します。
######### set environment variables ###########
- name: aliyun_logs_app2-stdout
value: stdout
- name: aliyun_logs_app2-stdout_logstore
value: stdout-logstore
- 各プロジェクトで、マシングループを作成し、マシングループの識別子をカスタマイズします。
注 識別子名の形式は、k8s-group-{cluster-id} です。
- 各アプリケーションの環境変数については、以下のパラメーターを設定します。
project
、logstore
、およびmachinegroup
。注machinegroup
パラメーターの値は、手順 1 で作成したマシングループの名前になります。######### set environment variables ########### - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_project value: app1-project - name: aliyun_logs_app1-stdout_logstore value: app1-logstore - name: aliyun_logs_app1-stdout_machinegroup value: app1-machine-group
ログの表示
この例では、コンソールで作成された Tomcat アプリケーションのログを表示します。 アプリケーション設定の完了後、Tomcat アプリケーションのログは、 Log Service に収集され保存されます。 ログの参照は以下のようになります。
- Log Service コンソール にログインします。
- Log Service コンソール にログインします。
- コンソールで、Kubernetes クラスターに対応するプロジェクト (デフォルトは、"k8s-log-{Kubernetes cluster ID}") を選択します。
- [Logstore] リストで、設定で指定された Logstore を確認し、[検索] をクリックします。
- この例では、[ログ検索] ページで、Tomcat アプリケーションの標準出力ログ、およびコンテナー内のテキストログを参照できます。また、ログフィールドにアタッチしたカスタムタグを検索できます。
その他の情報
- デフォルトでは、データを収集するためにシンプルモードが使用されます。つまり、解析なしで 1 行ずつデータが収集されます。 より複雑な設定を実行するには、以下の Log Service ドキュメントを参照し、Log Service コンソールにログインして設定を変更します。
- コンソールを使用したログ収集設定に加えて、CRD 設定により Kubernetes クラスターのログを直接収集することもできます。 詳細は、「CRD での Kubernetes ログ収集の設定」をご参照ください。
- 例外のトラブルシューティングに関しては、「収集エラーをトラブルシュート」をご参照ください。