热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:话编程|日志系统(elk+springboot)

篇首语:本文由编程笔记#小编为大家整理,主要介绍了话编程 | 日志系统 (elk +springboot)相关的知识,希望对你有一定的参考价值。 目的:简化查询日志方式 参考:1.安装jdk1.8 +

篇首语:本文由编程笔记#小编为大家整理,主要介绍了话编程 | 日志系统 (elk +springboot)相关的知识,希望对你有一定的参考价值。


目的:简化查询日志方式

参考
1.安装jdk1.8 +

https://my.oschina.net/springMVCAndspring/blog/1601197

1. elk整合springboot
    https://www.bbsmax.com/A/Gkz11xgnzR/
    
    
2. Linux安装Elasticsearch

   https://www.dalaoyang.cn/article/78
 
 3. Linux安装Logstash
 
 https://www.dalaoyang.cn/article/80
 
 4.安装kibana
 
 https://www.dalaoyang.cn/article/79
  
 5.日志工具类
 
 https://my.oschina.net/springMVCAndspring/blog/3041550#h1_20


0.准备

下载软件上传到 centos7上


1.安装软件


1.1 安装jdk1.8+

https://my.oschina.net/springMVCAndspring/blog/1601197

 

话编程 | 日志系统 (elk +springboot)

 


1.2 Linux安装Elasticsearch

   https://www.dalaoyang.cn/article/78


1.2.1 解压

tar -zxvf elasticsearch-5.3.2.tar.gz -C ../elasticsearch


1.2.2 处理问题


1.2.2.1 问题一:内存不足

(1)现象

话编程 | 日志系统 (elk +springboot)

(2)解决方案

话编程 | 日志系统 (elk +springboot)


1.2.2.2  不允许用root启动

(1)现象:

话编程 | 日志系统 (elk +springboot)

(2)解决方案:创建 新账号

a.新增账号:useradd es

b.将文件夹elasticsearch-5.3.2赋予es权限

   chown -R es:es /usr/local/develop/elasticsearch/elasticsearch-5.3.2

c. 切换为es用户

话编程 | 日志系统 (elk +springboot)

使用es账号 启动:成功====》新打开窗口 用root 查看

话编程 | 日志系统 (elk +springboot)

使用root查看

     curl -X GET http://localhost:9200

话编程 | 日志系统 (elk +springboot)


1.2.2.3 外部无法访问

现象:

话编程 | 日志系统 (elk +springboot)

 

解决方案:修改配置文件

使用root用户,打开elasticsearch.yml文件,如下:

vi /usr/local/develop/elasticsearch/elasticsearch-5.3.2/config/elasticsearch.yml

文件内增加如下代码

network.host: 0.0.0.0

话编程 | 日志系统 (elk +springboot)

 

话编程 | 日志系统 (elk +springboot)

 

使用root用户打开如下文件:

vi /etc/sysctl.conf

添加如下配置:

vm.max_map_count = 655360

使配置生效

/sbin/sysctl -p

 

话编程 | 日志系统 (elk +springboot)

 

 

 

 

话编程 | 日志系统 (elk +springboot)

 

话编程 | 日志系统 (elk +springboot)

 

 

话编程 | 日志系统 (elk +springboot)

 


1.2.3 启动Elasticsearch成功

话编程 | 日志系统 (elk +springboot)


1.3    Linux安装Logstash


1.3.1 解压

tar -zxvf logstash-5.3.2.tar.gz -C ../logstash/

话编程 | 日志系统 (elk +springboot)

 


1.3.2  测试及上传日志解析 文件位置

测试:

bin/logstash -e 'input { stdin { } } output { stdout {} }'

话编程 | 日志系统 (elk +springboot)

 

配置 启动规则:

logstash.conf 文件内容

input{
        tcp {
                mode => "server"
                host => "0.0.0.0"
                port => 4560
                codec => json_lines
        }
}
output{
        elasticsearch{
                hosts=>["IP:9200"]
                index => "applog"
                }
        stdout{codec => rubydebug}
}

话编程 | 日志系统 (elk +springboot)

bin/logstash -f logstash.conf

话编程 | 日志系统 (elk +springboot)

 


1.4 安装 kibana


1.4.1 解压

tar -zxvf kibana-5.3.2-linux-x86_64.tar.gz -C ../kibana/

话编程 | 日志系统 (elk +springboot)


1.4.2 修改config/kibana.yml文件配置

话编程 | 日志系统 (elk +springboot)

我们可以将该该文件替换 原有的

话编程 | 日志系统 (elk +springboot)

 

话编程 | 日志系统 (elk +springboot)

 


1.4.3 启动kibana 配置索引


1.4.3.1 启动kibana

直接启动,进入bin目录后

./kibana

