In addition to @joshiste:
You can create a custom plugin by making sure your resources are added in the correct directories.
The admin project looks for the following directories:
registry.addResourceHandler(adminServerProperties.getContextPath() + "/**")
.addResourceLocations("classpath:/META-INF/spring-boot-admin-server-ui/")
.resourceChain(true)
.addResolver(new PreferMinifiedFilteringResourceResolver(".min"));
registry.addResourceHandler(adminServerProperties.getContextPath() + "/all-modules.css")
.resourceChain(true)
.addResolver(new ResourcePatternResolvingResourceResolver(resourcePatternResolver,
"classpath*:/META-INF/spring-boot-admin-server-ui/*/module.css"))
.addResolver(new ConcatenatingResourceResolver("\n".getBytes()));
registry.addResourceHandler(adminServerProperties.getContextPath() + "/all-modules.js")
.resourceChain(true)
.addResolver(new ResourcePatternResolvingResourceResolver(resourcePatternResolver,
"classpath*:/META-INF/spring-boot-admin-server-ui/*/module.js"))
.addResolver(new PreferMinifiedFilteringResourceResolver(".min"))
.addResolver(new ConcatenatingResourceResolver(";\n".getBytes()));
So make sure your js / css resources are added in /META-INF/spring-boot-admin-server-ui/etc. and have the correct names: module.js and module.css
UPDATE it looks like, it's not possible to add an extra tab to inject your custom plugin into. At least not i.c.w. Angular, like the default plugin. This is mainly due to the fact that all modules and js dependencies of SBA are minified in the build process, but the custom one isn't so you'll get JS errors like:
require isn't defined
On the following line of the custom module.js:
var angular = require('angular');
So the only way I see for now, is forking the entire SBA project and copy one of the default plugins as starting point of your own (eg. applications-metrics)