最近又重新部署了jenkins持续集成系统,看到之前整理的文章不够详细,于是重新整理了docker下使用jenkins的容器进行持续集成的相关文章,拿来分享下
version: '2'
services:
jenkins:
image: jenkins:2.46.3-alpine
hostname: jenkins
ports:
- "8080:8080"
- "50000:50000"
environment:
- DOCKER_HOST=tcp://192.168.2.10:2375
volumes:
- /home/soft/jenkins_home:/var/jenkins_home
logging:
options:
max-size: "1000k"
这个镜像是基于官方的镜像(jenkins:2.46.3-alpine)修改添加部分定制化内容(增加时区设置为上海,增加docker-17.05.0-ce的执行命令到容器中)的镜像
这里的环境变量主要是给容器内的docker执行文件用的,用来标识docker运行的主机,即默认执行如下命令:
docker -H 192.168.2.10:2375 ···
主要是为了方便容器中的jenkins在使用的“CloudBees Docker Build and Publish plug”插件中执行docker命令
Fluentd并非是专用于日志文件收集的,而是一个通用的信息收集、整理、转发的流式数据处理工具,日志收集只是它十分典型的一个运用场景。重要的是,Fluentd的日志收集功能对容器支持十分完备,远远胜于Logstash等传统日志收集工具。一方面得益于Fluentd社区开发了几种专用于Docker日志文件的收集插件,这些插件能够在Fluentd收集完Docker日志以后自动为它加上容器相关的信息,比较推荐其中的fluent-plugin-docker-metadata-filter这一款插件,它提供的信息颇为齐全。Logstash对于这方面依然比较空缺,GitHub上唯一能够找到的一款社区插件也已经在一年前就停止开发。另一方面,当前Docker官方支持的日志驱动除了默认的使用本地目录,还可以直接发送到远程的日志存储或日志采集服务,而其中日志采集服务目前仅仅支持Splunk和Fluentd,同样没有Logstash等老一辈开源日志工具的踪影。
[root@elk elk]# yum install java-1.8.0-openjdk -y
[root@elk elk]# wget -c https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.3/elasticsearch-2.3.3.rpm
[root@elk elk]# yum localinstall elasticsearch-2.3.3.rpm -y
.....
Installing : elasticsearch-2.3.3-1.noarch 1/1
### NOT starting on installation,
此篇文章主要讲述EFK与logback的整合,主要解决docker的log_driver的日志输出的问题:
1. 首先,处理错误栈信息的时候,docker会将错误栈分解成多行,而使用此插件,则可以将错误栈完整的保存在elasticsearch的一条记录中
2. docker内部的服务可以不用写日志文件了(或者有限循环),如果服务还活着,那么日志一定会被写入到elasticsearch
详情参考部署文档CentOS7 安装EFK(elasticsearch、fluent、kibana)进行Docker下日志搜集
关于此插件的打包,这里不多做说明,相应jar包可以在刘迎光的nexus中找到,搜索“logback-more-appenders”即可
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</groupId>
<artifactId>testLogback4Fluentd</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>testLogback4Fluentd Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupI
继续上篇文章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
有时候想要保存自己的docker镜像,又不想自己搭建docker registry,那么就可以了借用DockerHub来用,一般不会有多少人在意你的镜像,不过万一被人看上了呢,这谁说的准呢,废话不多说,下面来看看操刀记录
[root@host-30 ~]# docker pull alpine:3.4
[root@host-30 ~]# docker tag alpine:3.4 firewarm/alpine:3.4
[root@host-30 ~]# docker login
# 输入用户名和密码
[root@host-30 ~]# docker push firewarm/alpine:3.4
The push refers to a repository [docker.io/firewarm/alpine]
4fe15f8d0ae6: Pushed
3.4: digest: sha256:dc89ce8401da81f24f7ba3f0ab2914ed9013608bdba0b7e7e5d964817067dc06 size: 528
by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(==防止爬虫==):http://blog.liuyingguang.cn