在配置Kubernetes1.5搭建内部测试环境后,日志一直是一个不好解决的问题,由于许多开发人员和测试人员对ELK不适应,推广起来也很费力。为此,在创建Tomcat时,也将日志持久出来,供开发人员和测试人员使用
使用ELK管理日志,
环境说明
*Kubernet 1.5, Centos 7
NFS服务器配置
1. 软件安装
服务安装
使用yum安装
yum -y install nfs-utils rpcbind
2. 软件配置
修改/etc/exports,加入以下内容
/opt/tomcat7logs *(rw,no_root_squash,no_all_squash,sync)
3. 使配置生效
使用下面命令让配置生效。
exportfs -rv
4.节点操作
在每一个节点需要nfs-utils
yum install nfs-utils -y
Tomcat配置
此部分参照网址https://my.oschina.net/newlife111/blog/729921
修改Tomcat配置
修改logging.properties
通过pod名和pod命名空间变量,唯一标识输出文件名。
给所有的log前缀加上{my.pod.name}_{my.pod.namespace}
比如:
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
改成
1catalina.org.apache.juli.AsyncFileHandler.prefix = ${my.pod.name}_${my.pod.namespace}_catalina.
修改 server.xml
也是通过pod名和pod命名空间变量,唯一标识输出文件名,这里标识的是localhost-access日志文件。
找到
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
这个节点,改成
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="${my.pod.name}_${my.pod.namespace}_localhost-access-log" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
修改 catalina.sh
通过容器传入的变量在tomcat中并不能直接使用,需要在tomcat的启动脚本中,在java的启动命令中加上-D选项。找到所有有-Dcatalina.base=”\”$CATALINA_BASE\”” 的上方或下方
-Dmy.pod.name="$MY_POD_NAME"
-Dmy.pod.namespace="$MY_POD_NAMESPACE"
创建Deployment
在yaml文件中加入变量和nfs挂载
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: tomcat-dm
spec:
replicas: 3
selector:
matchLabels:
name: tomcat-dm
template:
metadata:
labels:
name: tomcat-dm
spec:
containers:
- name: tomcat
image: 192.168.7.248:5002/tomcat:1.1
imagePullPolicy: Always
volumeMounts:
- name: logstomcat7
mountPath: /opt/tomcat7/logs
readOnly: false
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
ports:
- containerPort: 8080
volumes:
- name: logstomcat7
nfs:
server: 192.168.7.206
path: /opt/tomcat7logs
测试完成
有什么问题可以直接评论.