由于本司多个Elasticsearch集群使用一个kibana集群,本来Elasticsearch集群都是5.x,有一个日志集群需要升级到6.x,升级完之后kibana就不识别Elasticsearch6.x 的basic license(经过测试,kibana6.x不存在问题),这样导致查看不了集群状态,但是又不能把kibana升级到6.x(其他Elasticsearch5.x集群是5.x),无奈只能修改kibana原来来达到目的.
修改kibana x-pack源码
- 编辑文件
${kibana_home}/plugins/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.js
- 修改该文件里面的函数
normalizeClustersData该方法是kibana获取Elasticsearch集群数据的最后调整的函数,在这里,我们可以调整自己想要的数据,不仅仅是license
- 调整内容
export function normalizeClustersData(clusters) {clusters.forEach(cluster => {cluster.elasticsearch = { cluster_stats: cluster.cluster_stats, nodes: cluster.nodes, indices: cluster.indices};cluster.status = calculateOverallStatus([ cluster.elasticsearch.status, cluster.kibana && cluster.kibana.status || null]); //我手动添加的内容 cluster.isSupported = true;//突破basic license只能同时在kibana看一个Elasticsearch的限制 //我手动添加的内容,修改所有Elasticsearch集群的license内容,使之都有效 cluster.license={ "status": "active", "uid": "dfee2a04-bc89-4f84-bcde-39ce31e3ec5d", "type": "basic", "issue_date": "2019-02-21T04:38:03.373Z", "issue_date_in_millis": 1550723883373, "expiry_date": "2029-03-23T04:38:03.373Z", "expiry_date_in_millis": 1553315883373, "max_nodes": 1000, "issued_to": "elasticsearch", "issuer": "elasticsearch", "start_date_in_millis": -1, "hkey": "133893e5d3ae10145b0bc9d6600db8bd6ca4a8fe91fd1eac3" };delete cluster.cluster_stats;delete cluster.nodes;delete cluster.indices;});return clusters;
}
> 当然我们也能修改其他地方,来达到意想不到的效果