K8s容器日志實(shí)時(shí)收集FileBeat+ES+Kibana

ELK

K8s容器日志實(shí)時(shí)收集FileBeat+ES+Kibana

一啃勉、FileBeat

1.1 FileBeat工作原理

harvester

prospector

Filebeat 保持文件狀態(tài)

二叮阅、環(huán)境配置

2.1 Tomcat鏡像制作

2.2 Filebeat 制作鏡像

2.3 Elasticsearch安裝

2.4 kibana安裝

2.5 測(cè)試鏡像

2.6 服務(wù)檢查

k8s日志收集第一種方式

k8s日志收集第二種方式

環(huán)境說(shuō)明

IP地址服務(wù)主機(jī)名

10.4.82.119docker、k8s_master|node勒叠、master

10.4.82.120docker、 k8s_node、kibananode

10.4.82.115es幕垦、Harbor鏡像倉(cāng)庫(kù)先改、docker (主要作用就是打一個(gè)filebeat鏡像)i4t

提示:filebeat跑在k8s容器內(nèi)部仇奶,所以沒(méi)有單獨(dú)創(chuàng)建服務(wù)

一岛抄、FileBeat

作為 Beats 家族的一員夫椭,F(xiàn)ilebeat 是一個(gè)輕量級(jí)的日志傳輸工具蹭秋,它的存在正彌補(bǔ)了 Logstash 的缺點(diǎn):Filebeat 作為一個(gè)輕量級(jí)的日志傳輸工具可以將日志推送到中心 Logstash。

在版本 5.x 中洞豁,Elasticsearch 具有解析的能力(像 Logstash 過(guò)濾器)— Ingest族跛。這也就意味著可以將數(shù)據(jù)直接用 Filebeat 推送到 Elasticsearch礁哄,并讓 Elasticsearch 既做解析的事情,又做存儲(chǔ)的事情茉继。也不需要使用緩沖烁竭,因?yàn)?Filebeat 也會(huì)和 Logstash 一樣記住上次讀取的偏移:

如果需要緩沖(例如,不希望將日志服務(wù)器的文件系統(tǒng)填滿)终吼,可以使用 Redis/Kafka际跪,因?yàn)?Filebeat 可以與它們進(jìn)行通信:

Filebeat 優(yōu)點(diǎn)

Filebeat 只是一個(gè)二進(jìn)制文件沒(méi)有任何依賴。它占用資源極少歇盼,盡管它還十分年輕豹缀,正式因?yàn)樗?jiǎn)單邢笙,所以幾乎沒(méi)有什么可以出錯(cuò)的地方,所以它的可靠性還是很高的想暗。它也為我們提供了很多可以調(diào)節(jié)的點(diǎn)杨箭,例如:它以何種方式搜索新的文件互婿,以及當(dāng)文件有一段時(shí)間沒(méi)有發(fā)生變化時(shí),何時(shí)選擇關(guān)閉文件句柄驮配。

Filebeat 缺點(diǎn)

Filebeat 的應(yīng)用范圍十分有限僧凤,所以在某些場(chǎng)景下我們會(huì)碰到問(wèn)題旋膳。例如,如果使用 Logstash 作為下游管道尸变,我們同樣會(huì)遇到性能問(wèn)題。正因?yàn)槿绱俗喾颍現(xiàn)ilebeat 的范圍在擴(kuò)大酗昼。開(kāi)始時(shí),它只能將日志發(fā)送到 Logstash 和 Elasticsearch春弥,而現(xiàn)在它可以將日志發(fā)送給 Kafka 和 Redis扫责,在 5.x 版本中公给,它還具備過(guò)濾的能力淌铐。

典型應(yīng)用場(chǎng)景

Filebeat 在解決某些特定的問(wèn)題時(shí):日志存于文件,我們希望

① 將日志直接傳輸存儲(chǔ)到 Elasticsearch吐葱。這僅在我們只是抓去(grep)它們或者日志是存于 JSON 格式(Filebeat 可以解析 JSON)弟跑∶霞或者如果打算使用 Elasticsearch 的 Ingest 功能對(duì)日志進(jìn)行解析和豐富炭玫。

