
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() {
Map map = 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条)