网站建设维护工作职责,免费公司网页制作,wordpress中home page,购物网站如何建设去年公司由于不断发展#xff0c;内部自研系统越来越多#xff0c;所以后来搭建了一个日志收集平台#xff0c;并将日志收集功能以二方包形式引入自研系统#xff0c;避免每个自研系统都要建立一套自己的日志模块#xff0c;节约了开发时间#xff0c;管理起来也更加容易…去年公司由于不断发展内部自研系统越来越多所以后来搭建了一个日志收集平台并将日志收集功能以二方包形式引入自研系统避免每个自研系统都要建立一套自己的日志模块节约了开发时间管理起来也更加容易。这篇文章主要介绍ELK最新版本的搭建二方包的介绍可以看小霸王的另外一篇文章。ELK介绍Elasticsearch 是一个分布式、Restful 风格的搜索和数据分析引擎能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心Elasticsearch 会集中存储您的数据让您飞快完成搜索并对数据进行强大的分析。Logstash 是免费且开放的服务器端数据处理管道能够从多个来源采集数据转换数据然后将数据发送到数据库中。Kibana 是一个免费且开放的用户界面能够让您对 Elasticsearch 数据进行可视化从跟踪查询负载到查看应用请求的整个过程都能轻松完成。搭建平台版本平台版本linuxcentos stream 9javaopenjdk 17elasticsearch8.6.2logstash8.6.2kibana8.6.2VMware Workstation Pro17安装首先在linux虚拟机上安装docker先卸载旧版本sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine升级yumyum update设置仓库yum install -y yum-utils device-mapper-persistent-data lvm2使用阿里云镜像地址yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装 Docker Engine-Communitysudo yum install docker-ce docker-ce-cli containerd.io设置docker开机启动并启动dockersudo systemctl enable docker
sudo systemctl start docker至此docker已安装完成可以使用docker -v查看版本接下来就要安装三大金刚了docker pull elasticsearch:8.6.2
docker pull kibana:8.6.2
docker pull logstash:8.6.2启动elasticsearch接着先挂载elasticsearch的配置文件方便以后修改首先创建elasticsearch.yml文件cluster.name: docker-cluster
network.host: 0.0.0.0
discovery.seed_hosts: 0.0.0.0
network.bind_host: 0.0.0.0
http.port: 9200# Enable security features
xpack.security.enabled: falsexpack.security.enrollment.enabled: false# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:enabled: false# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:enabled: false
创建elasticsearch容器docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -v /home/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -e discovery.typesingle-node elasticsearch:8.6.2启动elasticsearch容器docker start elasticsearch
浏览器输入http://你的虚拟机ip:9200 显示如下说明es启动成功kibana创建kibana容器,这里使用到汉化 -e I18N_LOCALEzh-CNdocker run -d --name kibana --link elasticsearch:elasticsearch -e I18N_LOCALEzh-CN -p 5601:5601 kibana:8.6.2启动kibanadocker start kibana输入http://你的虚拟机ip:5601/ 此时kibana启动成功logstash在linux的/home目录下新建logstash.yml文件其中index是索引的名称我们使用“xiaobawang-”前缀加时间来生成每天的索引。# 输入端
input {stdin { } #为logstash增加tcp输入口后面springboot接入会用到tcp {mode serverhost 0.0.0.0port 5043codec json_lines}
}#输出端
output {stdout {codec rubydebug}elasticsearch {hosts [http://你的虚拟机ip地址:9200]# 输出至elasticsearch中的自定义index名称index xiaobawang-%{YYYY.MM.dd}}
}然后启动logstash这里配置文件做了映射/home/logstash.yml映射到/usr/share/logstash/pipeline/logstash.ymldocker run -d --name logstash -p 5043:5043 -p 5044:5044 --privilegedtrue -v /home/logstash.yml:/usr/share/logstash/pipeline/logstash.yml logstash:8.6.2进入logstash容器docker exec -it logstash /bin/bash安装json_lines所需的插件/usr/share/logstash/bin/logstash-plugin install logstash-codec-json_lines重启logstash至此elk已全部安装完成了。docker restart logstashSpringboot整合logstash下面使用logstash来将日志发送到elasticsearch这里以springboot为例。新建一个springboot项目引入如下包dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactId
/dependency
dependencygroupIdnet.logstash.logback/groupIdartifactIdlogstash-logback-encoder/artifactIdversion7.3/version
/dependency在resources文件夹下创建logback.xml?xml version1.0 encodingUTF-8?
configuration debugfalse!--获取springboot的yml配置信息--springProperty scopecontext nameapplicationName sourcespring.application.name defaultValuedefault/!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--property nameLOG_HOME value/home/!--输出到控制台--appender nameconsole classch.qos.logback.core.ConsoleAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelINFO/level/filterwithJansifalse/withJansiencoder!--pattern%d %p (%file:%line)- %m%n/pattern--!--格式化输出%d:表示日期 %thread:表示线程名 %-5level:级别从左显示5个字符宽度 %msg:日志消息 %n:是换行符--pattern%d{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) -- %boldMagenta([%thread]) %boldCyan(%logger) : %msg%n/patterncharsetUTF-8/charset/encoder/appender!-- 日志发送至logstash --appender namelogstash classnet.logstash.logback.appender.LogstashTcpSocketAppender!-- logstash的服务器地址和通信端口 --destination你的虚拟机IP地址:5043/destination!-- encoder is required --encoder classnet.logstash.logback.encoder.LogstashEncoder!-- 在elasticsearch的index中追加applicationName字段 --customFields{applicationName:${applicationName}}/customFields/encoder/appender!-- 按照每天生成日志文件 --appender nameFILE classch.qos.logback.core.rolling.RollingFileAppenderrollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!--日志文件输出的文件名--FileNamePattern${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log/FileNamePattern!--日志文件保留天数--MaxHistory30/MaxHistory/rollingPolicyencoder classch.qos.logback.classic.encoder.PatternLayoutEncoder!--格式化输出%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符--pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern/encoder!--日志文件最大的大小--triggeringPolicy classch.qos.logback.core.rolling.SizeBasedTriggeringPolicyMaxFileSize10MB/MaxFileSize/triggeringPolicy/appender!-- 日志输出级别 --root levelINFOappender-ref reflogstash/appender-ref refconsole//root
/configuration新建一个controller请求RestControllerpublicclassTestController {privatefinalstatic Logger logger LoggerFactory.getLogger(TestController.class);RequestMapping(/myTest)publicvoidtest(){logger.info(日志开始System.currentTimeMillis());logger.info(日志结束System.currentTimeMillis());}
}
访问完请求后进入Stack Management找到索引管理可以看到springboot的3月4号日志已经生成下面进一步查看日志的内容。点击左侧菜单选择Discover创建数据视图因为索引名称前缀是xiaobawang-所以索引模式填写xiaobawang-*就可以匹配每天生成的日志。至此ELK已经搭建完成但kibana的功能远远不限于此还可以查看不同维度的数据视图报表有兴趣的童鞋可以研究研究。觉得有用的话一键三连~