② 將日志發(fā)送到 Kafka/Redis吞加。所以另外一個(gè)傳輸工具(例如,Logstash 或自定義的 Kafka 消費(fèi)者)可以進(jìn)一步豐富和轉(zhuǎn)發(fā)巫财。這里假設(shè)選擇的下游傳輸工具能夠滿足我們對(duì)功能和性能的要求平项。

1.1 FileBeat工作原理

Filebeat是本地文件的日志數(shù)據(jù)采集器。作為服務(wù)器上的代理安裝扣讼,F(xiàn)ilebeat監(jiān)視日志目錄或特定的日志文件tail -f file并將它們轉(zhuǎn)發(fā)給ES椭符、Logstash、Kafka

Filebeat由二個(gè)主要組件組成:prospectorhavvester這些組件一起工作讀取文件并將時(shí)間數(shù)據(jù)發(fā)送到指定的輸出

啟動(dòng)Filebeat時(shí)蒸健,它會(huì)啟動(dòng)一個(gè)或多個(gè)查找器似忧,查看您的日志文件指定的本地路徑。對(duì)**prospector**所在的每個(gè)日志文件饺著,prospector啟動(dòng)harvester瓶籽。每個(gè)harvester都會(huì)為新內(nèi)容讀取單個(gè)日志文件塑顺,并將新日志數(shù)據(jù)發(fā)送到libbeat严拒,后者將聚合事件合并聚合數(shù)據(jù)發(fā)送到Filebeat配置的輸出

harvester

負(fù)載讀取單個(gè)文化的內(nèi)容。讀取每個(gè)文件种蘸,并將內(nèi)容發(fā)送到the output。每個(gè)文件啟動(dòng)一個(gè)harvester刊侯,負(fù)責(zé)打開(kāi)和關(guān)閉文件,這意味著在運(yùn)行時(shí)文件描述符保持打開(kāi)狀態(tài)

如果文件在讀取時(shí)被刪除或重命名亭饵,F(xiàn)ilebeat將繼續(xù)讀取文件冬骚。在harvester關(guān)閉之前,磁盤(pán)上的空間被保留喜德。默認(rèn)情況下航棱,F(xiàn)ilebeat將文件保持打開(kāi)狀態(tài),直到達(dá)到close_inactive狀態(tài)

關(guān)閉harvester會(huì)產(chǎn)生以下結(jié)果

1.如果在harvester仍在讀取文件時(shí)文件被刪除朴艰,則關(guān)閉文件句柄祠墅,釋放底層資源。

2.文件的采集只會(huì)在scan_frequency過(guò)后重新開(kāi)始

3.如果在harvester關(guān)閉的情況下移動(dòng)文件狗准,則不會(huì)繼續(xù)處理文件

prospector

負(fù)責(zé)管理harvester并找到所有要讀取的文件來(lái)源驶俊。

如果輸入類(lèi)型為日志,則查找器將查找路徑匹配的所有文件故俐,并為每個(gè)文件啟動(dòng)一個(gè)harvester。每個(gè)prospector都在自己的Go斜程中運(yùn)行

以下示例將Filebeat配置為從與指定的匹配的所有日志文件中收集行:

filebeat.prospectors:

- type: log

? paths:

