by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(防止爬虫):http://blog.liuyingguang.cn
OpenBI问答社区:http://openbi.liuyingguang.cn/
继续上篇文章java logback 向 EFK 写入日志,
此篇文章主要讲述在docker环境下EFK与logback的整合,主要解决java项目在docker环境下,向EFK输出日志的问题:
1. 上篇文章中的方法虽然可以向EFK写入日志,但是在集群环境中,无法区分容器,除非自己在日志的msg中写入相关信息,然而往往会被分词器分开,这点比较麻烦
2. 虽然上篇文章中的logback-more-appenders可以使用DataFluentAppender方式来向elasticsearch添加额外的fields,但是这里也同时存在一个问题,就是msg中的部分信息,会被拆分成多个field,导致msg信息不再完整,以及从kibana上面查看日志非常不便
下面来一起看看我是如何解决的(部分内容跟上篇文章同)
详情参考部署文档CentOS7 安装EFK(elasticsearch、fluent、kibana)进行Docker下日志搜集
源码地址:fluentd-logback-appender(此插件是我基于logback-more-appenders源码进行的改进,使得在使用FluentLogbackAppender类的时候,也可以添加额外的fields)
关于此插件的打包,这里不多做说明,相应jar包可以在刘迎光的nexus中找到,搜索“fluentd-logback-appender”即可
pom.xml文件添加依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.firewarm</g
最近刚刚入手研究kubernetes,运行容器的时候,发现一直处于ContainerCreating状态,悲了个催,刚入手就遇到了点麻烦,下面来讲讲如何查找问题及解决的
运行容器命令:
[root@master-149 ~]# kubectl run my-alpine --image=alpine --replicas=2 ping www.baidu.com
查看pods状态
[root@master-149 ~]# kubectl get podsNAME READY STATUS RESTARTS AGEmy-alpine-2150523991-knzcx 0/1 ContainerCreating 0 6mmy-alpine-2150523991-lmvv5 0/1 ContainerCreating 0 6m
一直处于ContainerCreating状态,开始查找原因
执行如下命令:
[root@master-149 ~]# kubectl describe pod my-alpineName: my-alpine-2150523991-knzcxNamespace: defaultNode: node-150/192.168.10.150Start Time: Sat, 19 Nov 2016 18:20:52 +0800Labels: pod-template-hash=2150523991,run=my-alpineStatus: PendingIP:Controllers: ReplicaSet/my-alpine-2150523991Containers:my-alpine:Container ID:Image: alpineImage ID:Port:Args:pingw
<!-- jetty dependecies begin --><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-server</artifactId><version>9.1.4.v20140401</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-webapp</artifactId><version>9.1.4.v20140401</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-continuation</artifactId><version>9.1.4.v20140401</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-jsp</artifactId><version>9.1.4.v20140401</version></dependency><!-- jetty dependecies end -->
运行war包的类
public class WebAppWarServer {public static void main(String[] args) throws Exception {Server server = new Server(8080);
==首先要升级到CentOS7.2,有一个XFS的Bug在7.2系统被修复了。==
echo "overlay" > /etc/modules-load.d/overlay.conf# lsmod | grep overoverlay 42451 0reboot
创建文件夹
mkdir -p /etc/systemd/system/docker.service.d
加入参数:
cat >/etc/systemd/system/docker.service.d/override.conf <<E[Service]ExecStart=ExecStart=/usr/bin/docker daemon --storage-driver=overlay -H fd://E
重启
systemctl daemon-reloadsystemctl restart docker
echo "overlay" > /etc/modules-load.d/overlay.conflsmod | grep overreboot
rm -rf /var/lib/docker
vi /usr/lib/systemd/system/docker.service
修改配置:
找到如下一行
ExecStart=/usr/bin/dockerd
加入参数:
--storage-driver=overlay
重启
systemctl daemon-reloadsystemctl restart docker
by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuy