网站建设到上线的步骤过程,用wordpress编写网站,模板网站系统,抖音代运营招商背景
很多公司还是在单体项目中苦苦挣扎#xff0c;没有必要上elk系统#xff0c;大家都懂的一个原则系统的技术栈越多系统越复杂#xff0c;维护起来也越麻烦#xff0c;在没有大流量高并发的情况下我们就用单体服务挺舒服。我们行业的特殊性做的都是BTB的项目#xff0…背景
很多公司还是在单体项目中苦苦挣扎没有必要上elk系统大家都懂的一个原则系统的技术栈越多系统越复杂维护起来也越麻烦在没有大流量高并发的情况下我们就用单体服务挺舒服。我们行业的特殊性做的都是BTB的项目并发更是少的可怜唯一出问题的可能性就是联表太多效率低了下来做的和erp系统一样的臃肿。在追求微服务多节点部署的情况下这时就有必要使用ELK系统去查问题的可能性。不同服务之间的业务调用日志打印在不同目录下这样就提高的查问题的效率同时也提高了日志分析的方便性提高了效率。
我用的版本都是 6.7.2 很久之前pull下来的镜像现在镜像加速好像失效了去找个加速换下重启就能用了 需要尝试不知道什么时候就又失效了
logstash 7.6.2 fa5b3b1e9757 4 years ago 813MB
kibana 7.6.2 f70986bc5191 4 years ago 1.01GB
elasticsearch 7.6.2 f29a1ee41030 4 years ago 791MB
大家可以看到是4年前pull的版本了
docker镜像加速
在linux系统上看下是否在目录下存在文件
[rootlocalhost ~]# cat /etc/docker/daemon.json
{registry-mirrors: [https://qoe0omj6.mirror.aliyuncs.com]
}
有修改registry-mirrors 可以多添加几个有能使用的我这个是不能使用。
然后重启docker 验证能否pull镜像
[rootlocalhost ~]# systemctl daemon-reload
[rootlocalhost ~]# systemctl restart docker
docker获取镜像
[rootlocalhost ~]# docker pull elasticsearch 不加版本默认最新版本
[rootlocalhost ~]# docker pull elasticsearch:6.7.2 指定下载最新版本
其他两组件也是这样获取注意使用版本一致的中间件不然会有兼容的问题
镜像启动
elasticsearch启动
mkdir -p /home/elasticsearch/config 创建文件夹后面启动容器使用mkdir -p /home/elasticsearch/dataecho http.host: 0.0.0.0 /home/elasticsearch/config/elasticsearch.yml 创建配置文件写入 可以用标准的配置文件 现在简单创建写下docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e discovery.typesingle-node \
-e cluster.nameelasticsearch \
-v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /home/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.6.2-p 选项用于将容器的端口映射到主机的端口。
--name elasticsearch 这为容器指定了一个名称elasticsearch便于后续管理和访问。您可以使用这个名称来停止、启动或删除容器。
-e 选项用于设置环境变量
-v 选项用于挂载卷将主机目录或文件挂载到容器内。
-d: 该选项表示以分离模式detached mode运行容器即在后台运行容器而不是在前台显示容器的日志。
-p 9200:9200 -p 9300:9300
9200 是 Elasticsearch 的 HTTP 端口通常用于发送 REST 请求。 9300 是 Elasticsearch 的传输端口通常用于节点间的通信。
这行命令将容器的 9200 和 9300 端口分别映射到主机的 9200 和 9300 端口。
-e discovery.typesingle-node 设置 discovery.type 为 single-node指示 Elasticsearch 以单节点模式运行适合开发和测试环境。
-e cluster.nameelasticsearch: 这一行设置了集群的名称为 elasticsearch。集群名称用于标识和管理多个节点的集群。
elasticsearch:7.6.2:这是要运行的 Docker 镜像的名称和标签。这里指定使用 elasticsearch 镜像的 7.6.2 版本。
直接ip:9200 如果出现页面部署成功 kibana启动
创建配置文件
vi /home/kibana/config/kibana.yml配置文件内容server.name: kibana
server.host: 0
#elasticsearch.hosts: [ http://elasticsearch:9200 ]
elasticsearch.hosts: [ http://elasticsearch的IP:9200 ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
#设置kibana中文显示
i18n.locale: zh-CN
启动kibana
docker run --name kibana -p 5601:5601 \
-v /home/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-d kibana:7.6.2 直接ip:5601 如果出现页面部署成功 logstash启动
创建些目录
mkdir -p /home/logstash/conf.d
mkdir -p /home/logstash/config
mkdir -p /home/logstash/logs在config下创建logstash.yml配置内容
http.host: 0.0.0.0
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.hosts: http://192.168.42.117:9200 # es地址
path.config: /usr/share/logstash/config/conf.d/*.conf
path.logs: /usr/share/logstash/logs可能出现的问题
xpack.monitoring.elasticsearch.hosts: http://127.0.0.1:9200 # es地址 能是虚拟机配置问题我需要用本机ip才能访问 用http://127.0.0.1 本地不能访问到 es/home/logstash/conf.d 目录下的文件 *.conf 配置的是服务日志传给logstash的一些配置input{tcp {mode serverhost 0.0.0.0port 4560 # 这个端口随意要配置到springboot项目中codec json_lines}
}
output{elasticsearch{hosts[192.168.42.117:9200]index gzllogstash-%{YYYY.MM.dd}}stdout { codec rubydebug }
}我用到的文件名字是log_to_es.conf 这个文件的内容就是上面的配置启动
docker run -p 9600:9600 -p 4560:4560 --namelogstash \--restartalways --privilegedtrue\-e ES_JAVA_OPTS-Xms1g -Xmx2g \-v /home/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \-v /home/logstash/conf.d:/usr/share/logstash/config/conf.d \-v /home/logstash/logs:/usr/share/logstash/logs \-d logstash:7.6.2springboot 传日志到logstash
添加依赖 注意选择对应springboot的版本
dependencygroupIdnet.logstash.logback/groupIdartifactIdlogstash-logback-encoder/artifactIdversion6.6/version
/dependency
配置logback-spring.xml
?xml version1.0 encodingUTF-8?
!-- 日志级别从低到高分为TRACE DEBUG INFO WARN ERROR FATAL如果设置为WARN则低于WARN的信息都不会输出 --
!-- scan:当此属性设置为true时配置文档如果发生改变将会被重新加载默认值为true --
!-- scanPeriod:设置监测配置文档是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。默认的时间间隔为1分钟。 --
!-- debug:当此属性设置为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 --
configuration scantrue scanPeriod30 seconds!-- 彩色日志依赖 --conversionRule conversionWordclr converterClassorg.springframework.boot.logging.logback.ColorConverter/conversionRule conversionWordwexconverterClassorg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter/conversionRule conversionWordwExconverterClassorg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter/!-- 日志文件储存地址, 通过application配置文件传入 --!-- springProperty scopecontext nameLOG_PATH sourcelogback.logDir /--!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--property nameLOG_PATH value./logs/springProperty scopecontext nameappName sourcespring.application.name/!-- 控制台彩色日志格式 --property nameCONSOLE_LOG_PATTERNvalue${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}/!-- 日志文件日志格式 --property nameFILE_LOG_PATTERNvalue${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%15t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}/!-- 控制台输出 --appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoder classch.qos.logback.classic.encoder.PatternLayoutEncoderpattern${CONSOLE_LOG_PATTERN}/patterncharsetUTF-8/charset/encoderfilter classch.qos.logback.classic.filter.LevelFilteronMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!-- 按照每天及大小生成日志文件 --appender nameFILE classch.qos.logback.core.rolling.RollingFileAppenderrollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy!--日志文件输出的文件名--FileNamePattern${LOG_PATH}/${appName}.%d{yyyy-MM-dd}.%i.log/FileNamePattern!--日志文件最大大小--maxFileSize100MB/maxFileSize!--日志文件保留天数--maxHistory30/maxHistory/rollingPolicyencoder classch.qos.logback.classic.encoder.PatternLayoutEncoderpattern${FILE_LOG_PATTERN}/patterncharsetUTF-8/charset/encoder!-- 过滤级别,如果想分类生成日志文件的话(分成debug、info、error等三个日志文件, 每个文件只记录自己级别的日志),1. 直接把这个 appender 复制三分改一下 FileNamePattern 和 name.2. 把 filter 注释去掉改一下 level 就可以了--!-- filter classch.qos.logback.classic.filter.LevelFilter--!-- levelinfo/level--!-- onMatchACCEPT/onMatch--!-- onMismatchDENY/onMismatch--!-- /filter--/appender!--输出到 logstash的 appender--appender namelogstash classnet.logstash.logback.appender.LogstashTcpSocketAppender!--远程logstash ip:port,port应该是logstash默认为4560你启动的是配置的端口 配置文件中的端口--destination192.168.42.117:4560/destinationencoder charsetUTF-8 classnet.logstash.logback.encoder.LogstashEncoder//appender!--配置异步日志--appender nameFILE_ASYNC classch.qos.logback.classic.AsyncAppender!--不丢失日志默认的如果队列的80%已满 则会丢弃TRACTDEBUGINFO级别的日志--discardingThreshold0/discardingThreshold!--更改默认的队列的深度改值会影响性能默认值是256--queueSize512/queueSize!--添加附加的appender,最多只能添加一个--appender-ref refFILE//appender!-- 日志输出级别如果使用springProfile, 就需要在application配置文件中通过 spring.profiles.activedev 来指定环境,也可以直接去掉 springProfile 这个标签或者把它整个注释掉--springProfile namegzl,prodroot levelINFOappender-ref refCONSOLE/appender-ref refFILE/appender-ref reflogstash//root!--项目包的路径--logger namecom.gzl.gateway levelINFO additivityfalseappender-ref refCONSOLE/appender-ref refFILE/appender-ref reflogstash//logger!--包--!--logger namecom.gzl.base.mapper levelOFF/logger--!--类--!--logger namecom.gzl.base.mapper.UserMapper. levelOFF/logger--!--方法--!--logger namecom.gzl.base.controller.UserController.selectUserRoleAuthority levelOFF/logger--!--不打印某个类下的日志--!-- logger namecom.gzl.base.mapper.ProductInfoMapper levelOFF/--/springProfile/configuration配置文件和正常的日志文件一样注意添加logstash相关的关键在于 !--输出到 logstash的 appender--appender namelogstash classnet.logstash.logback.appender.LogstashTcpSocketAppender!--远程logstash ip:port,port应该是logstash默认为4560你启动的是配置的端口 配置文件中的端口--destination192.168.42.117:4560/destinationencoder charsetUTF-8 classnet.logstash.logback.encoder.LogstashEncoder//appender后面还会更新配置输出日志的格式内容等问题 验证下是否日志传到logstash中了 docker logs -fn 1000 logstash
你能看到传过去的日志新写