您可以通过使用Logtail采集Windows容器上的应用信息。本文介绍如何使用Logtail收集Windows容器日志。
前提条件
- 已创建Kubernetes集群,并且在创建集群时选中使用日志服务。更多信息,请参见创建Kubernetes托管版集群。
- 已创建Windows节点池。更多信息,请参见创建Windows节点池。
- 已通过kubectl连接ACK集群。具体操作,请参见步骤二:选择集群凭证类型。
使用限制
- 目前Logtail仅支持采集容器的标准输出。如果容器应用的输出日志是基于Windows的日志服务或记录在文件内,推荐您使用LogMonitor作为容器运行入口,把非标准输出的日志管道化输出到标准输出。更多信息,请参见LogMonitor和LogMonitor介绍。
- 目前Logtail仅支持DockerEE作为运行时的节点,暂不支持ContainerD。
为Windows节点安装Logtail v1.1.x
重要 Logtail v1.1.x依赖Windows工作节点上的特权托管进程,仅适用于集群内节点池默认含有
windows.alibabacloud.com/deployment-topology=2.0
标签的Windows工作节点。使用以下YAML模板将Logtail以DaemonSet方式部署至Windows节点上。
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
# use the below volume configuration since v1.1+.
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"
# --- configure the logtail file configuration generation --- #
## "ALICLOUD_LOGTAIL_CONFIG_PATH" specifies the configuration path of logtail,
## if the path is blank, the configuration will generate
## via "ALICLOUD_LOGTAIL_CONFIG_ITEM__" prefix environment variables.
## "ALICLOUD_LOGTAIL_CONFIG_ITEM__" needs to be combined with a type indicator to
## display the type of the configuration item, the following indicators are optional.
## - INT__ : 64-bit signed integer.
## - UINT__ : 64-bit unsigned integer.
## - DOUB__ : 64-bit floating-point number.
## - BOOL__ : boolean.
## - STR__ : string, default type.
## - {<TYPE>}S__ : array in <TYPE> with vertical bar separated format.
## P.S: don't treate "ALICLOUD_LOGTAIL_CONFIG_ITEM__" as a silver bullet,
## when the configuration is too complicated,
## please mount a detailed configuration file on "ALICLOUD_LOGTAIL_CONFIG_PATH".
- 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
# --- configure the logtail configuration --- #
## "ALICLOUD_LOG_REGION" specifies the region of the Alibaba Cloud,
## it will discover the region automatically if blank.
## "ALICLOUD_LOG_USER_ID" is the same as "ALIYUN_LOGTAIL_USER_ID",
## which is to specify the uid of Alibaba Cloud SLS service.
## "ALICLOUD_LOG_PROJECT" is the same as "ALICLOUD_LOG_DEFAULT_PROJECT",
## which is to specify the project of Alibaba Cloud SLS service.
## "ALICLOUD_LOG_MACHINE_GROUP" is the same as "ALIYUN_LOGTAIL_USER_DEFINED_ID"
## and "ALICLOUD_LOG_DEFAULT_MACHINE_GROUP",
## which is to specify the machine group of Alibaba Cloud SLS service.
## "ALICLOUD_LOG_ENDPOINT" specifies the endpoint of the Alibaba Cloud SLS service.
## "ALICLOUD_LOG_ECS_FLAG" specifies whether to log the ECS flags.
## "ALICLOUD_LOG_DOCKER_ENV_CONFIG"
## "ALICLOUD_LOG_ENV_TAGS" is the same as "ALIYUN_LOG_ENV_TAGS",
## which is to specify the environment variables to be recorded,
## it is in form of vertical bar separated list.
- 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信息。
image: registry-vpc.cn-hangzhou.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: RollingUpdate
为Windows节点安装Logtail v1.0.x
重要 该版本仅适用于v1.18.x及之前版本的ACK集群使用。
执行以下YAML模板将Logtail以DaemonSet方式部署至Windows节点上。
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:
# --- configure the logtail file configuration generation --- #
## "ALICLOUD_LOGTAIL_CONFIG_PATH" specifies the configuration path of logtail,
## if the path is blank, the configuration will generate
## via "ALICLOUD_LOGTAIL_CONFIG_ITEM__" prefix environment variables.
## "ALICLOUD_LOGTAIL_CONFIG_ITEM__" needs to be combined with a type indicator to
## display the type of the configuration item, the following indicators are optional.
## - INT__ : 64-bit signed integer.
## - UINT__ : 64-bit unsigned integer.
## - DOUB__ : 64-bit floating-point number.
## - BOOL__ : boolean.
## - STR__ : string, default type.
## - {<TYPE>}S__ : array in <TYPE> with vertical bar separated format.
## P.S: don't treate "ALICLOUD_LOGTAIL_CONFIG_ITEM__" as a silver bullet,
## when the configuration is too complicated,
## please mount a detailed configuration file on "ALICLOUD_LOGTAIL_CONFIG_PATH".
- 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
# --- configure the logtail configuration --- #
## "ALICLOUD_LOG_REGION" specifies the region of the Alibaba Cloud,
## it will discover the region automatically if blank.
## "ALICLOUD_LOG_USER_ID" is the same as "ALIYUN_LOGTAIL_USER_ID",
## which is to specify the uid of Alibaba Cloud SLS service.
## "ALICLOUD_LOG_PROJECT" is the same as "ALICLOUD_LOG_DEFAULT_PROJECT",
## which is to specify the project of Alibaba Cloud SLS service.
## "ALICLOUD_LOG_MACHINE_GROUP" is the same as "ALIYUN_LOGTAIL_USER_DEFINED_ID"
## and "ALICLOUD_LOG_DEFAULT_MACHINE_GROUP",
## which is to specify the machine group of Alibaba Cloud SLS service.
## "ALICLOUD_LOG_ENDPOINT" specifies the endpoint of the Alibaba Cloud SLS service.
## "ALICLOUD_LOG_ECS_FLAG" specifies whether to log the ECS flags.
## "ALICLOUD_LOG_DOCKER_ENV_CONFIG"
## "ALICLOUD_LOG_ENV_TAGS" is the same as "ALIYUN_LOG_ENV_TAGS",
## which is to specify the environment variables to be recorded,
## it is in form of vertical bar separated list.
- 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信息。
image: registry-vpc.cn-hangzhou.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: RollingUpdate
部署添加Logtail的应用
在Windows节点上添加Logtail后,使用以下应用模板检验添加的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
name: 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"]
env:
######### 配置环境变量 ###########
- name: aliyun_logs_logtail-stdout
value: stdout
- name: aliyun_logs_logttail-tags
value: tag1=v1
#################################
nodeSelector:
beta.kubernetes.io/os: windows
tolerations:
- effect: NoSchedule
key: os
operator: Equal
value: windows
成功部署示例应用后,您可查看日志信息。具体操作,请参见查询和分析日志。