SpringBoot使用ELK日志收集ELASTIC (ELK) STACK
1:资源
# 文档向导 # logstash https://www.elastic.co/guide/en/logstash/current/index.html #kibana https://www.elastic.co/guide/en/kibana/current/index.html #elasticsearch https://www.elastic.co/guide/en/elasticsearch/current/index.html # 资源下载 https://www.elastic.co/cn/downloads/elasticsearch https://www.elastic.co/cn/downloads/kibana https://www.elastic.co/cn/downloads/logstash
没有VPN的我这里提供最新版本的软件包:
链接:https://pan.baidu.com/s/1XtIL_6MJgn7vplILKG31_A 提取码:825n
2:安装ELK
安装ELK基本tar –xzvf 解压就行 这里给出关键配置
Kibana配置
conf文件夹下 kibana.yml
修改config/kibana.yml文件配置: vim kibana.yml kibana.yml常见配置项 # pingElasticsearch超时时间 elasticsearch.pingTimeout # 读取Elasticsearch数据超时时间 elasticsearch.requestTimeout #Elasticsearch主机地址 elasticsearch.url: "http://ip:9200" # 允许远程访问 server.host: "0.0.0.0" # Elasticsearch用户名 这里其实就是我在服务器启动Elasticsearch的用户名 elasticsearch.username: "es" # Elasticsearch鉴权密码 这里其实就是我在服务器启动Elasticsearch的密码 elasticsearch.password: "es"
server.port: 5601
server.host: “127.0.0.1”
server.name: tanklog
elasticsearch.hosts: [“http://localhost:9200/”]
Logstash配置
logstash目录下 新建conf文件
input { file { path => ["/usr/local/logstash/logstash-tutorial-dataset"] type => "syslog" tags => ["有用的","标识用的"] start_position => "beginning" sincedb_path => "/dev/null" } } output { elasticsearch { hosts => ["http://localhost:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } }
3:启动配置
# 启动 elasticsearch #>>> ./elasticsearch #访问 dgw@ubuntu:~$ curl -L http://localhost:9200/ { "name" : "ubuntu", "cluster_name" : "elasticsearch", "cluster_uuid" : "CqSWrvU8TLiw_haNYjB0Ow", "version" : { "number" : "7.6.0", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3", "build_date" : "2020-02-06T00:09:00.449973Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } # 启动 kibana #>>> kibana-7.6.0-linux-x86_64/bin$ ./kibana #访问 dgw@ubuntu:~$ curl -L http://localhost:5601/ # 启动 logstash #>>> dgw@ubuntu:~/Documents/logstash/logstash-7.6.0/bin$ ./logstash -f ../config/logstash-my.conf
浏览器 http://localhost:5601/ 显示下面的画面即为成功
4:导入POM依赖
<dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.3</version> </dependency>
5配置logstash
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml" /> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>127.0.0.1:4560</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "logLevel": "%level", "serviceName": "${springAppName:-}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "rest": "%message" } </pattern> </pattern> </providers> </encoder> </appender> <root level="INFO"> <appender-ref ref="LOGSTASH" /> <appender-ref ref="CONSOLE" /> </root> </configuration>
input { tcp { mode => "server" host => "0.0.0.0" port => 4560 codec => json_lines } } output { elasticsearch { hosts => "localhost:9200" index => "springboot-logstash-%{+YYYY.MM.dd}" } }
6: 启动类设置输出信息
@SpringBootApplication @RestController public class SpringbootLogstashApplication { Logger logger = LoggerFactory.getLogger(SpringbootLogstashApplication.class); @GetMapping("test") public void test(){ logger.info("测试初始一些日志吧!"); } public static void main(String[] args) { SpringApplication.run(SpringbootLogstashApplication.class, args); } }
7:测试
对maven 项目执行 mvn package 打包 得到 jar文件 拷贝到Linux下
dgw@ubuntu:~/Documents$ java -jar logstash-0.0.1-SNAPSHOT.jar
上面页面创建索引后, 在发现页面: 找到我们项目info