From 87fdb935bac9312c9631dda25316a892c19e636e Mon Sep 17 00:00:00 2001
From: sikadi <13315935+sikadi_love@user.noreply.gitee.com>
Date: Fri, 27 Oct 2023 15:10:54 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 46 +++++++++++
Dockerfile | 21 +++++
pom.xml | 76 +++++++++++++++++++
.../monitor/GrailMonitorApplication.java | 30 ++++++++
.../monitor/config/WebSecurityConfigurer.java | 51 +++++++++++++
src/main/resources/banner.txt | 10 +++
src/main/resources/bootstrap.yml | 25 ++++++
src/main/resources/logback.xml | 74 ++++++++++++++++++
8 files changed, 333 insertions(+)
create mode 100644 .gitignore
create mode 100644 Dockerfile
create mode 100644 pom.xml
create mode 100644 src/main/java/com/grail/modules/monitor/GrailMonitorApplication.java
create mode 100644 src/main/java/com/grail/modules/monitor/config/WebSecurityConfigurer.java
create mode 100644 src/main/resources/banner.txt
create mode 100644 src/main/resources/bootstrap.yml
create mode 100644 src/main/resources/logback.xml
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..09bdfea
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,46 @@
+######################################################################
+# Build Tools
+
+.gradle
+/build/
+!gradle/wrapper/gradle-wrapper.jar
+
+target/
+!.mvn/wrapper/maven-wrapper.jar
+
+######################################################################
+# IDE
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### JRebel ###
+rebel.xml
+### NetBeans ###
+nbproject/private/
+build/*
+nbbuild/
+dist/
+nbdist/
+.nb-gradle/
+
+######################################################################
+# Others
+*.log
+*.xml.versionsBackup
+*.swp
+
+!*/build/*.java
+!*/build/*.html
+!*/build/*.xml
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..80b351e
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,21 @@
+FROM anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/openjdk:17-8.6
+
+
+# 暴露端口号
+EXPOSE 9100/tcp
+
+
+# 挂载目录位置
+VOLUME /home/logs/grail-monitor
+
+#构造 复制外部文件到docker 内部
+COPY target/grail-visual-monitor.jar /home/app.jar
+
+# 工作目录 exec -it 进来就是默认这个目录
+WORKDIR /home
+
+# 指定东八区
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > .etc.timezone
+
+# 启动java程序
+CMD ["java","-Dfile.encoding=UTF-8","-jar","/home/app.jar"]
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..34197ec
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,76 @@
+
+
+ com.grail
+ grail
+ 3.6.3
+
+ 4.0.0
+
+ grail-visual-monitor
+
+
+ grail-visual-monitor监控中心
+
+ 3.6.3
+
+
+
+
+
+ de.codecentric
+ spring-boot-admin-starter-server
+ ${spring-boot-admin.version}
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+
+
+
+ ${project.artifactId}
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ repackage
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/grail/modules/monitor/GrailMonitorApplication.java b/src/main/java/com/grail/modules/monitor/GrailMonitorApplication.java
new file mode 100644
index 0000000..590b4b8
--- /dev/null
+++ b/src/main/java/com/grail/modules/monitor/GrailMonitorApplication.java
@@ -0,0 +1,30 @@
+package com.grail.modules.monitor;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import de.codecentric.boot.admin.server.config.EnableAdminServer;
+
+/**
+ * 监控中心
+ *
+ * @author grail
+ */
+@EnableAdminServer
+@SpringBootApplication
+public class GrailMonitorApplication
+{
+ public static void main(String[] args)
+ {
+ SpringApplication.run(GrailMonitorApplication.class, args);
+ System.out.println("(♥◠‿◠)ノ゙ 监控中心启动成功 ლ(´ڡ`ლ)゙ \n" +
+ " .-------. ____ __ \n" +
+ " | _ _ \\ \\ \\ / / \n" +
+ " | ( ' ) | \\ _. / ' \n" +
+ " |(_ o _) / _( )_ .' \n" +
+ " | (_,_).' __ ___(_ o _)' \n" +
+ " | |\\ \\ | || |(_,_)' \n" +
+ " | | \\ `' /| `-' / \n" +
+ " | | \\ / \\ / \n" +
+ " ''-' `'-' `-..-' ");
+ }
+}
diff --git a/src/main/java/com/grail/modules/monitor/config/WebSecurityConfigurer.java b/src/main/java/com/grail/modules/monitor/config/WebSecurityConfigurer.java
new file mode 100644
index 0000000..44693bd
--- /dev/null
+++ b/src/main/java/com/grail/modules/monitor/config/WebSecurityConfigurer.java
@@ -0,0 +1,51 @@
+package com.grail.modules.monitor.config;
+
+import de.codecentric.boot.admin.server.config.AdminServerProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.web.SecurityFilterChain;
+import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
+
+/**
+ * 监控权限配置
+ *
+ * @author grail
+ */
+@EnableWebSecurity
+public class WebSecurityConfigurer
+{
+ private final String adminContextPath;
+
+ public WebSecurityConfigurer(AdminServerProperties adminServerProperties)
+ {
+ this.adminContextPath = adminServerProperties.getContextPath();
+ }
+
+ @Bean
+ public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception
+ {
+ SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
+ successHandler.setTargetUrlParameter("redirectTo");
+ successHandler.setDefaultTargetUrl(adminContextPath + "/");
+
+ return httpSecurity
+ .headers().frameOptions().disable()
+ .and().authorizeRequests()
+ .antMatchers(adminContextPath + "/assets/**"
+ , adminContextPath + "/login"
+ , adminContextPath + "/actuator/**"
+ , adminContextPath + "/instances/**"
+ ).permitAll()
+ .anyRequest().authenticated()
+ .and()
+ .formLogin().loginPage(adminContextPath + "/login")
+ .successHandler(successHandler).and()
+ .logout().logoutUrl(adminContextPath + "/logout")
+ .and()
+ .httpBasic().and()
+ .csrf()
+ .disable()
+ .build();
+ }
+}
diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt
new file mode 100644
index 0000000..ecaf8a4
--- /dev/null
+++ b/src/main/resources/banner.txt
@@ -0,0 +1,10 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+ _ _ _
+ (_) (_)| |
+ _ __ _ _ ___ _ _ _ ______ _ __ ___ ___ _ __ _ | |_ ___ _ __
+| '__|| | | | / _ \ | | | || ||______|| '_ ` _ \ / _ \ | '_ \ | || __| / _ \ | '__|
+| | | |_| || (_) || |_| || | | | | | | || (_) || | | || || |_ | (_) || |
+|_| \__,_| \___/ \__, ||_| |_| |_| |_| \___/ |_| |_||_| \__| \___/ |_|
+ __/ |
+ |___/
\ No newline at end of file
diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..8994ac9
--- /dev/null
+++ b/src/main/resources/bootstrap.yml
@@ -0,0 +1,25 @@
+# Tomcat
+server:
+ port: 9100
+
+# Spring
+spring:
+ application:
+ # 应用名称
+ name: grail-monitor
+ profiles:
+ # 环境配置
+ active: dev
+ cloud:
+ nacos:
+ discovery:
+ # 服务注册地址
+ server-addr: 10.100.1.3:8848
+ config:
+ # 配置中心地址
+ server-addr: 10.100.1.3:8848
+ # 配置文件格式
+ file-extension: yml
+ # 共享配置
+ shared-configs:
+ - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
new file mode 100644
index 0000000..bd23948
--- /dev/null
+++ b/src/main/resources/logback.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+ ${log.pattern}
+
+
+
+
+
+ ${log.path}/info.log
+
+
+
+ ${log.path}/info.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
+
+
+
+ ${log.path}/error.log
+
+
+
+ ${log.path}/error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+