当前位置: 首页 > 工具软件 > log-pilot > 使用案例 >

k8s查看java容器日志_k8s 部署 log-pilot 收集容器标准输出日志和指定路径应用日志...

颛孙英才
2023-12-01

日志系统要求:

1.因开发项目要求,一个pod 内有多个日志路径,需要收集

2.同时需要收集pod 容器的标准输出日志

环境:

本次环境es、kibana 均部署在k8s 集群外,在物理机部署,只需要log-pilot 指定es 地址

具体步骤:

创建 daemonset log-pilot

kubectl get daemonsets.apps log-pilot -o yaml

apiVersion: apps/v1

kind: DaemonSet

metadata:

labels:

k8s-app: log-pilot

name: log-pilot

namespace: default

spec:

selector:

matchLabels:

k8s-app: log-es

template:

metadata:

labels:

k8s-app: log-es

spec:

containers:

- env:

- name: NODE_NAME

valueFrom:

fieldRef:

apiVersion: v1

fieldPath: spec.nodeName

- name: PILOT_LOG_PREFIX

value: mytest #收集容器日志前缀标识,容器日志必须指定同一标识 mytest

- name: FILEBEAT_OUTPUT

value: elasticsearch #日志指定输出位置为 es

- name: ELASTICSEARCH_HOST

value: 10.16.0.178 # es 地址

- name: ELASTICSEARCH_PORT

value: "9200" # es 端口

image: yzsjhl-evdc-node03.opi.com/tj/log-pilot:0.9.5-filebeatv01

imagePullPolicy: IfNotPresent

name: log-pilot

resources:

limits:

memory: 200Mi

requests:

cpu: 100m

memory: 200Mi

securityContext:

capabilities:

add:

- SYS_ADMIN

terminationMessagePath: /dev/termination-log

terminationMessagePolicy: File

volumeMounts:

- mountPath: /var/run/docker.sock

name: sock

- mountPath: /host

name: root

readOnly: true

- mountPath: /var/lib/filebeat

name: varlib

- mountPath: /var/log/filebeat

name: varlog

dnsPolicy: ClusterFirst

restartPolicy: Always

schedulerName: default-scheduler

securityContext: {}

terminationGracePeriodSeconds: 30

volumes:

- hostPath:

path: /var/run/docker.sock

type: ""

name: sock

- hostPath:

path: /

type: ""

name: root

- hostPath:

path: /var/lib/filebeat

type: DirectoryOrCreate

name: varlib

- hostPath:

path: /var/log/filebeat

type: DirectoryOrCreate

name: varlog

updateStrategy:

rollingUpdate:

maxUnavailable: 1

type: RollingUpdate

创建应用容器deployments (java 项目),有三个日志路径需要收集

$ kubectl get deployments.apps gateway-deploy -o yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: gateway-deploy

namespace: default

spec:

replicas: 2

selector:

matchLabels:

app: gateway

release: stabel

strategy:

rollingUpdate:

maxSurge: 25%

maxUnavailable: 25%

type: RollingUpdate

template:

metadata:

creationTimestamp: null

labels:

app: gateway

env: test

release: stabel

spec:

containers:

- env:

- name: TZ

value: Asia/Shanghai

- name: mytest_logs_gatewaystdout # 容器的标准输出日志

value: stdout

- name: mytest_logs_gatewayaccesslogdir #第一个应用日志

value: /data/logs/service-gateway/access/*.log

- name: mytest_logs_gatewayauthlogdir #第二个应用日志

value: /data/logs/service-gateway/auth/*.log

- name: mytest_logs_gatewayrootlogdir #第三个应用日志

value: /data/logs/service-gateway/root/*.log

image: yzsjhl-evdc-node03.opi.com/renren-backend/gateway:20200519161529

imagePullPolicy: IfNotPresent

name: gateway

ports:

- containerPort: 8089

name: http1

protocol: TCP

- containerPort: 20007

name: http2

protocol: TCP

resources: {}

terminationMessagePath: /dev/termination-log

terminationMessagePolicy: File

volumeMounts: # 每个日志 emptyDir都需要挂载在容器日志的指定位置

- mountPath: /data/logs/service-gateway/access

name: gatewayaccess-logs

- mountPath: /data/logs/service-gateway/auth

name: gatewayauth-logs

- mountPath: /data/logs/service-gateway/root

name: gatewayroot-logs

dnsPolicy: ClusterFirst

restartPolicy: Always

schedulerName: default-scheduler

securityContext: {}

terminationGracePeriodSeconds: 30

volumes:

- emptyDir: {} # 每个日志路径都需要指定一个 emptyDir

name: gatewayaccess-logs

- emptyDir: {}

name: gatewayauth-logs

- emptyDir: {}

name: gatewayroot-logs

查看kibana,看是否收集到日志:

 类似资料: