可能是全网首个支持阿里云Elasticsearch Xapck鉴权的Skywalking

 对Skywalking有兴趣的同学参见:年轻人的第一个APM-Skywalking

之前在搭建Skywalking的时候发现,官方Skywalking 5.X并支持有鉴权的Elasticsearch.

而我司有其他需求已经购买了阿里云的Elasticsearch,咨询过阿里云技术支持后他们表示并不能去掉鉴权,所以只好自己想办法了.

又在Skywalking技术群问了一圈,有其他人也遇到过类似的问题,但是最后还是选择自建ES了.

实在不想自己再浪费精力去搭建ES了,还是觉得可以尝试一下别的方案.

然后咨询了一下wusheng大大之后,他说可以自己尝试换一个支持XPack鉴权的Client,应该没什么太大的问题.

于是就开始了"填坑"之旅.

首先是引入x-pack-transport支持

apm-collector/apm-collector-component/client-component/pom.xml

         <dependency>             <groupId>org.elasticsearch.client</groupId>             <artifactId>x-pack-transport</artifactId>             <version>${elasticsearch.client.version}</version>         </dependency>          <repositories>         <repository>             <id>elasticsearch-releases</id>             <url>https://artifacts.elastic.co/maven</url>             <releases>                 <enabled>true</enabled>             </releases>             <snapshots>                 <enabled>false</enabled>             </snapshots>         </repository>     </repositories>

接着在 ...in/java/org/apache/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java

加入PreBuiltXPackTransportClient的初始化

  private final String securityUser;    private PreBuiltXPackTransportClient initXPackClient() {         Settings settings = Settings.builder()                 .put("cluster.name", clusterName)                 .put("xpack.security.transport.ssl.enabled", false)                 .put("xpack.security.user", securityUser)                 .put("client.transport.sniff", false).build();         return new PreBuiltXPackTransportClient(settings);      }      private PreBuiltTransportClient initClient() {         Settings settings = Settings.builder()          Settings settings = Settings.builder()             .put("cluster.name", clusterName)                   .put("cluster.name", clusterName)             .put("client.transport.sniff", clusterTransportSniffer)                 .put("client.transport.sniff", clusterTransportSniffer)             .build();                   .build();         return new PreBuiltTransportClient(settings);     }       // 新增 private final String securityUser;     // 判断这个变量是不是null或者空字符串,如果是就默认初始化,不是则使用initXPackClient初始化     // 改一下initialize 方法      private final String securityUser;        @Override     public void initialize() throws ClientException {         if (securityUser == null || "".equals(securityUser)) {             client = initClient();         } else {             client = initXPackClient();         } 

然后还要把apm-collector/pom.xml的elasticsearch.client.version 版本改成5.3.3.

改完之后因为5.3.3和原来5.5.0有点不一样,需要修改一下很几个地方的代码.

这时候建议直接使用IDEA build 一下,哪里报错改哪里就好.

主要都是 searchResponse.getHits().t

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信