- 本次使用目的:通过Elastic Stack搭建出一个小型日志系统
从springboot开始输出日志到log,在maven中引入logback-ecs-encoder,来生成log.json,然后通过filebeat获取log.json,把内容存入elasticsearch之后,通过kibana来浏览数据。
- 官方地址getting started进行开始:
https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-elastic-stack.html
开始根据官网的教程下边进行摘要总结:(本次调试系统为centos7桌面版至少4G内存,带桌面的linux发行版方便localhost浏览器调试,mac系统也体验过是ok的,不太建议windows调试)
下边先安装elasticsearch、kibana、Filebeat体验一下
- 安装启动elasticsearch:
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.2-linux-x86_64.tar.gz tar -xzvf elasticsearch-7.16.2-linux-x86_64.tar.gz cd elasticsearch-7.16.2 ./bin/elasticsearch
在centos中打开Firefox浏览器,输入网址访问:http://127.0.0.1:9200
- 安装启动kibana
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-7.16.2-linux-x86_64.tar.gz tar xzvf kibana-7.16.2-linux-x86_64.tar.gz cd kibana-7.16.2-linux-x86_64/ ./bin/kibana
在centos中打开Firefox浏览器,输入网址访问:http://127.0.0.1:5601
getting started中演示的是Metricbeat的例子,可自行测试,我们的目标是Filebeat,点击页面链接开始Filebeat
- 官方地址Filebeat:
https://www.elastic.co/guide/en/beats/filebeat/7.16/filebeat-installation-configuration.html
下载解压:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.16.2-linux-x86_64.tar.gz tar xzvf filebeat-7.16.2-linux-x86_64.tar.gz
修改配置: 进入到filebeat目录中vim filebeat.yml
output.elasticsearch: hosts: ["localhost:9200"]
设置assets:
./filebeat setup -e
启动:(虽然启动了但是没有采集任何数据)
sudo chown root filebeat.yml sudo ./filebeat -e
- 官方日志教程:
https://www.elastic.co/guide/en/ecs-logging/java/current/setup.html
直接从step 3开始,打开vim filebeat.yml,step 1后边接入springboot应用的时候用到
filebeat.inputs: - type: log paths: /home/zph/data/logs/demo/*.json json.keys_under_root: true json.overwrite_keys: true json.add_error_key: true json.expand_keys: true
重启filebeat程序,往/home/zph/data/logs/中创建任意名字的.json文件写入几行数据即可。打开kibana进行查看:http://127.0.0.1:5601/app/discover
好了,就是这么简单已经体验过filebeat采集数据到文件,通过kibana来展示了。玩归玩闹归闹,现在还差的远,远程访问、安全配置如何设置,接着往下走。
分割线---------------------
- 开启elasticsearch外部访问(启动程序用到的端口9200,5601)
进入elasticsearch目录编辑配置文件:vim elasticsearch.yml
network.host: 0.0.0.0
重启可能报错,遇到了3个错误如下
第一个错:启动报错,修改配置: vim /etc/security/limits.conf zph soft nofile 65535 zph hard nofile 65537 重新登录zph用户查看修改效果: ulimit -n ulimit -H -n 第二个错:启动报错: vim /etc/sysctl.conf vm.max_map_count=262144 使配置生效: /sbin/sysctl -p 第三个错:启动报错: vim config/elasticsearch.yml discovery.seed_hosts: ["127.0.0.1", "[::1]"] 启动成功
用IP访问下试试:http://192.168.33.131:9200/
对外访问kibana:修改配置文件vim config/kibana.yml
server.host: "192.168.33.131"
重新启动,用IP访问下试试http://192.168.33.131:5601/
- 开启安全配置:开发阶段先设置成minimal security
https://www.elastic.co/guide/en/elasticsearch/reference/7.16/configuring-stack-security.html
进入elasticsearch目录编辑配置文件:vim elasticsearch.yml
xpack.security.enabled: true #单节点的时候 discovery.type: single-node
杀死elasticsearch 进程重启,这次采用后台进程启动:
nohup ./bin/elasticsearch >> logs/elasticsearch.log &
设置用户和密码:自动生成,生成的内容自行保存,十分重要
./bin/elasticsearch-setup-passwords auto
访问http://192.168.33.131:9200,此时需要登录账号密码了。
进入kibana目录编辑配置文件:vim kibana.yml
elasticsearch.username: "kibana_system"
创建keystore方式来添加密码:kibana_system用户和密码前边已经自行保存
./bin/kibana-keystore create ./bin/kibana-keystore add elasticsearch.password
杀死kibana进程重启,这次采用后台进程启动:
nohup ./bin/kibana >> kibana.log &
查看进程: ps -ef|grep node (因为kibana是node写的,所以查看进程需要如此) 查看进程id : netstat -tunlp|grep 5601 kibana默认5601端口
访问http://192.168.33.131:5601/ ,此时需要登录账号密码了。
打开vim filebeat.yml,之前已经自行保存
output.elasticsearch: hosts: ["myEShost:9200"] username: "filebeat_internal" password: "YOUR_PASSWORD" setup.kibana: host: "mykibanahost:5601" username: "my_kibana_user" password: "{pwd}"
如果使用keystore创建密码则参考:https://www.elastic.co/guide/en/beats/filebeat/7.16/keystore.html,否则明文写入密码
重启Filebeats,后台运行
nohup ./filebeat -e >> filebeat.log &
官网初始化下载springboot,带web功能
pom加载依赖一个日志转json,一个方便日志打印
co.elastic.logging logback-ecs-encoder1.3.0 org.projectlombok lombok
配置application.properties
spring.profiles.active=dev spring.application.name=my-application
下面配置logback-spring
%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n) UTF-8 ${SERVICE_NAME:-spring-boot-application} ${LOG_FILE_CLEAN_HISTORY_ON_START:-false} ${ROLLING_FILE_NAME_PATTERN:-${LOG_HOME}/${PROJECT_NAME}_info.%d{yyyy-MM-dd}.%i.log.json} ${LOG_FILE_MAX_SIZE:-10MB} ${LOG_FILE_MAX_HISTORY:-7} ${LOG_FILE_TOTAL_SIZE_CAP:-0} [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n UTF-8 INFO ACCEPT DENY ${LOG_HOME}/${PROJECT_NAME}_info.%d{yyyy-MM-dd}.%i.log 15 10MB
创建controller
package com.example.demo.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Slf4j @RestController @RequestMapping("/test") public class TestController { @GetMapping("/test") public void test(){ log.info("数据库信息"); } }
打包好,放到192.168.33.132中的/home/zph/data/目录中
使用java -jar运行springboot程序
访问:http://192.168.33.132:8080/test/test
打开/home/zph/data/logs/demo目录可以看到输出的启动info信息和自己输出的info信息,
访问kibana:http://192.168.33.131:5601 数据内容会有延迟,过会就可以看到数据
后续:安全配置还有basic security + tls for rest
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)