? ? - /data/log/*.log

? ? - /data/log4j/*.log

Filebeat目前支持兩種prospector類(lèi)型:log和stdin

每個(gè)prospector類(lèi)型可以定義多次

日志prospector檢查每個(gè)文件以查看harvester是否需要啟動(dòng)槽片,是否已經(jīng)運(yùn)行

只有在harvest關(guān)閉后文件大小發(fā)生了變化,才會(huì)讀到新行

注:Filebeat prospector只能讀取本地文件剩盒,沒(méi)有功能可以連接到遠(yuǎn)程主機(jī)來(lái)讀取存儲(chǔ)的日志或文件

Filebeat 保持文件狀態(tài)

Filebeat 保存每個(gè)文件的狀態(tài)并經(jīng)常講狀態(tài)刷新到磁盤(pán)上的注冊(cè)中心中辽聊。該狀態(tài)用于記錄harvest正在讀取的最后偏移量纪挎,并確保發(fā)送所有日志行。

如果輸出(例如ES或Logstash)無(wú)法訪問(wèn)跟匆,F(xiàn)ilebeat會(huì)跟蹤最后發(fā)送的行异袄,并在輸出再次可用時(shí)繼續(xù)讀取文件。

在Filebeat運(yùn)行時(shí)玛臂,每個(gè)prospector內(nèi)存中也會(huì)保存文件狀態(tài)信息隙轻。由于文件可以被重命名活移動(dòng)叁巨,因?yàn)槲募吐窂讲蛔阋鬃R(shí)別文件庶橱。對(duì)每個(gè)文件枫绅,F(xiàn)ilebeat存儲(chǔ)唯一標(biāo)示符以檢測(cè)文件是否先前已經(jīng)采集過(guò)

Filebeat如何確保至少一次交付

Filebeat保證事件至少會(huì)被傳送到配置的輸出一次,并且不會(huì)丟失數(shù)據(jù)。Filebeat能夠?qū)崿F(xiàn)此行為神郊,因?yàn)樗鼘⒚總€(gè)事件的傳遞狀態(tài)存儲(chǔ)在注冊(cè)文件中宛乃。在輸出阻塞或未確認(rèn)所有事件的情況下眼坏,F(xiàn)ilebeat將繼續(xù)嘗試發(fā)送事件沿侈,直到接收端確認(rèn)已收到。

如果Filebeat在發(fā)送事件的過(guò)程中關(guān)閉,它不會(huì)等待輸出確認(rèn)所有收到事件绘迁。發(fā)送到輸出但在Filebeat關(guān)閉前未確認(rèn)的任何事在重新啟動(dòng)Filebeat時(shí)會(huì)再次發(fā)送鼎俘。這可以確保每個(gè)事件至少發(fā)送一次,但最終會(huì)重復(fù)事件發(fā)送到輸出秘案。也可以通過(guò)設(shè)置shutdown_timeout選項(xiàng)來(lái)配置Filebeat以在關(guān)閉之前等待特定事件

注:

Filebeat的至少一次交付保證包括日志輪換和刪除舊文件的限制吼旧。如果將日志文件寫(xiě)入磁盤(pán)并且寫(xiě)入速度超過(guò)Filebeat可以處理的速度勇哗,或者在輸出不可用時(shí)刪除了文件,則可能會(huì)丟數(shù)據(jù)。在Linux,F(xiàn)ilebeat也可能因?yàn)閕node重用而跳過(guò)行

本段參考:http://www.reibang.com/p/6282b04fe06a

二是偷、環(huán)境配置

Docker安裝

wget http://down.abcdocker.com/docker/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm

wget http://down.abcdocker.com/docker/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm

yum 安裝

yum install docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm -y

yum install docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm -y

systemctl enable docker

systemctl start docker

sed -i '/ExecStart=\/usr\/bin\/dockerd/i\ExecStartPost=\/sbin/iptables -I FORWARD -s 0.0.0.0\/0 -d 0.0.0.0\/0 -j ACCEPT' /usr/lib/systemd/system/docker.service

sed -i '/dockerd/s/$/ \-\-storage\-driver\=overlay2/g' /usr/lib/systemd/system/docker.service

systemctl daemon-reload

systemctl restart docker

#設(shè)置存儲(chǔ)引擎和防火墻

2.1 Tomcat鏡像制作

我們這里以Tomcat項(xiàng)目為基礎(chǔ)進(jìn)行測(cè)試

Docker文件內(nèi)容如下

#這里需要把a(bǔ)pache和jdk下載到本地,需要和Dockerfile在同一目錄

wget http://down.abcdocker.com/docker/jdk1.8.0_66.tar.gz

wget http://down.abcdocker.com/docker/apache-tomcat-8.5.39.tar.gz

[root@i4t tomcat_test]# cat Dockerfile

# docker pull centos

###############################################################################

#? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? INSTALLATION

###############################################################################

#? ? ? ? ? ? ? ? ? ? ? ? ? ? ? www.i4t.com

##############################################################################

#? ? ? ? ? ? .o.? ? ? ? .o8? ? ? ? ? ? ? ? ? ? ? .o8? ? ? ? ? ? ? ? ? ? ? oooo

#? ? ? ? ? .888.? ? ? "888? ? ? ? ? ? ? ? ? ? ? "888? ? ? ? ? ? ? ? ? ? ? `888

#? ? ? ? ? .8"888.? ? ? 888oooo.? .ooooo.? .oooo888? .ooooo.? .ooooo.? 888? oooo? .ooooo.? oooo d8b

#? ? ? ? .8' `888.? ? d88' `88b d88' `"Y8 d88' `888? d88' `88b d88' `"Y8? 888 .8P'? d88' `88b `888""8P

#? ? ? ? .88ooo8888.? ? 888? 888 888? ? ? 888? 888? 888? 888 888? ? ? ? 888888.? ? 888ooo888? 888

#? ? ? .8'? ? `888.? 888? 888 888? .o8 888? 888? 888? 888 888? .o8? 888 `88b.? 888? ? .o? 888

#? ? ? o88o? ? o8888o? `Y8bod8P' `Y8bod8P' `Y8bod88P" `Y8bod8P' `Y8bod8P' o888o o888o `Y8bod8P' d888b

#

#

#? ? ? ? ? ? ? ? ? ? ? ? ****? ? ? ? ****

#? ? ? ? ? ? ? ? ? ? ? ***? ***? ? ? **? ***

#? ? ? ? ? ? ? ? ? ? ? *? ? ? *? ? **? ? *

#

#? ? ? ? ? ? ? ? ? ? ? ? ? ? **? ? **

#? ? ? ? ? ? ? ? ? ? ? ? ? ? ***? **

#? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ****

#####################################################################################

FROM centos

MAINTAINER www.i4t.com "cyh@i4t.com"

WORKDIR /tmp

## Please see https://i4t.com/3552.html? install JDK

COPY jdk1.8.0_66.tar.gz /tmp

? ? RUN tar zxf /tmp/jdk1.8.0_66.tar.gz -C /usr/local/ && rm -rf /tmp/jdk1.8.0_66.tar.gz

? ? RUN ln -s /usr/local/jdk1.8.0_66 /usr/local/jdk

#/etc/profile

? ? ENV JAVA_HOME /usr/local/jdk

? ? ENV CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

? ? ENV PATH $PATH:$JAVA_HOME/bin

# add apache

# Please see i4t.com && baidu.com

? ? COPY apache-tomcat-8.5.39.tar.gz /tmp

? ? RUN tar zxf apache-tomcat-8.5.39.tar.gz -C /usr/local? && rm -rf /tmp/apache-tomcat-8.5.39.zip

? ? RUN mv /usr/local/apache-tomcat-8.5.39 /usr/local/tomcat

#port

? ? EXPOSE 8080

###############################################################################

#? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? START

###############################################################################

ENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out

構(gòu)建tomcat鏡像

[root@i4t ~]# docker build -t i4t.com/tomcat/tomcat.v1 /data/tomcat_test/

Sending build context to Docker daemon 205.6 MB

Step 1/14 : FROM centos

---> 9f38484d220f

Step 2/14 : MAINTAINER www.i4t.com "cyh@i4t.com"

---> Using cache

---> 4a7c687c3bf7

Step 3/14 : WORKDIR /tmp

---> Using cache

---> 4bc766547f5c

Step 4/14 : COPY jdk1.8.0_66.tar.gz /tmp

---> Using cache

---> 2fd3ec55a068

Step 5/14 : RUN tar zxf /tmp/jdk1.8.0_66.tar.gz -C /usr/local/ && rm -rf /tmp/jdk1.8.0_66.tar.gz

---> Using cache

---> 3cb37cce7028

Step 6/14 : RUN ln -s /usr/local/jdk1.8.0_66 /usr/local/jdk

---> Using cache

---> 790555e157f7

Step 7/14 : ENV JAVA_HOME /usr/local/jdk

---> Using cache

---> 9a0bcf883c98

Step 8/14 : ENV CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

---> Using cache

---> 9d4f614f7979

Step 9/14 : ENV PATH $PATH:$JAVA_HOME/bin

---> Using cache

---> b99a4730d3ea

Step 10/14 : COPY apache-tomcat-8.5.39.tar.gz /tmp

---> Using cache

---> 73a8408bc879

Step 11/14 : RUN tar zxf apache-tomcat-8.5.39.tar.gz -C /usr/local? && rm -rf /tmp/apache-tomcat-8.5.39.zip

---> Using cache

---> 34d63da07d30

Step 12/14 : RUN mv /usr/local/apache-tomcat-8.5.39 /usr/local/tomcat

---> Using cache

---> 7dae5cb15207

Step 13/14 : EXPOSE 8080

---> Using cache

---> 8ec8c8470149

Step 14/14 : ENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out

---> Using cache

---> 0eac795556fb

Successfully built 0eac795556fb

#更改鏡像名稱

docker tag [原鏡像]? [新鏡像]

例子:docker tag i4t.com/tomcat/tomcatv1? i4t.com/tomcat/i4tv1

鏡像打包完成后,我們?cè)赿ocker容器手動(dòng)啟動(dòng)鏡像進(jìn)行測(cè)試

[root@i4t tomcat]# docker run -idt --name i4t_tomcat_test -p 80:8080 i4t.com/tomcat/tomcat.v1

f6f1621d9464ea2d17a4611393b1950e36f5b7b6c9234f322d636d47fee94e10

#run 運(yùn)行容器

-it 進(jìn)入容器

-d? 后臺(tái)運(yùn)行

--name 新容器名稱

-p 映射端口

i4t.com/tomcat/tomcat.v1 鏡像名稱

在Docker本機(jī)使用curl命令驗(yàn)證服務(wù)是否正常運(yùn)行 (主要是判斷docker build是否有問(wèn)題)

容器正常啟動(dòng)訪問(wèn)說(shuō)明我們tomcat鏡像是沒(méi)有問(wèn)題

當(dāng)我們鏡像打包完成docker啟動(dòng)正常之后犀斋,直接push到Harbor鏡像倉(cāng)庫(kù)即可

docker push i4t.com/tomcat/i4tv1

下面是harbor搭建文檔

harbor安裝

這里稍微說(shuō)明一點(diǎn)辆脸,如果是線上環(huán)境辨绊,需要替換war包操作。可以將上面制作的tomcat鏡像為基礎(chǔ)鏡像,在寫(xiě)一個(gè)dockerfile。我這里提供一下

#這里不是重點(diǎn)念颈,我不詳細(xì)說(shuō)躏嚎。步驟放在這

# cat dockerfile

FROM i4t.com/tomcat/tomcat.v1

MAINTAINER abcdocker "i4t.com"

COPY ROOT.tgz /data/

RUN tar zxf /data/ROOT.tgz -C /usr/local/tomcat/webapps/ && rm -rf /data/ROOT.tgz

# docker build -t tomcat_video:v1

# docker tag tomcat_video:v1 i4t.com/tomcat_video:v1

# docker push i4t.com/tomcat_video:v1

2.2 Filebeat 制作鏡像

我們這里講的是使用Filebeat來(lái)收集日志,ELK安裝具體可以參考

ELK 二進(jìn)制安裝并收集nginx日志

tomcat服務(wù)已經(jīng)可以正常運(yùn)行荆陆,現(xiàn)在我們部署filebeat鏡像

[root@i4t filebeat]# docker build -t tomcat_filebeat:v2 /data/filebeat/

Sending build context to Docker daemon 50.63 MB

Step 1/9 : FROM docker.io/centos

---> 9f38484d220f

Step 2/9 : MAINTAINER www.i4t.com <cyh@i4t.com>

---> Using cache

---> bbc4c3a8b392

Step 3/9 : WORKDIR /usr/local

---> Using cache

---> 7af655ce0f61

Step 4/9 : ENV FILEBEAT_VERSION 6.7.0

---> Using cache

---> 227c02e65a80

Step 5/9 : RUN set -x? ? ? && curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${FILEBEAT_VERSION}-linux-x86_64.tar.gz? ? ? && tar xf filebeat-${FILEBEAT_VERSION}-linux-x86_64.tar.gz -C /usr/local? ? ? && ln -s /usr/local/filebeat-${FILEBEAT_VERSION}-linux-x86_64 /usr/local/filebeat? ? ? && chmod +x /usr/local/filebeat/filebeat? ? ? ? && mkdir -p /etc/filebeat

---> Running in 6d86756e5c4a

+ curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.7.0-linux-x86_64.tar.gz

? % Total? ? % Received % Xferd? Average Speed? Time? ? Time? ? Time? Current

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Dload? Upload? Total? Spent? ? Left? Speed

100 11.1M? 100 11.1M? ? 0? ? 0? 382k? ? ? 0? 0:00:29? 0:00:29 --:--:-- 1149k

+ tar xf filebeat-6.7.0-linux-x86_64.tar.gz -C /usr/local

+ ln -s /usr/local/filebeat-6.7.0-linux-x86_64 /usr/local/filebeat

+ chmod +x /usr/local/filebeat/filebeat

+ mkdir -p /etc/filebeat

---> 8920fb78ff5d

Removing intermediate container 6d86756e5c4a

Step 6/9 : ADD ./docker-entrypoint.sh /usr/bin/

---> d2989df722b1

Removing intermediate container dbe668e7cd75

Step 7/9 : RUN chmod +x /usr/bin/docker-entrypoint.sh

---> Running in eb7c7304647a

---> 5ea2cb81cad6

Removing intermediate container eb7c7304647a

Step 8/9 : ENTRYPOINT docker-entrypoint.sh

---> Running in bed03d3aa8e3

---> cb9d8de0d329

Removing intermediate container bed03d3aa8e3

Step 9/9 : CMD /usr/local/filebeat/filebeat -e -c /etc/filebeat/filebeat.yml

---> Running in 253dcfbc0ff7

---> f26910a9c61d

Removing intermediate container 253dcfbc0ff7

Successfully built f26910a9c61d

Filebeat Dockerfile內(nèi)容

[root@i4t filebeat]# cat Dockerfile

###############################################################################

#? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? INSTALLATION

###############################################################################

FROM? docker.io/centos

MAINTAINER www.i4t.com <cyh@i4t.com>

# Install Filebeat

WORKDIR /usr/local

ENV FILEBEAT_VERSION=5.4.0

RUN set -x \

? ? ? && curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${FILEBEAT_VERSION}-linux-x86_64.tar.gz \

? ? ? && tar xf filebeat-${FILEBEAT_VERSION}-linux-x86_64.tar.gz -C /usr/local \

? ? ? && ln -s /usr/local/filebeat-${FILEBEAT_VERSION}-linux-x86_64 /usr/local/filebeat \

? ? ? && chmod +x /usr/local/filebeat/filebeat? \

? ? ? && mkdir -p /etc/filebeat

ADD ./docker-entrypoint.sh /usr/bin/

RUN chmod +x /usr/bin/docker-entrypoint.sh

ENTRYPOINT ["docker-entrypoint.sh"]

CMD ["/usr/local/filebeat/filebeat","-e","-c","/etc/filebeat/filebeat.yml"]

######### 腳本內(nèi)容

[root@i4t filebeat]# cat docker-entrypoint.sh

#!/bin/bash

config=/etc/filebeat/filebeat.yml

env

echo 'Filebeat init process done. Ready for start up.'

echo "Using the following configuration:"

cat /etc/filebeat/filebeat.yml

exec "$@"

## Dockerfile和腳本在同一個(gè)目錄下碍讯,然后進(jìn)行build

打包完成后我們push到harbor倉(cāng)庫(kù),和tomcat鏡像一樣的操作

[root@i4t tmp]# docker tag tomcat_filebeat:v2? i4t.com/filebeat/v1

[root@i4t tmp]# docker push i4t.com/filebeat/v1:latest

The push refers to a repository [i4t.com/filebeat/v1]

de0545fc627a: Pushed

8bd9a1a2863c: Pushed

f01cc0f2d07b: Pushed

d69483a6face: Pushed

latest: digest: sha256:03a8f15e28d012eb19aeb29b4920f7ab5df5365054896fa40f83a97aa1cb55cf size: 1155

2.3 Elasticsearch安裝

1.JDK環(huán)境安裝

2.Elasticsearch安裝

這里不寫(xiě)了,博客有很多了

參考https://i4t.com/3552.html

服務(wù)正常啟動(dòng)即可(我們這里只需要安裝es和es-head插件即可潮罪,logstash在另外一臺(tái))

2.4 kibana安裝

https://i4t.com/3552.html

只要服務(wù)正常啟動(dòng)康谆,沒(méi)有報(bào)錯(cuò)即可

2.5 測(cè)試鏡像

這里我們使用k8s環(huán)境進(jìn)行測(cè)試,沒(méi)有搭建k8s可以參考[k8s 1.11源碼安裝]

tomcat.yaml

[root@yzsjhl82-119 tomcat_test]# cat tomcat_test.yaml

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

? name: tomcat-abcdocker

? namespace: default

spec:

? replicas: 1

? template:

? ? metadata:

? ? ? labels:

? ? ? ? k8s-app: tomcat-web

? ? spec:

? ? ? containers:

? ? ? - image: 鏡像地址/filebeat/v2

? ? ? ? imagePullPolicy: Always

? ? ? ? name: filebeat

? ? ? ? volumeMounts:

? ? ? ? - name: app-logs

? ? ? ? ? mountPath: /logs

? ? ? ? - name: filebeat-config

? ? ? ? ? mountPath: /etc/filebeat/

? ? ? - image: 鏡像地址/filebeat/tomcat.v1:latest

? ? ? ? name : tomcat-web

? ? ? ? imagePullPolicy: Always

? ? ? ? ports:

? ? ? ? - containerPort: 8080

? ? ? ? volumeMounts:

? ? ? ? - name: app-logs

? ? ? ? ? mountPath: /usr/local/tomcat/logs

? ? ? volumes:

? ? ? - name: app-logs

? ? ? ? emptyDir: {}

? ? ? - name: filebeat-config

? ? ? ? configMap:

? ? ? ? ? name: filebeat-config

tomcat_server.xml (端口暴露)

[root@master tomcat_test]# cat tomcat_server.yaml

apiVersion: v1

kind: Service

metadata:

? name: tomcat-web

? labels:

? ? k8s-app: tomcat-web

spec:

? type: NodePort

? ports:

? - port: 8080

? ? protocol: TCP

? ? targetPort: 8080

? ? name: http

? ? nodePort: 30001

? selector:

? ? k8s-app: tomcat-web

configmap.xml

通過(guò)configmap的形式創(chuàng)建filebeat.yml配置文件错洁,指定收集日志的路徑秉宿、elasticsearch的配置信息及索引名稱

[root@master tomcat_test]# cat tomcat_configmap.yaml

apiVersion: v1

kind: ConfigMap

metadata:

? name: filebeat-config

data:

? filebeat.yml: |

? ? filebeat.prospectors:

? ? - input_type: log

? ? ? paths:

? ? ? ? - "/logs/*"

? ? output.elasticsearch:

? ? ? hosts: ["10.4.82.115:9200"]

? ? ? index: "filebeat-tomcat-log"

# hosts指定es地址

# index 索引名稱

創(chuàng)建索引

[root@master tomcat_test]# kubectl create -f tomcat_configmap.yaml

configmap/filebeat-config created

[root@master tomcat_test]# kubectl create -f tomcat_test.yaml

deployment.extensions/tomcat-abcdocker created

[root@master tomcat_test]# kubectl create -f tomcat_server.yaml

service/tomcat-web created

2.6 服務(wù)檢查

我們需要檢查以下

1.檢查pod是否運(yùn)行正常

2.檢查server是否正常

3.檢查configmap是否創(chuàng)建完成

4.kubectl常用命令? https://k.i4t.com/15356201695268.html

查看服務(wù)整個(gè)狀態(tài)是否正常

[root@master tomcat_test]# kubectl get svc,pod,configmap

NAME? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? CLUSTER-IP? ? ? EXTERNAL-IP? PORT(S)? ? ? ? ? AGE

service/kubernetes? ? ? ClusterIP? 10.254.0.1? ? ? <none>? ? ? ? 443/TCP? ? ? ? ? 97d

service/nginx-service? NodePort? ? 10.254.167.71? ? <none>? ? ? ? 80:31000/TCP? ? 97d

service/tomcat-web? ? ? NodePort? ? 10.254.237.208? <none>? ? ? ? 8080:30001/TCP? 3m

NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? READY? ? STATUS? ? RESTARTS? AGE

pod/tomcat-abcdocker-56f9547997-2zz7c? 2/2? ? ? Running? 0? ? ? ? ? 3m

NAME? ? ? ? ? ? ? ? ? ? ? ? DATA? ? ? AGE

configmap/filebeat-config? 1? ? ? ? 3m

查看pod容器是否異常

1.查看tomcat鏡像日志

kubectl logs tomcat-abcdocker-56f9547997-2zz7c filebeat

#這里的pod名稱可能不是這個(gè)

2.查看filebeat鏡像日志

kubectl logs tomcat-abcdocker-56f9547997-2zz7c tomcat-web

Kubernetes kubectl 命令自動(dòng)補(bǔ)全

容器只要沒(méi)有error報(bào)錯(cuò)就ok

Filebaet log

藍(lán)色為ES地址,紅色為啟動(dòng)正常

tomcat log

k8s服務(wù)是沒(méi)有問(wèn)題屯碴,我們?yōu)g覽器訪問(wèn)一下

端口為31000

接下來(lái)查看一下es日志

[root@i4t ~]# curl -XGET '10.4.82.115:9200/_cat/indices?v&pretty'

health status index? ? ? ? ? ? ? uuid? ? ? ? ? ? ? ? ? pri rep docs.count docs.deleted store.size pri.store.size

yellow open? filebeat-tomcat-log jRWrRLQjQ2SPTAe-wmy_EA? 5? 1? ? ? ? 272? ? ? ? ? ? 0? ? 244.6kb? ? ? ? 244.6kb

通過(guò)head插件查看是否有數(shù)據(jù)

并且已經(jīng)實(shí)時(shí)打印

進(jìn)入kibana控制臺(tái)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末描睦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子导而,更是在濱河造成了極大的恐慌忱叭,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件今艺,死亡現(xiàn)場(chǎng)離奇詭異韵丑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)虚缎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)撵彻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人实牡,你說(shuō)我怎么就攤上這事陌僵。” “怎么了创坞?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵碗短,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我题涨,道長(zhǎng)偎谁,這世上最難降的妖魔是什么总滩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮巡雨,結(jié)果婚禮上闰渔,老公的妹妹穿的比我還像新娘。我一直安慰自己铐望,他們只是感情好澜建,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蝌以,像睡著了一般炕舵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跟畅,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天咽筋,我揣著相機(jī)與錄音,去河邊找鬼徊件。 笑死奸攻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的虱痕。 我是一名探鬼主播睹耐,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼部翘!你這毒婦竟也來(lái)了硝训?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤新思,失蹤者是張志新(化名)和其女友劉穎窖梁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體夹囚,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纵刘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年集惋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了护蝶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拆又。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搜囱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惹骂,到底是詐尸還是另有隱情多柑,我是刑警寧澤遥椿,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布堰燎,位于F島的核電站掏父,受9級(jí)特大地震影響笋轨,放射性物質(zhì)發(fā)生泄漏秆剪。R本人自食惡果不足惜赊淑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仅讽。 院中可真熱鬧陶缺,春花似錦、人聲如沸洁灵。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)徽千。三九已至苫费,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間双抽,已是汗流浹背百框。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牍汹,地道東北人铐维。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像慎菲,于是被迫代替她去往敵國(guó)和親嫁蛇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容