ELK的数据处理流程:
第一步:产生日志数据
spring-boot项目基本配置:
新建spring-boot项目2.1.14,勾选好下图两个依赖,开始新建项目
导入guava依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.11</version>
</dependency>
并修改application.properties为application.yml,添加es的集群配置和dao接口配置
spring:
data:
elasticsearch:
cluster-nodes: niceday-es
cluster-name: 192.168.56.101:9300
repositories:
enabled: true
创建controller包
对线程生产的封装,我以将代码开源到github上,可以去star项目慢慢看
第二步:清洗日志数据格式
第三步:存储日志数据并分析
第四步:显示日志数据
control层
@RestController
public class UserActionCtl {
@Autowired
private UserActionServices uas;
@RequestMapping("/fenzu")
public List<VUserModelPie> groupAndCount(){
return uas.aggsSearch();
}
}
dao层
public interface UserActionDAO extends ElasticsearchRepository<UserAction,String> {
}
model层
browserInfos
public class BrowserInfos {
private String browserVersion;
private int custid;
private Events events;
private static BrowserInfos browserInfos;
public static BrowserInfos getBrowserInstance(){
if (browserInfos == null){
synchronized (BrowserInfos.class){
if (browserInfos == null){
browserInfos = new BrowserInfos();
}
}
}
return browserInfos;
}
private BrowserInfos(){
}
public Events getEvents() {
return events;
}
public void setEvents(Events events) {
this.events = events;
}
public int getCustid() {
return custid;
}
public void setCustid(int custid) {
this.custid = custid;
}
public String getBrowserVersion() {
return browserVersion;
}
public void setBrowserVersion(String browserVersion) {
this.browserVersion = browserVersion;
}
}
events
public class Events {
private String eventCateGory;
private String position;