7.4.2版本的ELK集群安装
目录 一.环境介绍: 1.软件版本 2.安装jdk 3.配置环境变量 4.创建用户 5.赋予权限 6.配置系统参数 二.部署elasticsearch 1.解压elasticsearch并配置安全认证 2.编辑配置文件elasticsearch.yml 3.启动elasticsearch 4.查看启动日志 5.检查启动情况 三.部署logstash 1.解压logstash 2.修改配置文件gp-logstash.conf 3.启动logstash 4.检查启动情况 四.部署filebeat 1.解压filebeat 2.添加配置文件 3.启动filebeat并加载配置文件 4.检查启动情况 五.部署kibana 1.解压kibana 2.添加配置文件 3.启动kibana 4.检查启动情况 六.检查所有服务启动情况 一.环境介绍: 1.软件版本 elasticsearch-7.4.2 filebeat-7.4.2 kibana-7.4.2 logstash-7.4.2 集群环境三台机器 192.168.1.89:9200 192.168.1.89:9202 192.168.1.89:9203 192.168.1.89:9300 192.168.1.89:9302 192.168.1.89:9303 自身环境机器如果更多可以更改IP地址和端口 IP 监听端口 系统 es集群名称 es节点名称 es版本 kibana版本 192.168.1.89 9200/9300 Linux3.10.el7.x86_64 es es1 7.4.2 7.4.2 192.168.1.89 9202/9302 Linux3.10.el7.x86_64 es es2 7.4.2 7.4.2 192.168.1.89 9203/9303 Linux3.10.el7.x86_64 es es3 7.4.2 7.4.2 架构图 1.1软件介绍 Elasticsearch Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它主要是集中存储数据。 Kibana Kibana 是一个可扩展的用户界面,主要是将数据可视化展示和管理 Logstash Logstash 是动态数据收集管道,拥有可扩展的插件生态系统。 Beats Beats 是一个面向轻量型采集器的平台,这些采集器可从边缘机器发送数据。本次使用的是Beats中的Filebeat,Filebeat主要作用是抓取日志文件。 日志抓取流程 1. 在每台服务器中安装一个Filebeat,Filebeat就能抓取该服务器中不同程序产生的日志; 2. FileBeat将抓取的日志转发给Logstash; 3.由Logstash整合每台服务器发送过来的日志信息,可以实现过滤、转换格式等; 4. Logstash将转换好的日志信息发送给Elasticsearch; 5. Elasticsearch收到日志信息后,将其存储在服务器中,并支持数据转换等操作; 1.2操作系统版本 linux-el7.x86_64,4核8G 2.安装jdk jdk可以用es自带的,路径在/usr/local/elk/elasticsearch-7.4.2/jdk 3.配置环境变量 PATH=$PATH:$HOME/bin:/usr/local/elk/elasticsearch-7.4.2/bin export JAVA_HOME=/usr/local/elk/elasticsearch-7.4.2/jdk/ export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar export PATH 4.创建用户 useradd elsearch 5.赋予权限 chown -R elsearch:elsearch elk/ 6.配置系统参数 vim /etc/sysctl.conf vm.max_map_count=655360 sysctl -p /etc/sysctl.conf vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 32000 * hard nproc 32000 * hard memlock unlimited * soft memlock unlimited 二.部署elasticsearch 1.解压elasticsearch并配置安全认证 从 6.8.0 和 7.1.0 版本开始, Elastic Stack安全功能免费提供。用户现在能够对网络流量进行加密、创建和管理用户、定义能够保护索引和集群级别访问权限的角色,并且使用 Spaces 为 Kibana 提供全面保护。下面介绍怎么配置安全认证。 首先生成证书,通过这些证书便能允许节点安全地通信。允许使用企业 CA 来完成这一步骤,但是在此文档中不配置CA,通过使用一个名为 elasticsearch-certutil 的命令来解决此问题。 l进入压缩包主目录下,然后执行以下命令,这将会生成一个密码文件至config目录下。 bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass "" #将elastic-certificates.p12文件的权限改为elsearch用户 chown elsearch:elsearch config/elastic-certificates.p12 -R l执行以下命令配置用户的密码,这些用户都是系统级别(已写死),配置的用户包括:elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user(此步骤需要在程序运行之后才能执行,否则会报错) ./bin/elasticsearch-setup-passwords interactive 默认密码都设置的123456,注意有安全要求时设置复杂密码 添加一个管理员并设置密码123456 ./bin/elasticsearch-users useradd es -r superuser 简洁操作(生成证书、复制证书) 配置ES集群间 TLS 和 身份验证 生成证书 /usr/local/elk/elasticsearch-7.4.2/bin/elasticsearch-certutil cert -out /usr/local/elk/elasticsearch-7.4.2/config/elastic-certificates.p12 -pass "" 复制证书 cp elastic-certificates.p12 ../../elasticsearch-7.4.2-02/config/ cp elastic-certificates.p12 ../../elasticsearch-7.4.2-03/config/ 2.编辑配置文件elasticsearch.yml bootstrap.memory_lock: true #network.host: 0.0.0.0 cluster.name: es node.name: "es1" network.host: 192.168.1.89 network.bind_host: 192.168.1.89 network.publish_host: 192.168.1.89 discovery.seed_hosts: ["192.168.1.89:9300", "192.168.1.89:9302", "192.168.1.89:9303"] cluster.initial_master_nodes: ["192.168.1.89:9300", "192.168.1.89:9302", "192.168.1.89:9303"] #discovery.zen.ping.unicast.hosts: ["192.168.1.89:9300", "192.168.1.89:9302","192.168.1.89:9303"] #discovery.zen.ping.unicast.hosts: ["192.168.1.89:9200", "192.168.1.89:9202","192.168.1.89:9203"] transport.tcp.port: 9300 http.port: 9200 #discovery.zen.ping.unicast.hosts: ["192.168.1.89:9300"] discovery.zen.minimum_master_nodes: 1 discovery.zen.ping_timeout: 120s client.transport.ping_timeout: 60s indices.queries.cache.size: 20% indices.fielddata.cache.size: 40% indices.memory.index_buffer_size: 30% node.master: true node.data: true thread_pool.search.queue_size: 1000 thread_pool.search.size: 200 thread_pool.search.min_queue_size: 10 thread_pool.search.max_queue_size: 1000 thread_pool.search.auto_queue_frame_size: 2000 thread_pool.search.target_response_time: 6s xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: /usr/local/elk/elasticsearch-7.4.2/config/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: /usr/local/elk/elasticsearch-7.4.2/config/elastic-certificates.p12 path.data: /usr/local/elk/elasticsearch-7.4.2/data path.logs: /usr/local/elk/elasticsearch-7.4.2/logs 注意: 集群环境如下的配置根据各自环境进行配置 cluster.name: es node.name: "es1" discovery.seed_hosts: cluster.initial_master_nodes: transport.tcp.port: 9300 http.port: 9200 xpack.security.transport.ssl.truststore.path: xpack.security.transport.ssl.keystore.path: path.data: path.logs: elasticsearch.yml关键配置说明: cluster.name 集群名称,名称一致代表同一个集群 node.name 节点名称,标识集群中的不同节点 network.host/http.port 网络地址和端口,用于http和tranport服务使用 path.data 数据存储地址 path.log 日志存储地址 xpack.security.transport.ssl.truststore.path: 证书存放的位置,集群中的证书要一致 xpack.security.transport.ssl.keystore.path: transport.tcp.port: 9300 程序端口和网页访问端口 http.port: 9200 discovery.seed_hosts: 集群中的其他节点 discovery.zen.ping.unicast.hosts:和上面相同二选一 cluster.initial_master_nodes: 填写主节点的位置,服务启动时将选为主节点 3.启动elasticsearch su - elsearch cd /usr/local/elk/elasticsearch-7.4.2 ./bin/elasticsearch -d 启动服务 /usr/local/elk/elasticsearch-7.4.2/bin/elasticsearch -d -p /usr/local/elk/elasticsearch-7.4.2/run/es1.pid /usr/local/elk/elasticsearch-7.4.2-02/bin/elasticsearch -d -p /usr/local/elk/elasticsearch-7.4.2-02/run/es2.pid /usr/local/elk/elasticsearch-7.4.2-03/bin/elasticsearch -d -p /usr/local/elk/elasticsearch-7.4.2-03/run/es3.pid 停止es服务 cat /usr/local/elk/elasticsearch-7.4.2/run/es1.pid | xargs kill -HUP cat /usr/local/elk/elasticsearch-7.4.2-02/run/es2.pid | xargs kill -HUP cat /usr/local/elk/elasticsearch-7.4.2-03/run/es3.pid | xargs kill -HUP 注:HUP监听的,已经建立的连接(不同的 pid)不会断 删除日志文件 rm -f /usr/local/elk/elasticsearch-7.4.2/logs/* rm -f /usr/local/elk/elasticsearch-7.4.2-02/logs/* rm -f /usr/local/elk/elasticsearch-7.4.2-03/logs/* 4.查看启动日志 /usr/local/elk/elasticsearch-7.4.2/logs/elasticsearch.log 5.检查启动情况 ps -ef|grepelasticsearch 验证es访问情况 curl -u elastic:123456 -XGET 'http://192.168.1.89:9200/_cat/nodes?v' curl -u elastic:123456 -XGET 'http://192.168.1.89:9202/_cat/nodes?v' curl -u elastic:123456 -XGET 'http://192.168.1.89:9203/_cat/nodes?v' 能够访问代表es的身份认证和es启动都没有问题,但是数据没有更新需要将data目录下面的删除掉然后再进行重启,即可 /usr/local/elk/elasticsearch-7.4.2-02/data 这样显示的则是正常的ES集群,如果有一台挂掉了会根据配置文件中的nodid进行选举最小值的成为新的主节点。 验证访问地址 http://192.168.1.89:9200/ http://192.168.1.89:9202/ http://192.168.1.89:9203/ elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user 默认密码都设置的123456 三.部署logstash 1.解压logstash 2.修改配置文件gp-logstash.conf cat gp-logstash.conf input { beats{ port => "5044" } } filter { if [fields][log_format] == "gp-gpc"{ grok { match => {"message" => "%{TIME:logTime} %{WORD:logType} %{DATA:class}-%{GREEDYDATA:logMessage}"} } } else if [fields][log_format] == "gp-auth"{ grok { match => {"message" => "%{DATA:logTime} %{NUMBER:relative} \[%{DATA:thread}\] %{WORD:logType} %{DATA:class}-%{GREEDYDATA:logMessage}"} } date { match => ["logTime","yyyy-MM-dd HH:mm:ss"] target => "@timestamp" } } else { if [fields][log_format] == "gp-count"{ grok { match => {"message" => "%{TIMESTAMP_ISO8601:logTime} \[%{DATA:thread}\] %{GREEDYDATA:log_json}"} } json { source => "log_json" remove_field=>["log_json"] } } else if [fields][log_format] == "gp-gpx"{ grok { match => {"message" => "%{TIMESTAMP_ISO8601:logTime} %{DATA:logType} %{NUMBER:Pid} --- \[%{DATA:thread}\] %{DATA:class}:%{GREEDYDATA:logMessage}"} } } else if [fields][log_format] == "gp-gpc-tomcat"{ grok { match => {"message" => "%{TIMESTAMP_ISO8601:logTime} %{DATA:logType} \(%{DATA:class}:%{NUMBER:number}\) -%{GREEDYDATA:logMessage}"} } } else { grok { match => {"message" => "%{TIMESTAMP_ISO8601:logTime} \[%{DATA:thread}\] %{WORD:logType} %{DATA:class}-%{GREEDYDATA:logMessage}"} } } date { match => ["logTime", "ISO8601"] target => "@timestamp" } } } output{ elasticsearch { hosts => "http://192.168.1.89:9200" user => "elastic" password => "admin123" index => "%{[fields][log_type]}-%{+YYYY.MM.dd}" } } 3.启动logstash nohup ./logstash -f config/gp-logstash.conf & logstash启动成功 4.检查启动情况 ps -ef|greplogstash 四.部署filebeat 1.解压filebeat 2.添加配置文件 vim mybeat.yml filebeat.inputs: - type: log enabled: true close_older: 24h max_bytes: 1048576 paths: - /usr/local/log/gp-gateway-center/log_debug.log - /usr/local/log/gp-gateway-center/log_error.log - /usr/local/log/gp-gateway-center/log_info.log - /usr/local/log/gp-gateway-center/log_warn.log fields: log_type: gp-gateway-center log_format: gp-other multiline.pattern: '^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}' multiline.negate: true multiline.match: after - type: log enabled: true close_older: 24h max_bytes: 1048576 paths: - /usr/local/log/gp-gateway-center/log_count.log fields: log_type: gp-gateway-count log_format: gp-count multiline.pattern: '^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}' multiline.negate: true multiline.match: after 3.启动filebeat并加载配置文件 nohup ./filebeat -e -c mybeat.yml & disown 4.检查启动情况 ps -ef|grepfilebeat 五.部署kibana 1.解压kibana elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user 密码都是123456 kibana同样不允许root用户直接运行,所以要使用elsearch或普通用户运行 mkdir /usr/local/elk/kibana-7.4.2-linux-x86_64/run chown elsearch:elsearch kibana-7.4.2-linux-x86_64/ -R 2.添加配置文件 vim kibana.yml server.port: 5601 server.host: "0.0.0.0" server.name: "192.168.1.89" elasticsearch.hosts: ["http://192.168.1.89:9200"] elasticsearch.ssl.verificationMode: "none" elasticsearch.requestTimeout: 90000 xpack.security.encryptionKey: "something_at_least_32_characters" xpack.reporting.encryptionKey: "a_random_string" elasticsearch.username: "elastic" elasticsearch.password: "admin123" i18n.locale: "zh-CN" 3.启动kibana nohup /usr/local/elk/kibana-7.4.2-linux-x86_64/bin/kibana & 4.检查启动情况 ps -ef|grepnode 访问地址 http://192.168.1.89:5601 账户密码elastic 123456 配置 Heartbeat 运行监测 根据上面地址下载插件然后安装即可 安装完成修改配置文件/etc/heartbeat/heartbeat.yml 修改完成配置文件后使用命令heartbeat setupsetup 命令加载 Kibana 索引模式 启动heartbeat 服务 检查数据 数据加载完全后,这样显示的,三台es集群,正常情况下应该是不同的IP的三台机器,这里是因为机器紧张做的,效果已经出来,到此es集群搭建完毕。 六.检查所有服务启动情况 检查elasticsearch 检查filebeat 检查kibana 检查logstash 针对如下两种情况才推出的轻量级的filebeat,获取容器中的日志说明 (1)日志从容器挂载至ELK服务器缓慢 (2)日志在Logstash格式化解析缓慢 filebeat存在一个严重的弊端会占用系统资源,日志量越大消耗的系统资源情况越多,有的企业节点机或者容器给的资源紧缺,所以就放弃使用了filebeat 现在服务器产生的日志有以下几种 1)程序自定义产生的日志(*.log或者*.file文件) 2)Java程序后台启动的日志输出文件nohup.out 3)tomcat程序的日志输出文件catalina.out 4)容器的日志(获取的内容是容器内部的标准化控制台输出) 这几种日志的nohup.out、catalina.out、容器日志都会被华为云的AOM所截取(并不会保留相关文件)。 因此ELK想要获取程序的日志,只能通过程序自定义产生的日志。使用程序自定义产生的日志可控性更高。 1.2.2ELK概述 ELK日志管理系统提供了强大的日志管理能力。 ELK总体上分为四部分,ES用于日志的存储、Logstash用于日志的解析和格式化、Kibana用于日志界面的展示、Filebeat用于日志的截取。 ELK包含了日志定期清理功能(清除ES存储的日志)。 ELK日志管理系统可以不影响AOM的使用。 1.2.3日志传输 旧版使用ELK获取容器内部日志的流程如下图所示: 此流程在日志文件挂载和日志切割格式化过程耗时缓慢。 新版方案如下图所示: 此方案由容器内部进行日志的获取和推送,减少了日志挂载过程中的耗时问题。在开发环境测试时,日志切割格式化缓慢的原因很大程度在于服务器资源不够。如果能提高服务器资源,可以提高日志格式化的效率。 此方案的弊端机器耗费filebeat客户端所在的容器内的资源,在生产环境安装时,一定要考虑资源情况,如果资源不够,要放弃filebeat的使用 2.1.1准备filebeat启动脚本 filebeat程序主要是将程序的日志进行读取和分割,最后将读取的日志推送至logstash服务中。因为考虑到多环境的部署,此logstash服务的IP地址需要可配置。并且考虑到某些私有化部署可能不需要filebeat,因此filebeat的启动也需要进行控制。 因此需要单独准备一个脚本用于控制上述两个问题。脚本内容如下所示: #!/bin/bashlogstash=$1filebeatEnable=$2if [ $filebeatEnable = "false" ]; thenecho "Do not start the filebeat program!Because filebeat Archive not exist"elsetar -C /usr/local/project -zxvf /usr/local/project/filebeat-7.4.2-linux-x86_64.tar.gzcp /usr/local/project/mybeat.yml /usr/local/project/filebeat-7.4.2-linux-x86_64/mybeat.ymlnohup /usr/local/project/filebeat-7.4.2-linux-x86_64/filebeat -e -E output.logstash.hosts=["$logstash"] -c /usr/local/project/filebeat-7.4.2-linux-x86_64/mybeat.yml & disownstatus=$?if [ $status -ne 0 ]; thenecho "Failed to start filebeat: $status"exit $statusfifi 2.1.2构建基础镜像 需要基于原始的Java8镜像或者其他Java基础镜像构建出一个新的基础镜像。 新版的基础镜像需要新增两个文件,分别是: (1)filebeat程序的压缩包。 (2)启动filebeat程序的启动脚本。 构建基础镜像的操作步骤如下: (1)基于基础镜像创建容器。 (2)将程序包拷贝至容器内部。指定目录为/usr/local/project (3)将脚本文件拷贝至容器内部。指定目录为/usr/local/project (4)修改脚本文件的权限为可执行。 (5)基于容器构建新版本镜像(bosssoft/java:8.0.1) 2.1.3 jar包程序,更改Dockerfile 在容器内部需要同时启动filebeat和应用程序。因此需要修改每个服务的Dockerfile文件。Dockerfile模板示例如下所示: FROM bosssoft/java:8.0.1WORKDIR /usr/local/projectENV apollo DEVENV logstash 192.168.8.108:5044ENV upEnv ""ENV filebeatEnable falseADD mybeat /usr/local/project/mybeat.ymlADD gp-portal-center-docker-cloud.jar gp-portal-center-docker-cloud.jarEXPOSE 7004CMD ./run.sh $logstash $filebeatEnable ; java -Denv=$apollo $upEnv -Duser.timezone=GMT+8 -Xms512m -Xmx1024m -jar -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/OOM /usr/local/project/gp-portal-center-docker-cloud.jar l基于构建的基础镜像,并规定工作空间为/usr/local/project,和filebeat压缩包同级目录。 l准备4个环境变量参数。 napollo: 指定apollo启动的环境,即指定读取apollo服务的地址。 nlogstash: 指定logstash服务的IP和端口号 nupEnv: 指定启动程序时的参数。目前可用于指定apollo服务的地址,多用于私有化部署。参数内容为:-Dapollo.meta=http://dev.apollo.com:8099。默认值为空,即使用apollo指定的地址。 nfilebeatEnable: 指定是否需要启动filebeat进行日志的推送。 l将filebeat的配置文件上传至容器内部 l拷贝程序包 l通过CMD指定同时执行多个脚本。命令通过分号分隔,意思为不管filebeat是否启动成功,都执行后续的程序包。 2.1.4准备mybeat文件 mybeat文件是filebeat读取日志的配置文件。内部指定了程序所需要读取的日志目录,以及读取日志的其他规则。 示例文件如下所示: filebeat.inputs:- type: logenabled: trueclose_older: 24hmax_bytes: 1048576scan_frequency: 3sbackoff: 1smax_backoff: 1sbackoff_factor: 1paths:- /usr/local/project/gp-portal-center-log/log_debug.log- /usr/local/project/gp-portal-center-log/log_error.log- /usr/local/project/gp-portal-center-log/log_info.log- /usr/local/project/gp-portal-center-log/log_warn.logfields:log_type: gp-portal-centerlog_format: gp-othermultiline.pattern: '^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}'multiline.negate: truemultiline.match: after 2.1.5重新构建业务镜像 最后重新构建业务镜像,通过新版本的Dockerfile文件进行构建,并运行容器。 2.2.1准备filebeat启动脚本 与Java程序相同,在tomcat镜像启动的容器中启动filebeat也需要考虑到两个问题,即filebeat的启动可配置和logstash的IP地址可配置。 所以脚本内容和Java程序的一致即可,具体内容如下所示: #!/bin/bashlogstash=$1filebeatEnable=$2if [ $filebeatEnable = "false" ]; thenecho "Do not start the filebeat program!Because filebeat Archive not exist"elsetar -C /usr/local/project -zxvf /usr/local/project/filebeat-7.4.2-linux-x86_64.tar.gzcp /usr/local/project/mybeat.yml /usr/local/project/filebeat-7.4.2-linux-x86_64/mybeat.ymlnohup /usr/local/project/filebeat-7.4.2-linux-x86_64/filebeat -e -E output.logstash.hosts=["$logstash"] -c /usr/local/project/filebeat-7.4.2-linux-x86_64/mybeat.yml & disownstatus=$?if [ $status -ne 0 ]; thenecho "Failed to start filebeat: $status"exit $statusfifi 2.2.2构建基础镜像 基于原始的tomcat镜像,或者其他tomcat基础镜像构建出一个新版本的镜像。 新版的基础镜像需要新增两个文件,分别是: (3)filebeat程序的压缩包。 (4)启动filebeat程序的启动脚本。 操作步骤如下: (6)基于基础镜像创建容器。 (7)将程序包拷贝至容器内部。指定目录为/usr/local/project (8)将脚本文件拷贝至容器内部。指定目录为/usr/local/project (9)修改脚本文件的权限为可执行。 (10)基于容器构建新版本镜像(bosssoft/tomcat:8.0.1) 2.2.3 tomcat程序包,更改Dockerfile 在容器内部需要同时启动filebeat和应用程序。因此需要修改每个服务的Dockerfile文件。Dockerfile模板示例如下所示: FROM bosssoft/tomcat:8MAINTAINER GP-PLATFORMWORKDIR /usr/local/tomcat/webappsENV apollo DEVENV logstash 192.168.8.108:5044ENV upEnv ""ENV filebeatEnable falseRUN sed -i 's#"8080"#"7002"#' /usr/local/tomcat/conf/server.xmlRUN sed -i '2s#^#CATALINA_OPTS="$CATALINA_OPTS-javaagent:/usr/local/agent/skywalking-agent.jar -Dskywalking.agent.service_name=gp-auth-center -Dskywalking.agent.application_code=gp-auth-center -Denv=$apollo $upEnv";#' /usr/local/tomcat/bin/catalina.shRUN sed -i '2a export CATALINA_OPTS' /usr/local/tomcat/bin/catalina.shADD mybeat /usr/local/project/mybeat.ymlADD gp-auth-center.war gp-auth-center.warEXPOSE 7002CMD /usr/local/project/run.sh $logstash $filebeatEnable ; /usr/local/tomcat/bin/catalina.sh run l基于构建的基础镜像,并规定工作空间为/usr/local/tomcat/webapps。 l准备4个环境变量参数。 napollo: 指定apollo启动的环境,即指定读取apollo服务的地址。 nlogstash: 指定logstash服务的IP和端口号 nupEnv: 指定启动程序时的参数。目前可用于指定apollo服务的地址,多用于私有化部署。参数内容为:-Dapollo.meta=http://dev.apollo.com:8099。默认值为空,即使用apollo指定的地址。 nfilebeatEnable: 指定是否需要启动filebeat进行日志的推送。 l将参数写入至tomcat的启动脚本中 l将filebeat的配置文件上传至容器内部 l拷贝程序包 l通过CMD指定同时执行多个脚本。命令通过分号分隔,意思为不管filebeat是否启动成功,都执行后续的程序包。 2.2.4准备mybeat文件 mybeat文件是filebeat读取日志的配置文件。内部指定了程序所需要读取的日志目录,以及读取日志的其他规则。 示例文件如下所示: filebeat.inputs:- type: logenabled: trueclose_older: 24hmax_bytes: 1048576scan_frequency: 3sbackoff: 1smax_backoff: 1sbackoff_factor: 1paths:- /usr/local/tomcat/webapps/gp-auth-center-log/log_debug.log- /usr/local/tomcat/webapps /gp- auth -center-log/log_error.log- /usr/local/tomcat/webapps /gp- auth -center-log/log_info.log- /usr/local/tomcat/webapps /gp- auth -center-log/log_warn.logfields:log_type: gp-auth-centerlog_format: gp-othermultiline.pattern: '^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}'multiline.negate: truemultiline.match: after 2.2.5重新构建业务镜像 最后重新构建业务镜像,通过新版本的Dockerfile文件进行构建,并运行容器。 filebeat只在测试环境使用了,并没有在线上环境使用,线上环境放弃了featbeat使用elk的集群直接用logstash读取了本地nas存储中的日志文件