20.3 x-pack优化篇
elasticsearch7.x之x-pack 7.14.2优化
- 7版本之后的优化方式应该是一样的,这个是在原来7.6优化基础上来优化7.14.2的
- 此操作使适用于7之后的版本
说明: elastic官方在elastic stack 6.4.2版本后就在elasticsearch中内置了X-Pack工具,因此下文优化X-Pack7.6.0的版本也是对应elastic stack7.6.0的版本。而X-Pack内置在elasticsearch包中,以下所有操作都是针对elasticsearch7.6.0包中进行的
X-Pack是什么
X-pack是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,虽然x-pack被设计为一个无缝的工作,但是你可以轻松的启用或者关闭一些功能。
我使用的系统是windows,这里需要使用反编译工具luyten来进行反编译,windows和mac都有这个软件
github下载地址:
https://github.com/deathmarine/Luyten/releases
百度网盘下载
链接:https://pan.baidu.com/s/1LJESfm_s4EpV96ZbC9N52w
提取码:rmgz
# 这个是通过离线包方式下载,方便提取x-pack的jar包出来修改
elasticsearch下载地址
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
20.3.1 获取x-pack的jar包
-
官网下载对应版本的离线包,下载链接以再上面给出
-
解压下载到的es离线包,window端操作
# jar包路径如下
..\elasticsearch-7.14.2-linux-x86_64\elasticsearch-7.14.2\modules\x-pack-core
20.3.2 提取jar包中的文件
-
先复制一份x-pack-core-7.14.2.jar包到其他路径下,本人习惯在桌面新建一个文件临时存放
-
使用luyten工具打开该包
-
将
org.elasticsearch.license.LicenseVerifier
和org.elasticsearch.xpack.core.XPackBuild
两个源码文件提取出来,进行编辑- 文件另存到其他目录
- 文件另存到其他目录
20.3.3 修改提取的文件
- LicenseVerifier.java文件修改后的内容如下,修改工具可以使用IDEA
- 删掉第一个和第二个静态方法的内容,统一添加return ture;
package org.elasticsearch.license;
import java.nio.*;
import org.elasticsearch.common.bytes.*;
import java.security.*;
import java.util.*;
import org.elasticsearch.common.xcontent.*;
import org.apache.lucene.util.*;
import org.elasticsearch.core.internal.io.*;
import java.io.*;
public class LicenseVerifier
{
public static boolean verifyLicense(final License license, final byte[] publicKeyData) {
return ture;
}
public static boolean verifyLicense(final License license) {
return true;
}
}
- 修改
- 删除第二个静态方法中try方法中的内容
package org.elasticsearch.xpack.core;
import java.net.*;
import org.elasticsearch.core.*;
import java.nio.file.*;
import java.io.*;
import java.util.jar.*;
public class XPackBuild
{
public static final XPackBuild CURRENT;
private String shortHash;
private String date;
@SuppressForbidden(reason = "looks up path of xpack.jar directly")
static Path getElasticsearchCodebase() {
final URL url = XPackBuild.class.getProtectionDomain().getCodeSource().getLocation();
try {
return PathUtils.get(url.toURI());
}
catch (URISyntaxException bogus) {
throw new RuntimeException(bogus);
}
}
XPackBuild(final String shortHash, final String date) {
this.shortHash = shortHash;
this.date = date;
}
public String shortHash() {
return this.shortHash;
}
public String date() {
return this.date;
}
static {
final Path path = getElasticsearchCodebase();
String shortHash = null;
String date = null;
Label_0109: {
shortHash = "Unknown";
date = "Unknown";
}
CURRENT = new XPackBuild(shortHash, date);
}
}
以上两步都完成修改后另存即可
20.3.4 生成新x-packe的jar包
- 这一步可在window的命令行模式下操作,也可以在linux环境下操作
- 以下操作本人选择在linux下演示,因为大多数IT人接触的也是linux,也方便
步骤一:将源码文件编译成类文件
- 先将es等相关离线包上传到linux服务器
- 这里之所以上传es的离线包主要是编译时需要用到离线包中自带的jdk环境,如果用其他自己上传的jdk操作会出现版本问题导致编译或打包失败
# 文件列表,移动到了以下路径,请注意
[root@centos7_02 elk_1]# pwd
/home/hukanfa/elk_1
[root@centos7_02 elk_1]# ls
elasticsearch-7.14.2-linux-x86_64.tar.gz LicenseVerifier.java x-pack XPackBuild.java x-pack-core-7.14.2.jar
# 解压es离线包,此时需要用到离线包中的jdk环境
tar -zxvf elasticsearch-7.14.2-linux-x86_64.tar.gz
# 编译LicenseVerifier.java,用到了离线包的lib库以及编译需要的相关类文件
[root@centos7_02 elk_1]# ./elasticsearch-7.14.2/jdk/bin/javac -cp "/home/hukanfa/elk_1/elasticsearch-7.14.2/lib/*:/home/hukanfa/elk_1/elasticsearch-7.14.2/modules/x-pack-core/*" ./LicenseVerifier.java
-cp 和 -classpath
一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;”
分隔,linux上是分号“:”分隔。不支持通配符,需要列出所有jar包,用一点“.”代表当前路径。
# 编译XPackBuild.java
[root@centos7_02 elk_1]# ./elasticsearch-7.14.2/jdk/bin/javac -cp "/home/hukanfa/elk_1/elasticsearch-7.14.2/lib/*:/home/hukanfa/elk_1/elasticsearch-7.14.2/modules/x-pack-core/*" ./XPackBuild.java
# 查看编译后的文件
[root@centos7_02 elk_1]# ls
elasticsearch-7.14.2 elasticsearch-7.14.2-linux-x86_64.tar.gz LicenseVerifier.class LicenseVerifier.java XPackBuild.class XPackBuild.java x-pack-core-7.14.2.jar
# 另外把weix-pack-core-7.14.2的jar包移动到一个新的子目录中
# 当前目录创建新的x-pack目录
mkdir x-pack
mv x-pack-core-7.14.2.jar ./x-pack
cd x-pack
# 解压jar包,解压完成后删掉之前的jar包。
jar -xvf x-pack-core-7.14.2.jar
rm -f x-pack-core-7.14.2.jar
# 解压后,替换掉原来的LicenseVerifier.class 和 XPackBuild.class
[root@centos7_02 x-pack]# pwd
/home/hukanfa/elk_1/x-pack
[root@centos7_02 x-pack]# rm -f org/elasticsearch/license/LicenseVerifier.class
[root@centos7_02 x-pack]# rm -f org/elasticsearch/xpack/core/XPackBuild.class
[root@centos7_02 x-pack]# cp ../LicenseVerifier.class org/elasticsearch/license/
[root@centos7_02 x-pack]# cp ../XPackBuild.class org/elasticsearch/xpack/core/
步骤二:生成新jar包
- 首先,需要在把x-pack目录下的所有文件打成新的jar包
# 进入x-pcak目录
[root@centos7_02 x-pack]# pwd
/home/hukanfa/elk_1/x-pack
# 执行命令
jar -cvf x-pack-core-7.14.2.jar .
以上,所有的文件的修改结束。可以保存这个新jar包,在前面的20.2操作中用到。
20.3.5 获取liscens文件
- 这个文件最后是在kibana页面中上传导入
elastic官网申请一个license, [License申请地址](https://license.elastic.co/registration),申请完成后,下载下来的License格式为json格式。并将该License的`type`、`expiry_date_in_millis`、`max_nodes`分别修改成`platinum`、`4544447920099`、`9999`。如下:
# 名字: liscens.json
{
"license": {
"uid": "fd2deee3-9cfa-4dbb-b1ee-4fd959056bea",
"type": "platinum",
"issue_date_in_millis": 1504051200000,
"expiry_date_in_millis": 4544447920099,
"max_nodes": 9999,
"issued_to": "hong king",
"issuer": "Web Form",
"signature": "AAAAAwAAAA3EOOEKx+1fwxQOjubdAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQBpy3qMeDS5BpDEVYl1vL7dEjMFrz5vXtS3gWMKif6q5pFLP5FyJQEcYbh+rMI9lJ9F7mTT/l8GWEDf1Qqcu5ZuM7AQJDld/qyhj0Z6t6pklUYc0oCqAR2vvnV8BdXAqQhmUHvPaWTcLo7KXnGN1LpK8SFAfF8xwOS15CmK055ao8Gpn/lTxLguV2N8dQ1Qkh1KcpPCmvgoM0uwl4gYq8VFsB1JD/wbn7OiTB9mlFqdLKA5LkR/IgIbkN/k1H5A9w9/CJ8D8UuK3VBu8ueVF2DMc3Mz2oXgiDdZUpecrRTHtAZhxc/6IF9WkdwZr5Of021WCqH6IhZDzdGJHVbnD3yd",
"start_date_in_millis": 1504051200000
}
}