前提:你已经安装好了Elasticsearch和Kibana,Elastic分为基础版、白金版和企业版。告警推送通道只有白金版才支持webhook,所以需要进行破解。
1:下载源代码文件
破解Elastic需要修改两个java文件,分别为LicenseVerifier.java
和XPackBuild.java
,我们从github上下载对应的源文件,注意你的Elasticsearch版本,修改url中对应的版本号即可,我这里是8.5
.
curl -o LicenseVerifier.java -s https://raw.githubusercontent.com/elastic/elasticsearch/8.5/x-pack/plugin/core/src/main/java/org/elasticsearch/license/LicenseVerifier.java
curl -o XPackBuild.java -s https://raw.githubusercontent.com/elastic/elasticsearch/8.5/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackBuild.java
2:修改代码
修改XPackBuild.java,在第一个静态方法中的if、else
是判断jar包有没有被修改的,我们修改这段代码。
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.jar.JarInputStream;
import java.util.jar.Manifest;
/**
* Information about the built version of x-pack that is running.
*/
public class XPackBuild {
public static final XPackBuild CURRENT;
static {
final String shortHash;
final String date;
Path path = getElasticsearchCodebase();
/*if (path.toString().endsWith(".jar")) {
try (JarInputStream jar = new JarInputStream(Files.newInputStream(path))) {
Manifest manifest = jar.getManifest();
shortHash = manifest.getMainAttributes().getValue("Change");
date = manifest.getMainAttributes().getValue("Build-Date");
} catch (IOException e) {
throw new RuntimeException(e);
}
} else {
// not running from a jar (unit tests, IDE)
shortHash = "Unknown";
date = "Unknown";
}*/
shortHash = "Unknown";
date = "Unknown";
CURRENT = new XPackBuild(shortHash, date);
}
/**
* Returns path to xpack codebase path
*/
@SuppressForbidden(reason = "looks up path of xpack.jar directly")
static Path getElasticsearchCodebase() {
URL url = XPackBuild.class.getProtectionDomain().getCodeSource().getLocation();
try {
return PathUtils.get(url.toURI());
} catch (URISyntaxException bogus) {
throw new RuntimeException(bogus);
}
}
private String shortHash;
private String date