1.使用docker搭建elasticsearch服务器
(如果没有docker环境也可以直接到官网下载window版本的Download Elasticsearch | Elastic)
使用powershell输入以下命令,会自动下载elasticsearch 8.10.2版本
1)启动elasticsearch 容器(默认端口是9200)
docker run --name elasticsearch --restart=always --ip 192.168.2.12 -e "discovery.type=single-node" -d elasticsearch:8.10.2
2)修改elasticsearch配置文件
//先进入elasticsearch容器内部
docker exec -it elasticsearch /bin/bash
//修改配置文件(允许远程访问、允许所有外部请求访问,即解决了跨域问题)
tee >> /usr/share/elasticsearch/config/elasticsearch.yml <<- 'EOF'
> http.cors.enabled: true
> http.cors.allow-origin: "*"
> EOF
//退出容器
exit
//重启elasticsearch容器
docker restart elasticsearch
2.搭建 Kibana服务器(基于Elasticsearch的)
//启动kibana容器
docker run --name kibana --restart=always -p 5601:5601 --ip 192.168.2.13 -e ELASTICSEARCH_URL=http://192.168.2.12:9200 -d kibana:7.9.3
启动完成后可以在界面访问http://本机ip地址:5601
3.安装logstash
1) 编写配置文件
input {
tcp {
port => 5044
#输入为json数据
codec => json_lines
}
}
filter {
ruby {
code =>"event.set('timestamp',event.get('@timestamp').time.localtime+ 8*60*60)"
}
ruby {
code => "event.set('@timestamp',event.get('timestamp'))"
}
mutate {
remove_fiels => ["timestamp"]
}
}
output{
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["192.168.2.12:9200"]
index => "logstash - %{[server_name]}-%{+YYY.MM.dd}"
}
}
2)启动logstash
docker run --name logstash --ip 192.168.3.112 --restart=always -v G:\test\logstash.conf:/usr/share/logstash/pipeline/logstash.conf -d logstash:7.17.5
3) 编写spring boot
pom.xml
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.3</version>
</dependency>
logback-spring.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}.%M.%L) - %highlight(%msg) %line - %msg%n</pattern>
</layout>
</appender>
<appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- logstash服务的地址 -->
<destination>192.168.2.3:8100</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<!-- 打印行号、方法名 ,官方不建议在生产环境开启这个配置,默认是false。有网友测试,开启后是未开启的大约360倍的世界(业务量少的时候)-->
<includeCallerData>false</includeCallerData>
<timeZone>UTC</timeZone>
<!-- 添加自定义属性名 -->
<customFields>{"server_name":"lyy-server"}</customFields>
</encoder>
<!-- 过期时间 ,默认没有-->
<!-- <writeTimeout>20 seconds</writeTimeout> -->
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="STASH" />
</root>
</configuration>
启动程序后 :