Spring Boot教程第22篇:整合elk,搭建实时日志平台

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot教程第22篇:整合elk,搭建实时日志平台相关的知识,希望对你有一定的参考价值。

参考技术A 这篇文章主要介绍springboot整合elk.

elk 简介

elk下载安装

elk下载地址:https://www.elastic.co/downloads/

建议在 linux上运行,elk在windows上支持得不好,另外需要jdk1.8 的支持,需要提前安装好jdk.

下载完之后: 安装,以logstash为栗子:

配置、启动 Elasticsearch

打开Elasticsearch的配置文件:

修改配置:

network.host=localhost

network.port=9200

它默认就是这个配置,没有特殊要求,在本地不需要修改。

启动Elasticsearch

启动成功,访问localhost:9200,网页显示:

配置、启动 logstash

在 logstash的主目录下:

修改 log4j_to_es.conf 如下:

input

log4j

mode => "server"

host => "localhost"

port => 4560





filter

#Only matched data are send to output.



output

elasticsearch

action => "index" #The operation on ES

hosts => "localhost:9200" #ElasticSearch host, can be array.

index => "applog" #The index to write data to.





修改完配置后启动:

./bin/logstash -f config/log4j_to_es.conf

终端显示如下:

访问localhost:9600

证明logstash启动成功。

配置、启动kibana

到kibana的安装目录:

默认配置即可。

访问localhost:5601,网页显示:

证明启动成功。

创建springboot工程

起步依赖如下:

log4j的配置,/src/resources/log4j.properties如下:

log4j.rootLogger=INFO,console

# for package com.demo.elk, log would be sent to socket appender.

log4j.logger.com.forezp=DEBUG, socket

# appender socket

log4j.appender.socket=org.apache.log4j.net.SocketAppender

log4j.appender.socket.Port=4560

log4j.appender.socket.RemoteHost=localhost

log4j.appender.socket.layout=org.apache.log4j.PatternLayout

log4j.appender.socket.layout.ConversionPattern=%d [%-5p] [%l] %m%n

log4j.appender.socket.ReconnectionDelay=10000

# appender console

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.target=System.out

log4j.appender.console.layout=org.apache.log4j.PatternLayout

log4j.appender.console.layout.ConversionPattern=%d [%-5p] [%l] %m%n

打印log测试:

在kibana 实时监控日志

打开localhost:5601:

Management=>index pattrns=>add new:

点击discovery:

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<流程挂起与激活篇>


前言

某些情况可能由于流程变更需要将当前运行的流程暂停而不是直接删除,流程暂停后将不会继续执行。默认当我们部署了一个流程,是激活状态:(SUSPENSION_STATE_ = 1)

流程定义数据表( act_re_procdef )

在这里插入图片描述

运行时任务节点表( act_ru_task )

在这里插入图片描述


一、单个流程实例挂起

操作流程实例对象,针对单个流程执行挂起操作,某个流程实例挂起则此流程不再继续执行,完成该流程实例的当前任务将报异常。

1.1 部署流程

在这里插入图片描述

1.2 启动流程

在这里插入图片描述
当我们开启了出差申请实例之后:
在这里插入图片描述
在这里插入图片描述

1.3 挂起流程(suspendProcessInstanceById)

runtimeService.suspendProcessInstanceById(instance.getId());

@PostMapping("setState")
public Map<String, Object> SuspendSingleProcessInstance(String processDefinitionId) {
	Map<String, Object> map = new HashMap<>();
	// 查询流程定义的对象
	ProcessInstance instance = runtimeService.createProcessInstanceQuery().processDefinitionId(processDefinitionId)
			.singleResult();
	System.out.println("流程id:" + instance.getProcessDefinitionId());
	System.out.println("流程状态:" + instance.isSuspended());

	if(instance.isSuspended()) { // 为true则为暂停状态,可以设置激活
		runtimeService.activateProcessInstanceById(instance.getId()); 
		map.put("流程定义:"+instance.getId(),"已激活");
	}else { 
		// 为false则为激活状态,可以设置暂停 
		runtimeService.suspendProcessInstanceById(instance.getId());
		map.put("流程定义:"+instance.getId(),"已挂起"); 
	}
	return map;
}

在这里插入图片描述
在这里插入图片描述

1.4 执行任务

在这里插入图片描述
在这里插入图片描述

1.5 激活流程(activateProcessInstanceById)

runtimeService.activateProcessInstanceById(instance.getId());

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

当然走到这步我们再去挂起流程,不让李四去审批:

在这里插入图片描述

在这里插入图片描述

二、全部流程实例挂起

操作流程定义为挂起状态,该流程定义下边所有的流程实例全部暂停:
流程定义为挂起状态该流程定义将不允许启动新的流程实例,同时该流程定义下所有的流程实例将全部挂起暂停执行。

1.1 激活

repositoryService.activateProcessDefinitionById(instance.getId(),true,null)
参数1 :流程定义id ,参数2:是否暂停,参数3:暂停时间

1.2 挂起

repositoryService.suspendProcessDefinitionById(instance.getId(),true,null)
参数1 :流程定义id ,参数2:是否暂停,参数3:暂停时间

1.3 代码

@PostMapping("setStates")
public Map<String, Object> SuspendSingleProcessInstances(String processDefinitionKey) {
	Map<String, Object> map = new HashMap<>();
	// 查询流程定义的对象
	ProcessInstance instance = runtimeService.createProcessInstanceQuery().processDefinitionKey(processDefinitionKey)
			.singleResult();
	System.out.println("流程id:" + instance.getProcessDefinitionId());
	System.out.println("流程状态:" + instance.isSuspended());

	if(instance.isSuspended()) { 
		//为true则为暂停状态,可以执行激活操作 ,参数1 :流程定义id ,参数2:是否激活,参数3:激活时间
           repositoryService.activateProcessDefinitionById(instance.getId(),
                   true,
                   null
           );
		map.put("流程定义:"+instance.getId(),"已激活");
	}else { 
		//为false则为激活状态,可以暂停,参数1 :流程定义id ,参数2:是否暂停,参数3:暂停时间
           repositoryService.suspendProcessDefinitionById(instance.getId(),
                   true,
                   null);
		map.put("流程定义:"+instance.getId(),"已挂起"); 
	}
	return map;
}

总结

关于Activiti的东西很多,需要进下心来,慢慢品尝,下一篇马上到进阶篇,关注吧!关注吧!关注吧!关注吧!关注吧!关注吧!关注吧!关注吧!。

熬夜干货,创作不易,动动小手点赞吧!!!!后面会继续输出更多干货给大家,喜欢的请关注小编CSDN:https://blog.csdn.net/qq_41107231 以及掘金:https://juejin.cn/user/3940246036699848

以上是关于Spring Boot教程第22篇:整合elk,搭建实时日志平台的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot教程整合elk

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<网关篇>

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<基础篇>

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<入门篇>

Spring Boot教程第24篇:整合docker

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<流程挂起与激活篇>