1、Elasticsearch + Logstash + Kibana本文采用的是Elasticsearch + Logstash + Kibana的形式来收集的日志
部署方式采用的是docker的形式来部署,所以必须安装docker,部署为单节点模式
在自己的工作目录下[~]创建一个elk目录
mkdir -p ~/elk1.1、安装Elasticsearch
创建es的文件夹用来存放配置信息和数据
mkdir -p ~/elk/es mkdir -p ~/elk/es/logs mkdir -p ~/elk/es/data
复制容器中的内容elasticsearch.yml出来(可以使用docker cp的方法)
elasticsearch.yml写入下面信息
cluster.name: "docker-cluster" network.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*"
开启目录的读写权限
chmod 777 -R ~/elk/es
执行下面的命令启动es
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v ~/elk/es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v ~/elk/es/data:/usr/share/elasticsearch/data -v ~/elk/es/logs:/usr/share/elasticsearch/logs elasticsearch:6.8.22
在浏览器输入:http://localhost:9200/,如看到下面信息则部署成功
{ "name" : "2drCdwB", "cluster_name" : "docker-cluster", "cluster_uuid" : "BFsPJv11S8GSu1nG5wv3WQ", "version" : { "number" : "6.8.22", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "71fcb50", "build_date" : "2021-12-19T01:10:56.497443Z", "build_snapshot" : false, "lucene_version" : "7.7.3", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }1.2、安装Logstash
搞明白,Logstash是读取一个日志文件然后输出到es的一个中间件,所有我们部署这中间件的目的是为了读取日志文件的,日志文件从哪里来,Logstash有提供多中方法,本文这里之介绍一种,tcp监听端口的形式,所以必须要有服务往这个端口里面写日志
需要有一个java服务来写日志,这里采用logback这个java的日志框架来写
准备一个springboot项目,pom文件中加入
net.logstash.logback logstash-logback-encoder5.2
准备一个logback.xml文件放在resource目录下(下面我准备了一个写的比较全面的文件,可以保存使用,只要注意几个日志文件我输出的位置即可)
${DEV_FILE_PATH}${file.separator}${LOG_NAME}.log ${DEV_FILE_PATH}${file.separator}${LOG_NAME}-%d{yyyy-MM-dd}.%i.log 7 100MB 20GB ${CONSOLE_LOG_PATTERN} UTF-8 ${CONSOLE_LOG_PATTERN} 10.152.178.5:5000 1048576 5 minutes ${TEST_FILE_PATH}${file.separator}${LOG_NAME}.log ${TEST_FILE_PATH}${file.separator}${LOG_NAME}-%d{yyyy-MM-dd}.%i.log 7 100MB 20GB ${CONSOLE_LOG_PATTERN} UTF-8 ${CONSOLE_LOG_PATTERN} ${PROD_FILE_PATH}${file.separator}${LOG_NAME}.log ${PROD_FILE_PATH}${file.separator}${LOG_NAME}-%d{yyyy-MM-dd}.%i.log 7 100MB 20GB ${CONSOLE_LOG_PATTERN} UTF-8
注意appender name=“logstash” 这个地方,要和下面的logstash服务所监听的端口一致,ip要和logstash所在的ip一致哦
举个例子:
@RestController public class Controller { Logger elkLogger = LoggerFactory.getLogger(Controller.class); @GetMapping("/logger") public Object getLogger() { Mapmap = new HashMap<>(); map.put("application","logger"); map.put("createTime",new Date()); map.put("message","this is logger"); elkLogger.info(JSON.toJSONString(map)); return map; } }
拉取logstash:6.8.22镜像
docker pull logstash:6.8.22
直接启动
docker run --name logstash -d logstash:6.8.22
复制容器内的文件到外面
docker cp logstash:/usr/share/logstash: ~/elk
编辑文件(注意es的地址)
vim ~/elk/logstash/config/logstash.yml ---- http.host: "0.0.0.0" xpack.monitoring.elasticsearch.hosts: [ "http://你es的ip地址:你es的端口" ] path.config: /usr/share/logstash/config/conf.d/*.conf path.logs: /usr/share/logstash/logs ----
创建读取与输出文件
mkdir -p ~/elk/logstash/config/conf.d cd ~/elk/logstash/config/conf.d touch syslog.conf vim syslog.conf ---- input { tcp { port => 5000 codec => json } } filter{ json{ source => "message" remove_field => ["message"] } } output { elasticsearch { hosts => "你es的地址加端口" index => "logstash-system-%{+YYYY.MM.dd}" } stdout{} }
启动镜像(注意5000端口哦)
docker run -d --name=logstash -p 5000:5000 -p 5044:5044 -v ~/elk/logstash:/usr/share/logstash logstash:6.8.22
调用上面写日志的接口,看控制台输出
1.3、安装kibana创建目录和配置文件
mkdir ~/elk/kibana/config cd ~/elk/kibana/config touch kibana.yml vim kibana.yml ---- server.name: kibana server.host: "0" elasticsearch.hosts: [ "http://你es的ip:你es的端口" ] xpack.monitoring.ui.container.elasticsearch.enabled: true
启动
docker run -d --name=kibana -p 5601:5601 -v ~/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:6.8.22
访问 localhost:5601
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)