构建Logstash+tomcat镜像(让logstash收集tomcat日志)
1、首先pull logstash镜像作为父镜像(logstash的Dockerfile在最下面):
2、构建my-logstash镜像,使其在docker镜像实例化时,可以使用自定义的logstash配置文件。
Dockerfile:
1
2
3
|
FROM logstash
COPY logstash.conf /some/config-dir/
CMD ["-f", "/some/config-dir/logstash.conf"]
|
logstash.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
input{
file {
path => "/usr/local/tomcat/logs/*.txt"
start_position => "beginning"
}
}
filter {
grok {
match => [ "message", "%{COMMONAPACHELOG}" ]
}
kv {
source => "request"
field_split => "&?"
value_split => "="
}
urldecode {
all_fields => true
}
}
output{
stdout { codec => rubydebug }
elasticsearch {
hosts => ["172.16.163.67:9200"]
index => "logstash-apacheaccesslog-%{+YYYY.MM.dd}"
}
}
|
构建my-logstash镜像:build -t my-logstash .
3、运行my-logstash镜像:docker run -it -d my-logstash
4、进入my-logstash镜像:docker exec -it a7529cad79df /bin/bash (假设容器id为a7529cad79df )
1、首先查看系统版本:cat /etc/issue Debian GNU/Linux 8 \n \l
2、apt-get update,然后我又安装了vim
3、然后安装配置tomcat使其可以使用服务的方式运行.
首先 wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.0.39/bin/apache-tomcat-8.0.39.tar.gz
我将刚下载的tomcat移动到/usr/local目录下,解压,并重命名为tomcat。
4、创建一个tomcat用户
查看提取 tomcat文件夹,这是属于 “root” 用户。一个好的做法是:我们应该创建一个新的用户来运行Tomcat。在这 个例子中,我们将创建一个非登录用户“tomcat”,并设置Home目录是 /usr/local/tomcat/temp。
useradd -s /sbin/nologin -d /usr/local/tomcat/temp tomcat
5、更改 /usr/local/tomcat文件夹的权限,以使新的 “tomcat” 用户可以运行Tomcat
chmod -R 777 /usr/local/tomcat
chown -R tomcat:tomcat /usr/local/tomcat
6、/etc/init.d/tomcat
要运行Tomcat作为初始化服务,创建一个自定义脚本,并把它放在 /etc/init.d 文件夹。
6.1 创建一个脚本,并将其保存为/etc/init.d/tomcat
cat /etc/init.d/tomcat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
export CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
export PATH=$JAVA_HOME/bin:$PATH
start() {
echo "Starting Tomcat 8..."
/bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/startup.sh
}
stop() {
echo "Stopping Tomcat 8..."
/bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/shutdown.sh
}
case $1 in
start|stop) $1;;
restart) stop; start;;
*) echo "Usage : $0
<start|stop|restart>
"; exit 1;;
esac
exit 0
|
6.2 分配“执行”权限。
sudo chmod 777 /etc/init.d/tomcat
6.3 安装脚本
update-rc.d tomcat8 defaults
6.4 测试它
service tomcat start
Tomcat started.
Starting tomcat…-
5、docker run时,同时启动logstash与tomcat服务。
通过inspect my-logstash镜像可以看到:
“Entrypoint”: [
“/docker-entrypoint.sh”
],
docker run时会运行/docker-entrypoint.sh脚本,所以我将service tomcat start放进了脚本里面,这样dokcer实例化时,就可以同时启动logstash与tomcat服务,这样logstash就可以获取到tomcat的日志信息了。
6、构建logstash-tomcat镜像
docker commit a7529cad79df logstash-tomcat
logstash的Dockerfile(Debian8 系统)
Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
FROM openjdk:8-jre
# install plugin dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
apt-transport-https \
libzmq3 \
&& rm -rf /var/lib/apt/lists/*
# the "ffi-rzmq-core" gem is very picky about where it looks for libzmq.so
RUN mkdir -p /usr/local/lib \
&& ln -s /usr/lib/*/libzmq.so.3 /usr/local/lib/libzmq.so
# grab gosu for easy step-down from root
ENV GOSU_VERSION 1.7
RUN set -x \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true
# https://www.elastic.co/guide/en/logstash/5.0/installing-logstash.html#_apt
# https://artifacts.elastic.co/GPG-KEY-elasticsearch
RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 46095ACC8548582C1A2699A9D27D666CD88E42B4
RUN echo 'deb http://packages.elastic.co/logstash/2.4/debian stable main' > /etc/apt/sources.list.d/logstash.list
ENV LOGSTASH_VERSION 2.4.1
ENV LOGSTASH_DEB_VERSION 1:2.4.1-1
RUN set -x \
&& apt-get update \
&& apt-get install -y --no-install-recommends "logstash=$LOGSTASH_DEB_VERSION" \
&& rm -rf /var/lib/apt/lists/*
ENV PATH /opt/logstash/bin:$PATH
# necessary for 5.0+ (overriden via "--path.settings", ignored by < 5.0)
ENV LS_SETTINGS_DIR /etc/logstash
# comment out some troublesome configuration parameters
# path.config: No config files found: /etc/logstash/conf.d/*
RUN set -ex; \
if [ -f "$LS_SETTINGS_DIR/logstash.yml" ]; then \
sed -ri 's!^path\.config:!#&!g' "$LS_SETTINGS_DIR/logstash.yml"; \
fi; \
# if the "log4j2.properties" file exists (logstash 5.x), let's empty it out so we get the default: "logging only errors to the console"
if [ -f "$LS_SETTINGS_DIR/log4j2.properties" ]; then \
cp "$LS_SETTINGS_DIR/log4j2.properties" "$LS_SETTINGS_DIR/log4j2.properties.dist"; \
truncate --size=0 "$LS_SETTINGS_DIR/log4j2.properties"; \
fi
COPY docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["-e", ""]
|
构建Logstash+tomcat镜像(让logstash收集tomcat日志)的更多相关文章
- 基于alpine用dockerfile创建的tomcat镜像
1.下载alpine镜像 [root@docker43 ~]# docker pull alpine Using default tag: latest Trying to pull reposito ...
- Docker | 制作tomcat镜像并部署项目
本文讲解如何制作自己的tomcat镜像,并使用tomcat部署项目 原料准备: tomcat.jdk安装包,dockerfile文件 步骤 1.准备压缩包 jdk-8u301-linux-x64.ta ...
- centos7创建docker tomcat镜像
1 准备宿主系统 准备一个 CentOS 7操作系统,具体要求如下: 必须是 64 位操作系统 建议内核在 3.8 以上 通过以下命令查看您的 CentOS 内核: 1 # uname -r 2 安装 ...
- 构建自己的Tomcat镜像
在很多情况下,我们会不满足于官方提供的Tomcat镜像.比如官方镜像的时区为UTC时间,并不是北京时间:再比如在特定硬件环境下,jdk的随机数生成器初始化过慢问题.此时,我们就会考虑构建自己的Tomc ...
- Docker 使用Dockerfile构建tomcat镜像
Dockerfile概念: 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题. ...
- 如何使用Dockerfile构建Tomcat镜像并部署war
我们都知道Docker构建一个镜像有两种方式: 使用`docker commit`命令 使用`Dockerfile`文件和`docker build`命令 那么这两种方式有何区别呢? 相同点:底层实现 ...
- 用Docker构建Tomcat镜像
构建tomcat镜像 创建工作目录 [root@elk-node2 tomcat]# mkdir tomcat [root@elk-node2 tomcat]# cd tomcat [root@elk ...
- Dockerfile书写介绍及构建ssh镜像、tomcat镜像、nginx镜像
=================================================================================================== ...
- dockerfile构建Tomcat镜像
dockerfile构建Tomcat镜像 一.镜像分层概念 二.制作tomcat镜像 2.1.创建分层目录 [root@node2 ~]# mkdir /app/{web/{nginx,tomcat, ...
随机推荐
- BZOJ3092 : [FDU2012校赛] A Famous King’s Trip
题目等价于去掉两条边,使得剩下的图连通,且所有点度数都为偶数. 首先特判掉图一开始就不连通的情况. 求出dfs生成树,对于每条非树边随机一个权值,每条树边的权值为所有经过它的非树边权值的异或和. 那么 ...
- BZOJ4624 : 农场种植
设$A[i][j]=[a[i][j]=G],B[i][j]=[b[i][j]=L]$,枚举右下角,则对应$(A-B)^2$的和就是匹配成功的格子数. $(a-b)^2=a^2+b^2-2ab$,将矩阵 ...
- js定时相关函数:
定时相关函数: mytime= setTimeout(vCode, iMilliSeconds [, sLanguage]) -- 单次定时执行指定函数 clearTimeout(iTimeoutID ...
- gulp完全开发指南 => 快来换掉你的Grunt吧
最近一直在构建Angular应用,通过bower管理前端包依赖,然后通过gulp和它配合.发现gulp相比于grunt真的很轻,现在我的项目中已经取代了grunt.这里把我的一些实践贴记录下来和大家分 ...
- BZOJ3212 Pku3468 A Simple Problem with Integers 题解
题目大意: 一个数列,有两个操作:1.修改操作,将一段区间内的数加上c:2.查询操作,查询一段区间内的数的和. 思路: 线段树裸题,区间修改.区间查询,维护和以及加上的数,由于无序,不需要向下推标记, ...
- 20145308刘昊阳 《Java程序设计》第6周学习总结
20145308刘昊阳 <Java程序设计>第6周学习总结 教材学习内容总结 第10章 输入/输出 10.1 InputStream与OutputStream 10.1.1 串流设计概念 ...
- 【CodeVS】 p1696 奇怪的函数
题目描述 Description 自从得到上次的教训后,John的上课态度认真多了,也变得更爱动脑筋了.今天他又学习了一个新的知识:关于 xk 的位数. 如果x大于0小于l,那么位数=1+小数部分×k ...
- DockerFile 参数详解
Docker 指令: From --- ENV ---设置环境变量ENV App_DIR /appp Add 和 Copy 可以复制文件到容器里面 .区别 Add 可以写网络的链接地址 Add 支持解 ...
- windows与linux之间传输文件
1.使用SSH Secure Shell Client 百度网盘 下载地址 http://pan.baidu.com/s/1kTmp00J 2.使用pscp 百度网盘地址:http://pan.bai ...
- python中的进程、线程(threading、multiprocessing、Queue、subprocess)
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...