对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
