ELK的配置及springboot的集成
ELK分别由ElasticSeach,Logstash,Kibana三个软件组成。
ElasticSeash 负责信息的存储、搜索功能
LogStash 负责将消息从输入端传输到输出端(ElasticSearch)
Kibana 负责将Elastic的数据进行展示
一、ELK的安装配置
- Elasticsearch的安装配置
我是在官网下载的6.x的版本进行安装。
下载后,使用命令进行解压
tar -zxvf elasticsearch-6.3.0.tar
1.2 对config/elasticsearch.yml进行配置
#action.destructive_requires_name: true 在elasticsearch-6.3.0目录下创建一个data文件存储数据
path.data: /docker/elasticsearch/data
# 填写elasticsearch-6.3.0目录下的logs目录,记录es日志
path.logs: /docker/elasticsearch/logs
# 端口号
http.port: 9200
# 建议改成服务器ip
network.host: 0.0.0.0
1.3 启动程序,注意不能使用root账户启动程序,不然会报错
nohup ./bin/elasticsearch -d
- Kibana的安装配置
2.1 在Kibana官网下载安装6.x版本
解压
tar -zxvf kibana.tar
2.2 配置
在./kibana/kibana.yml 文件中进行配置
# 端口号
server.port: 5601
2.3 启动
nohup ./bin/kibana &
启动后可以配置elasticseash
- logstash的安装配置
3.1 在官网下载安装6.x版本的软件
解压
tar -zxvf logstash.tar
3.2 在./config/ 下创建logstash.conf文件
对 logstash.conf文件进行编辑配置
#tcp输入到es配置
input {
tcp {
port => 5400 type => "tcp"
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "tcplog-%{+YYYY.MM.dd}"
}
}
3.3 启动logstash
nohup ./bin/logstash -f ./config/logstash.conf &
以上ELK的安装、配置就完成了
二、springboot集成logstash
在application.yml文件中加上
#日志
logging:
config: classpath:logback.xml
在resources目录下添加文件logbask.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<!--为啥不能使用相对路径?-->
<property name="LOG_HOME" value="/test/log" />
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!--logstash配置-->
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--此处为logstash的ip以及通信的端口,在logstash.conf文件中可以查看-->
<destination>101.35.197.55:5400</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" >
<!--此处的appname 为项目中独有的日志名字,在logstash.config文件中有配置-->
<!--和配置中相对应-->
<!--<customFields>{"appname":"tcplog"}</customFields>-->
</encoder>
</appender>
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<!-- 日志输出级别 -->
<root level="Error">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
<appender-ref ref="logstash"/>
</root>
</configuration>
controller:
@RestController
@RequestMapping(value = "/hot")
public class HotRestartController {
private final static Logger logger = LoggerFactory.getLogger(HotRestartController.class);
/**
* 热部署
* @param
* @return
* @throws Exception
*/
@RequestMapping("/start")
public String isppToLsms() throws Exception {
logger.info("logback 访问hello");
logger.error("logback 访问hello");
return "logback 成功";
}
}
以上就算完成了,在springboot中集成logstash