700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > ElasticStack搭建Java日志收集分析 并将其构建docker镜像-学习笔记

ElasticStack搭建Java日志收集分析 并将其构建docker镜像-学习笔记

时间:2018-09-14 18:48:43

相关推荐

ElasticStack搭建Java日志收集分析 并将其构建docker镜像-学习笔记

参考视频(ElasticStack)/video/av53652729

(Docker)/video/av27122140

Docker官网

ElasticStack官网 elastic.co -- 有中文

整套跑下来大概需要使用2G以上内存,内存不足的服务器不用试了

整套部署下来需要很清晰的思路,否则极易失败,建议把ElasticStack了解一遍再开始

整个过程为

Filebeat 收集文件 --解析并传输给 -- Logstash --解析并传输给 -- Elasticsearch 建立完整文件模式 -- Kibana关联展示

所需安装包

JDK1.8+ Filebeat7.5.1 + Logstash7.5.1 + ElasticStack7.5.1 + Kibana7.5.1

ElasticStack各组件需要版本统一

首先下载安装Docker.如果不使用docker记得给elasticsearch新建用户后,将新建用户禁止登陆服务器ssh

Docker 安装文档地址 根据操作系统选择文档

这里选择Linux-Centos,需要先删除已安装Docker,未安装则忽略,删除时可以使用以下命令,按步骤安装即可

apt-get remove docker*

Docker安装好后最好配置一下镜像加速不然很多东西下不动,注册登录阿里云,搜索容器镜像服务-镜像加速器,里面有详细介绍

常规下载方法估计一天也下载不完,在Linux中使用命令下载稍快一些

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gzwget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.1-linux-x86_64.tar.gzwget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.1.tar.gzwget https://artifacts.elastic.co/downloads/kibana/kibana-7.5.1-linux-x86_64.tar.gz

Docker准备工作,宿主机上安装JDK 上面4个gz安装包,提前编写好的组件配置文件,安装好再改也行,将这些东西放在同一文件夹

构建镜像 下面为Dockerfile 文件内容

FROM ubuntuMAINTAINER authorEXPOSE 5601ENV MYPATH=/usr/localENV JAVA_HOME=/usr/local/jdk1.8.0_191ENV JRE_HOME=${JAVA_HOME}/jreENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATHENV JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/binENV PATH=$PATH:${JAVA_PATH}WORKDIR $MYPATHADD *.gz $MYPATHCOPY ./conf/* $MYPATHCMD /bin/bash

docker create | docker run 都可以 末尾接上面构建好的镜像名:版本号,最少映射JDK安装路径与目标日志路径

docker run -it --name mydocker -p 5601:5601 -p 9200:9200 -v /var/local/logs/docker/:/var/local/logs/ -v /usr/local/environment/jdk1.8.0_191/:/usr/local/jdk1.8.0_191/ myesimg:1.0.0

一切顺利的情况下会进入容器/usr/local目录下

Docker容器为最低配linux系统,所以如果需要vi或者其他功能需要安装

下面开始 ElasticStack部分

顺序最好是 Elasticsearch -> Kibana -> Logstash -> Filebeat (此为组件启动顺序)

Elasticsearch

进入ES的目录,修改配置文件,一般单机版而且不需要外围访问的时候不需要修改配置文件

少数改动为cluster.name-node.name-discovery.seed_hosts-cluster.initial_master_nodes 将这些注释放开

启动ES,ES严格控制启动的用户,不允许root用户使用,低版本可以加参数 -Des.insecure.allow.root=true 启动,

(Kibana启动会使用--allow-root)这个参数不知道在ES启动时是否有用

新建用户和组 将ES整个文件夹权限更新为新用户 使用新用户启动 ./elasticsearch -d

启动完成 使用curl localhost:9200查看是否成功

Kibana

Kibana配置文件修改

server.port: 5601 server.host: "0.0.0.0" -表示本机

elasticsearch.hosts: ["http://localhost:9200"] --关联ES

启动 nohup ./kibana --allow-root & 启动完成后在浏览器中访问5601端口查看是否正常

Logstash (重点)

新建java-logstash.conf

input {beats {port => 5044}}filter {# 此处会自动按匹配规则解析message,当然需要符合日志文件的规范以下为 "a : b c d"grok { match => { "message" => "%{GREEDYDATA:Timestamp}\ : %{WORD:LogLevel}\ %{GREEDYDATA:ClassName}\ %{GREEDYDATA:TextInformation}" }}date {match => [ "Timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]}}output {#根据filebeat传输过来的数据分索引 传递给Elasticsearchif [log_source] == "aaa" {elasticsearch {hosts => ["http://localhost:9200"]index => "java-aaa-%{+YYYY.MM.dd}"}}if [log_source] == "bbb" {elasticsearch {hosts => ["http://localhost:9200"]index => "java-bbb-%{+YYYY.MM.dd}"}}}

启动: nohup ./filebeat -f java-logstash.conf --config.reload.automatic &

Filebeat (重点)

编辑filebeat.yml

filebeat.inputs:- type: logenable: truepaths:- /var/local/logs/aaa/*.logfields:log_source: aaa #自定义字段用于logstash区分来源建索引fields_under_root: truemultiline: # 将非日期开头的日志向上合并为一条messagepattern: '^(\d{4}-\d{2}-\d{2})'negate: truematch: aftermax_lines: 500timeout: 5s- type: logenable: truepaths:- /var/local/logs/bbb/*.logfields:log_source: bbbfields_under_root: truemultiline:pattern: '^(\d{4}-\d{2}-\d{2})'negate: truematch: aftermax_lines: 500timeout: 5soutput.logstash:hosts: ["127.0.0.1:5044"]

启动: nohup ./filebeat -e -c ../filebeat.yml &

可以适当调整elasticsearch以及logstash的 jvm.options中的Xms/Xmx属性调整内存值

最后访问kibana

剩下的就是docker commit && docker push了,以后使用的话只需在仓库中pull docker 镜像,进入镜像启动相关组件就可以使用了,也可以从上面镜像为模板再添加RUN 保留字 重新build一个镜像,这样就不需要进入镜像一个一个启动了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。