Logtail を使用して、Windows ノードからアプリケーションログを収集できます。このトピックでは、Windows ノードからアプリケーションログを収集するために Logtail を使用する方法について説明します。
前提条件
Container Service for Kubernetes (ACK) クラスターが作成され、クラスターの作成時に [log Service を有効にする] が選択されています。詳細については、「ACK マネージドクラスターを作成する」をご参照ください。
Windows ノードプールが作成されています。詳細については、「Windows ノードプールを作成する」をご参照ください。
kubectl クライアントが ACK クラスターに接続されています。詳細については、「2. kubeconfig タイプを選択する」をご参照ください。
制限事項
Logtail を使用して収集できるのは、標準出力に出力されるアプリケーションログのみです。アプリケーションログがログファイルに出力される場合、または Windows ロギングサービスを使用して出力される場合は、LogMonitor を使用して Windows ノードから標準出力にアプリケーションログを出力することをお勧めします。詳細については、「LogMonitor」および「LogMonitor の概要」をご参照ください。
Windows ノードに Logtail V1.1.x をインストールする
Logtail V1.1.x は、Windows ノード上の権限を持つプロキシプロセスに依存しています。Logtail V1.1.x は、windows.alibabacloud.com/deployment-topology=2.0 ラベルが付いた Windows ノードにのみデプロイできます。
次の YAML テンプレートを使用して、Logtail を Windows ノードに DaemonSet としてデプロイします。
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
k8s-app: logtail-ds-windows
name: logtail-ds-windows
namespace: kube-system
spec:
revisionHistoryLimit: 10
selector:
matchLabels:
app: logtail-ds-windows
template:
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
labels:
app: logtail-ds-windows
spec:
hostNetwork: true
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: type
operator: NotIn
values:
- virtual-kubelet
- key: beta.kubernetes.io/os
operator: In
values:
- windows
- key: windows.alibabacloud.com/deployment-topology
operator: In
values:
- "2.0"
- matchExpressions:
- key: type
operator: NotIn
values:
- virtual-kubelet
- key: kubernetes.io/os
operator: In
values:
- windows
- key: windows.alibabacloud.com/deployment-topology
operator: In
values:
- "2.0"
containers:
- name: logtail
# v1.1+ からは、以下のボリューム構成を使用してください。 // Japanese comment
command:
- pwsh.exe
- -NoLogo
- -NonInteractive
- -File
- entrypoint.ps1
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: CONTAINER_NAME
value: "logtail"
# --- logtail ファイル構成の生成を構成する --- # // Japanese comment
## "ALICLOUD_LOGTAIL_CONFIG_PATH" は logtail の構成パスを指定します。 // Japanese comment
## パスが空白の場合、構成は // Japanese comment
## "ALICLOUD_LOGTAIL_CONFIG_ITEM__" 接頭辞の環境変数を使用して生成されます。 // Japanese comment
## "ALICLOUD_LOGTAIL_CONFIG_ITEM__" は、構成項目のタイプを表示するためにタイプインジケーターと組み合わせる必要があります。以下のインジケーターはオプションです。 // Japanese comment
## - INT__ : 64 ビット符号付き整数。 // Japanese comment
## - UINT__ : 64 ビット符号なし整数。 // Japanese comment
## - DOUB__ : 64 ビット浮動小数点数。 // Japanese comment
## - BOOL__ : ブール値。 // Japanese comment
## - STR__ : 文字列、デフォルトタイプ。 // Japanese comment
## - {<TYPE>}S__ : 縦棒で区切られたフォーマットの <TYPE> の配列。 // Japanese comment
## P.S: "ALICLOUD_LOGTAIL_CONFIG_ITEM__" を万能薬として扱わないでください。 // Japanese comment
## 構成が複雑すぎる場合は、 // Japanese comment
## 詳細な構成ファイルを "ALICLOUD_LOGTAIL_CONFIG_PATH" にマウントしてください。 // Japanese comment
- name: ALICLOUD_LOGTAIL_CONFIG_PATH
valueFrom:
configMapKeyRef:
key: log-config-path
name: alibaba-log-configuration
- name: ALICLOUD_LOGTAIL_CONFIG_ITEM__DOUB__CPU_USAGE_LIMIT
valueFrom:
configMapKeyRef:
key: cpu-core-limit
name: alibaba-log-configuration
- name: ALICLOUD_LOGTAIL_CONFIG_ITEM__UINT__MEM_USAGE_LIMIT
valueFrom:
configMapKeyRef:
key: mem-limit
name: alibaba-log-configuration
- name: ALICLOUD_LOGTAIL_CONFIG_ITEM__UINT__MAX_BYTES_PER_SEC
valueFrom:
configMapKeyRef:
key: max-bytes-per-sec
name: alibaba-log-configuration
- name: ALICLOUD_LOGTAIL_CONFIG_ITEM__UINT__SEND_REQUESTS_CONCURRENCY
valueFrom:
configMapKeyRef:
key: send-requests-concurrency
name: alibaba-log-configuration
# --- logtail 構成を構成する --- # // Japanese comment
## "ALICLOUD_LOG_REGION" は Alibaba Cloud のリージョンを指定します。 // Japanese comment
## 空白の場合、リージョンは自動的に検出されます。 // Japanese comment
## "ALICLOUD_LOG_USER_ID" は "ALIYUN_LOGTAIL_USER_ID" と同じで、 // Japanese comment
## Alibaba Cloud SLS サービスの UID を指定します。 // Japanese comment
## "ALICLOUD_LOG_PROJECT" は "ALICLOUD_LOG_DEFAULT_PROJECT" と同じで、 // Japanese comment
## Alibaba Cloud SLS サービスのプロジェクトを指定します。 // Japanese comment
## "ALICLOUD_LOG_MACHINE_GROUP" は "ALIYUN_LOGTAIL_USER_DEFINED_ID" // Japanese comment
## および "ALICLOUD_LOG_DEFAULT_MACHINE_GROUP" と同じで、 // Japanese comment
## Alibaba Cloud SLS サービスのマシングループを指定します。 // Japanese comment
## "ALICLOUD_LOG_ENDPOINT" は Alibaba Cloud SLS サービスのエンドポイントを指定します。 // Japanese comment
## "ALICLOUD_LOG_ECS_FLAG" は ECS フラグをログに記録するかどうかを指定します。 // Japanese comment
## "ALICLOUD_LOG_DOCKER_ENV_CONFIG" // Japanese comment
## "ALICLOUD_LOG_ENV_TAGS" は "ALIYUN_LOG_ENV_TAGS" と同じで、 // Japanese comment
## 記録される環境変数を指定します。 // Japanese comment
## これは縦棒で区切られたリストの形式です。 // Japanese comment
- name: ALICLOUD_LOG_REGION
value: ""
- name: ALICLOUD_LOG_USER_ID
valueFrom:
configMapKeyRef:
key: log-ali-uid
name: alibaba-log-configuration
- name: ALICLOUD_LOG_PROJECT
valueFrom:
configMapKeyRef:
key: log-project
name: alibaba-log-configuration
- name: ALICLOUD_LOG_MACHINE_GROUP
valueFrom:
configMapKeyRef:
key: log-machine-group
name: alibaba-log-configuration
- name: ALICLOUD_LOG_ENDPOINT
valueFrom:
configMapKeyRef:
key: log-endpoint
name: alibaba-log-configuration
- name: ALICLOUD_LOG_ECS_FLAG
value: "true"
- name: ALICLOUD_LOG_DOCKER_ENV_CONFIG
value: "true"
- name: ALICLOUD_LOG_ENV_TAGS
value: _node_name_|_node_ip_|working_ip
- name: _node_name_
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
- name: _node_ip_
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: working_ip
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
# 次のイメージアドレスの cn-hangzhou を、クラスターがデプロイされているリージョンに置き換えます。 // Japanese comment
image: registry-cn-hangzhou-vpc.ack.aliyuncs.com/acs/logtail-windows:v1.1.30-aliyun.1
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- name: addon-token
mountPath: 'c:/var/addon'
- name: host-binary
mountPath: 'c:/host/opt/ilogtail/bin'
- name: project-wins-pipe
mountPath: \\.\pipe\rancher_wins
terminationGracePeriodSeconds: 30
priorityClassName: system-node-critical
restartPolicy: Always
tolerations:
- operator: Exists
volumes:
- name: addon-token
secret:
secretName: addon.log.token
items:
- key: addon.token.config
path: token-config
- name: host-binary
hostPath:
path: 'c:/opt/ilogtail/bin'
type: DirectoryOrCreate
- name: project-wins-pipe
hostPath:
path: \\.\pipe\rancher_wins
updateStrategy:
type: RollingUpdateWindows ノードに Logtail V1.0.x をインストールする
このバージョンは、Kubernetes 1.18.x 以前の ACK クラスターにのみ適用されます。
次の YAML テンプレートを使用して、Windows ノードに Logtail をデプロイし、Logtail を DaemonSet として実行します。
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
k8s-app: logtail-ds-windows
name: logtail-ds-windows
namespace: kube-system
spec:
revisionHistoryLimit: 10
selector:
matchLabels:
app: logtail-ds-windows
template:
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
labels:
app: logtail-ds-windows
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: type
operator: NotIn
values:
- virtual-kubelet
- key: beta.kubernetes.io/os
operator: In
values:
- windows
- key: windows.alibabacloud.com/deployment-topology
operator: DoesNotExist
- matchExpressions:
- key: type
operator: NotIn
values:
- virtual-kubelet
- key: kubernetes.io/os
operator: In
values:
- windows
- key: windows.alibabacloud.com/deployment-topology
operator: DoesNotExist
containers:
- name: logtail
command:
- powershell.exe
- -NoLogo
- -NonInteractive
- -File
- entrypoint.ps1
env:
# --- logtail ファイル構成の生成を構成する --- # // Japanese comment
## "ALICLOUD_LOGTAIL_CONFIG_PATH" は logtail の構成パスを指定します。 // Japanese comment
## パスが空白の場合、構成は // Japanese comment
## "ALICLOUD_LOGTAIL_CONFIG_ITEM__" 接頭辞の環境変数を使用して生成されます。 // Japanese comment
## "ALICLOUD_LOGTAIL_CONFIG_ITEM__" は、構成項目のタイプを表示するためにタイプインジケーターと組み合わせる必要があります。以下のインジケーターはオプションです。 // Japanese comment
## - INT__ : 64 ビット符号付き整数。 // Japanese comment
## - UINT__ : 64 ビット符号なし整数。 // Japanese comment
## - DOUB__ : 64 ビット浮動小数点数。 // Japanese comment
## - BOOL__ : ブール値。 // Japanese comment
## - STR__ : 文字列、デフォルトタイプ。 // Japanese comment
## - {<TYPE>}S__ : 縦棒で区切られたフォーマットの <TYPE> の配列。 // Japanese comment
## P.S: "ALICLOUD_LOGTAIL_CONFIG_ITEM__" を万能薬として扱わないでください。 // Japanese comment
## 構成が複雑すぎる場合は、 // Japanese comment
## 詳細な構成ファイルを "ALICLOUD_LOGTAIL_CONFIG_PATH" にマウントしてください。 // Japanese comment
- name: ALICLOUD_LOGTAIL_CONFIG_PATH
valueFrom:
configMapKeyRef:
key: log-config-path
name: alibaba-log-configuration
- name: ALICLOUD_LOGTAIL_CONFIG_ITEM__DOUB__CPU_USAGE_LIMIT
valueFrom:
configMapKeyRef:
key: cpu-core-limit
name: alibaba-log-configuration
- name: ALICLOUD_LOGTAIL_CONFIG_ITEM__UINT__MEM_USAGE_LIMIT
valueFrom:
configMapKeyRef:
key: mem-limit
name: alibaba-log-configuration
- name: ALICLOUD_LOGTAIL_CONFIG_ITEM__UINT__MAX_BYTES_PER_SEC
valueFrom:
configMapKeyRef:
key: max-bytes-per-sec
name: alibaba-log-configuration
- name: ALICLOUD_LOGTAIL_CONFIG_ITEM__UINT__SEND_REQUESTS_CONCURRENCY
valueFrom:
configMapKeyRef:
key: send-requests-concurrency
name: alibaba-log-configuration
# --- logtail 構成を構成する --- # // Japanese comment
## "ALICLOUD_LOG_REGION" は Alibaba Cloud のリージョンを指定します。 // Japanese comment
## 空白の場合、リージョンは自動的に検出されます。 // Japanese comment
## "ALICLOUD_LOG_USER_ID" は "ALIYUN_LOGTAIL_USER_ID" と同じで、 // Japanese comment
## Alibaba Cloud SLS サービスの UID を指定します。 // Japanese comment
## "ALICLOUD_LOG_PROJECT" は "ALICLOUD_LOG_DEFAULT_PROJECT" と同じで、 // Japanese comment
## Alibaba Cloud SLS サービスのプロジェクトを指定します。 // Japanese comment
## "ALICLOUD_LOG_MACHINE_GROUP" は "ALIYUN_LOGTAIL_USER_DEFINED_ID" // Japanese comment
## および "ALICLOUD_LOG_DEFAULT_MACHINE_GROUP" と同じで、 // Japanese comment
## Alibaba Cloud SLS サービスのマシングループを指定します。 // Japanese comment
## "ALICLOUD_LOG_ENDPOINT" は Alibaba Cloud SLS サービスのエンドポイントを指定します。 // Japanese comment
## "ALICLOUD_LOG_ECS_FLAG" は ECS フラグをログに記録するかどうかを指定します。 // Japanese comment
## "ALICLOUD_LOG_DOCKER_ENV_CONFIG" // Japanese comment
## "ALICLOUD_LOG_ENV_TAGS" は "ALIYUN_LOG_ENV_TAGS" と同じで、 // Japanese comment
## 記録される環境変数を指定します。 // Japanese comment
## これは縦棒で区切られたリストの形式です。 // Japanese comment
- name: ALICLOUD_LOG_REGION
value: ""
- name: ALICLOUD_LOG_USER_ID
valueFrom:
configMapKeyRef:
key: log-ali-uid
name: alibaba-log-configuration
- name: ALICLOUD_LOG_PROJECT
valueFrom:
configMapKeyRef:
key: log-project
name: alibaba-log-configuration
- name: ALICLOUD_LOG_MACHINE_GROUP
valueFrom:
configMapKeyRef:
key: log-machine-group
name: alibaba-log-configuration
- name: ALICLOUD_LOG_ENDPOINT
valueFrom:
configMapKeyRef:
key: log-endpoint
name: alibaba-log-configuration
- name: ALICLOUD_LOG_ECS_FLAG
value: "true"
- name: ALICLOUD_LOG_DOCKER_ENV_CONFIG
value: "true"
- name: ALICLOUD_LOG_ENV_TAGS
value: _node_name_|_node_ip_|working_ip
- name: _node_name_
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
- name: working_ip
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: _node_ip_
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
# 次のイメージアドレスの cn-hangzhou を、クラスターがデプロイされているリージョンに置き換えます。 // Japanese comment
image: registry-cn-hangzhou-vpc.ack.aliyuncs.com/acs/logtail-windows:v1.0.20
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- name: docker-pipe
mountPath: \\.\pipe\docker_engine
- name: docker-data
mountPath: c:/ProgramData/docker
readOnly: true
- mountPath: c:/logtail_host
name: root
readOnly: true
terminationGracePeriodSeconds: 30
priorityClassName: system-node-critical
restartPolicy: Always
terminationGracePeriodSeconds: 30
tolerations:
- operator: Exists
volumes:
- name: docker-pipe
hostPath:
path: \\.\pipe\docker_engine
- name: docker-data
hostPath:
path: c:/ProgramData/docker
type: Directory
- name: root
hostPath:
path: c:/
type: Directory
updateStrategy:
rollingUpdate:
maxUnavailable: 10%
type: RollingUpdateLogtail をテストするためにアプリケーションをデプロイする
Logtail を Windows ノードにデプロイした後、次のテンプレートを使用してアプリケーションをデプロイし、アプリケーションを使用して Logtail をテストします。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: logtail-test
name: logtail-test
spec:
replicas: 1
selector:
matchLabels:
app: logtail-test
template:
metadata:
labels:
app: logtail-test
spec:
containers:
- name: nanoserver
image: mcr.microsoft.com/windows/servercore:1809
command: ["powershell.exe"]
args: ["ping -t 127.0.0.1 -w 10000"] // ping -t 127.0.0.1 -w 10000 を実行 // Japanese comment
env:
######### 環境変数を指定する ########### // Japanese comment
- name: aliyun_logs_logtail-stdout
value: stdout
- name: aliyun_logs_logtail-tags
value: tag1=v1
################################# // Japanese comment
nodeSelector:
beta.kubernetes.io/os: windows
tolerations:
- effect: NoSchedule
key: os
operator: Equal
value: windowsアプリケーションがデプロイされた後、ログデータを表示できます。詳細については、「ログクエリと分析のガイド」をご参照ください。