简单网站首页怎么做,绿色网站欣赏,陕西企业电脑网站制作,app开发大概费用多少钱目前#xff0c;各个微服务系统的日志都保存在各自指定的目录中#xff0c;如果这些微服务部署在不同的服务器上#xff0c;那么日志文件也是分散在各自的服务器上。分散的日志不利于我们快速通过日志定位问题#xff0c;我们可以借助ELK来收集各个微服务系统的日志并集中展…目前各个微服务系统的日志都保存在各自指定的目录中如果这些微服务部署在不同的服务器上那么日志文件也是分散在各自的服务器上。分散的日志不利于我们快速通过日志定位问题我们可以借助ELK来收集各个微服务系统的日志并集中展示。
ELK即Elasticsearch、Logstash和Kibana首字母缩写。Elasticsearch用于存储日志信息Logstash用于收集日志Kibana用于图形化展示。
搭建ELK环境
在Windwos上搭建ELK环境较为麻烦这里我选择在CentOS7 上通过Docker来搭建ELK环境对Docker基本使用不熟悉的同学可以参考 Docker基础教程。
在此之前我们需要准备一台CentOS 7虚拟机。推荐大家使用Vagrant来创建创建教程可以参考使用Vagrant创建CentOS虚拟机。这里分享下我的Vagrantfile配置 Vagrant.configure(2) do |config|config.vm.box centos7config.vm.network private_network, ip: 192.168.33.10config.vm.hostname febsconfig.vm.provider virtualbox do |v|v.memory 6144v.cpus 2endend
上面配置了虚拟机的IP地址为192.168.33.10hostname为febs内存为6*1024MB6144MB即6GBcpu核心数为2。
安装docker
在CMD终端使用命令vagrant ssh连接虚拟机后运行sudo -s切换到root用户下面的示例都是用root用户完成的。
在Linux中安装Docker可以参考官方文档CentOS | Docker Docs主要分为下面这几步 卸载旧版本Docker如果系统之前没安装过Docker可以跳过 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 安装Docker所需要的包 yum install -y yum-utils \device-mapper-persistent-data \lvm2 设置稳定的仓库 yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo 安装最新版的Docker引擎 yum install docker-ce docker-ce-cli containerd.io 启动Docker systemctl start docker
查看是否安装成功 安装Docker Compose
安装好Docker后我们接着安装Docker Compose官方安装教程 Install | Docker Docs主要步骤为 获取Docker Compose的最新稳定版本 curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose 对二进制文件授予可执行权限 chmod x /usr/local/bin/docker-compose 创建link ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
查看是否安装成功 Docker Compose搭建ELK
在搭建ELK之前我们需要做一些准备工作。
正如官方所说的那样 Virtual memory | Elasticsearch Guide [8.15] | ElasticElasticsearch默认使用mmapfs目录来存储索引。操作系统默认的mmap计数太低可能导致内存不足我们可以使用下面这条命令来增加内存 sysctl -w vm.max_map_count262144
创建Elasticsearch数据挂载路径 mkdir -p /febs/elasticsearch/data
对该路径授予777权限 chmod 777 /febs/elasticsearch/data
创建Elasticsearch插件挂载路径 mkdir -p /febs/elasticsearch/plugins
创建Logstash配置文件存储路径 mkdir -p /febs/logstash
在该路径下创建logstash-febs.conf配置文件没有安装vim的话可以使用yum install vim命令安装 vim /febs/logstash/logstash-febs.conf
内容如下所示 input {tcp {mode serverhost 0.0.0.0port 4560codec json_lines}}output {elasticsearch {hosts es:9200index febs-logstash-%{YYYY.MM.dd}}}
创建ELK Docker Compose文件存储路径 mkdir -p /febs/elk
在该目录下创建docker-compose.yml文件 vim /febs/elk/docker-compose.yml
内容如下所示 version: 3services:elasticsearch:image: elasticsearch:6.4.1container_name: elasticsearchenvironment:- cluster.nameelasticsearch #集群名称为elasticsearch- discovery.typesingle-node #单节点启动- ES_JAVA_OPTS-Xms512m -Xmx512m #jvm内存分配为512MBvolumes:- /febs/elasticsearch/plugins:/usr/share/elasticsearch/plugins- /febs/elasticsearch/data:/usr/share/elasticsearch/dataports:- 9200:9200kibana:image: kibana:6.4.1container_name: kibanalinks:- elasticsearch:es #配置elasticsearch域名为esdepends_on:- elasticsearchenvironment:- elasticsearch.hostshttp://es:9200 #因为上面配置了域名所以这里可以简写为http://es:9200ports:- 5601:5601logstash:image: logstash:6.4.1container_name: logstashvolumes:- /febs/logstash/logstash-febs.conf:/usr/share/logstash/pipeline/logstash.confdepends_on:- elasticsearchlinks:- elasticsearch:esports:- 4560:4560
切换到/febs/elk目录下使用如下命令启动 docker-compose up -d
第一次启动的时候Docker需要拉取ELK镜像过程可能稍慢耐心等待即可。成功启动后观察容器运行情况 三个容器都已经启动成功。
Logstash中安装json_lines插件
使用如下命令进入到Logstash容器中 docker exec -it logstash /bin/bash
切换到/bin目录安装json_lines插件然后退出 使用浏览器访问http://192.168.33.10:5601便可以看到Kibana管理界面 修改微服务日志配置
就目前微服务模块来说我们比较关注febs-auth、febs-gateway、febs-server-system和febs-server-test模块的日志所以我们分别在febs-auth、febs-gateway和febs-server模块的pom里引入Logstash依赖 dependencygroupIdnet.logstash.logback/groupIdartifactIdlogstash-logback-encoder/artifactIdversion6.1/version/dependency
然后在febs-auth、febs-gateway、febs-server-system和febs-server-test模块的日志配置文件logback-spring.xml里添加如下配置 !--输出到 logstash的 appender--appender namelogstash classnet.logstash.logback.appender.LogstashTcpSocketAppenderdestination192.168.33.10:4560/destinationencoder charsetUTF-8 classnet.logstash.logback.encoder.LogstashEncoder//appender......root levelinfo......appender-ref reflogstash //root
192.168.33.10:4560对应我们刚刚搭建的Logstash地址。
演示
依次启动febs-register、febs-gateway、febs-auth、febs-server-system和febs-server-test模块然后回到Kibana管理界面创建Kinaba Index Patterns 在Index pattern里输入我们在logstash配置文件logstash-febs.conf里output.index指定的值febs-logstash-* 点击Next Step在下拉框里选择timestamp 最后点击Create Index Pattern按钮完成创建。
使用PostMan获取令牌 然后发送一笔localhost:8301/test/hello?name夏天请求 在Kibana里搜索这笔日志 日志收集成功。
整合ELK后我们的系统架构图如下所示