后台启动,进入bin目录后

nohup ./kibana &


1.4.3.2 访问:

http://IP:5601/

话编程 | 日志系统 (elk +springboot)

 


1.4.4 配置kibana索引

 

话编程 | 日志系统 (elk +springboot)

 


1.5 elk整合 springboot


1.5.1 导入相关jar

 


<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-devtoolsartifactId>
<scope>runtimescope>
dependency>
<dependency>
<groupId>net.logstash.logbackgroupId>
<artifactId>logstash-logback-encoderartifactId>
<version>5.3version>
dependency>

 

话编程 | 日志系统 (elk +springboot)

 

 


1.5.2  新增配置文件  logback-spring.xml(名字固定)

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>IP:4560destination>

<encoder charset="UTF-8"
class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp><timeZone>UTCtimeZone>
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>

话编程 | 日志系统 (elk +springboot)


1.5.3 引入 日志

思想:AOP

(1) 导入spring AOP相关 jar


<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-aopartifactId>
dependency>

话编程 | 日志系统 (elk +springboot)

 

(2)配置mybaties日志(生成注意切换 类型)

logging.level.cn.ma.logstest.mapper=debuglogging.path=./logs

话编程 | 日志系统 (elk +springboot)

 

(3) 引入 自己编写的根据类

package cn.ma.logstest.utils;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 作用:获取用户请求
* (1)访问时间
* (2)访问地址URL
* (3) 请求方式
* (4) 请求者IP
* (5) 返回内容RESPONSE
* (6) 请求方法的响应时长
* (7) 访问结束时间
*/
@Aspect
@Component
@Slf4j
public class HttpAspect {
//切点
@Pointcut("execution(public * cn.ma.logstest.controller.*.*(..))")
public void webLog() {
}
//开始时间
long beginTime = 0;
//结束时间
long endTime = 0;
//前置通知
@Before("webLog()")
public void doBefore(JoinPoint joinPoint) throws Exception {
//没抽取的原因是并发的时候会导致问题 这样安全性更高
Date d = new Date();
long time = d.getTime();
beginTime = time;
// 接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
StringBuffer sb = new StringBuffer();
sb.append("访问时间:" + TimeUtils.getStringDate(d));
sb.append(",");
sb.append("访问地址URL :" + request.getRequestURL().toString());
sb.append(",");
sb.append("请求方式HTTP_METHOD :" + request.getMethod());
sb.append(",");
sb.append("访问者IP :" + request.getRemoteAddr());
sb.append(",");
Map map = new LinkedHashMap<>();
Enumeration enu = request.getParameterNames();
while (enu.hasMoreElements()) {
String name = enu.nextElement();
map.put(name, request.getParameter(name));
}
sb.append("请求参数 :" + JSON.toJSONString(map));
log.info("请求信息:{}", sb.toString());
}
}
//后置通知
@AfterReturning(returning = "ret", pointcut = "webLog()")
public void doAfterReturning(Object ret) throws Throwable {
StringBuffer sb = new StringBuffer();
Date d = new Date();
long time = d.getTime();
sb.append("返回内容:" + ret);
sb.append(",");
sb.append("响应时长(单位毫秒):" + (time - beginTime));
sb.append(",");
sb.append("访问结束时间:" + TimeUtils.getStringDate(d));
sb.append(",");
log.info("响应信息 :{}", sb.toString());
}
}

话编程 | 日志系统 (elk +springboot)

 


1.5.4 效果

 


2.附件

软件:

代码:

链接:https://pan.baidu.com/s/11OwaoqmxSAkttaxUKyIvvQ
提取码:pqui

 

本地存放位置:



推荐阅读
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 进入配置文件目录:[rootlinuxidcresin-4.0.]#cdusrlocalresinconf查看都有哪些配置文件:[rootlinuxid ... [详细]
  • centos 编译安装 php 5.5,CentOS 5.5上编译安装 PHP 5.3.6
    编译并安装#make&&makeinstall安装结果摘要,里面有几个主要的安装路径变量libtool:install:warning:remembertorunli ... [详细]
  • 为PHP5安装curl和gd
    2019独角兽企业重金招聘Python工程师标准一、查看php5是否安装了curl:1在web服务器目录(Ubuntu下通常为varwww ... [详细]
  • Istio是一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来为已部署的服务建 ... [详细]
  • Centos7安装MySql5.6
    如何在CentO ... [详细]
  • 分享一下我老师大神的人工智能教程!零基础,通俗易懂!http:blog.csdn.netjiangjunshow也欢迎大家转载本篇文章。分 ... [详细]
  • 优秀到卓越就差比他更快搭建elk集群架构上篇
    工作原理开源分布式搜索引擎,特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制 ... [详细]
author-avatar
手机用户2502910463
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有