public void init()

in ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/org/apache/ozhera/prometheus/agent/service/api/impl/PrometheusIpServiceExtensionImpl.java [122:235]


    public void init() {
        new ScheduledThreadPoolExecutor(1).scheduleWithFixedDelay(() -> {
            Stopwatch sw = Stopwatch.createStarted();
            log.info("enable async to obtain nacos information");
            ConcurrentHashMap<String, Set<String>> cache = new ConcurrentHashMap<>();
            Ips starterIps = new Ips();
            Ips javaagentIps = new Ips();
            Ips jaegerqueryIps = new Ips();
            Ips moneStarterIps = new Ips();
            Set<String> starterAddresssSet = new HashSet<>();
            Set<String> javaagentAddresssSet = new HashSet<>();
            Set<String> jaegerqueryAddresssSet = new HashSet<>();
            Set<String> monestarterPrometheusPortSet = new HashSet<>();
            List<Ips> starterIpsListTmp = new ArrayList<>();
            List<Ips> javaagentIpsListTmp = new ArrayList<>();
            List<Ips> jaegerqueryIpsListTmp = new ArrayList<>();
            List<Ips> monestarterIpsListTmp = new ArrayList<>();
            List<String> teslaFlag = Arrays.asList(TESLA_FLAG);
            try {
                Set<String> serviceNames = getAllServiceNames();
                log.info("service num:{} {}", serviceNames.size(), sw.elapsed(TimeUnit.MILLISECONDS));
                if (serviceNames != null && serviceNames.size() > 0) {
                    serviceNames.stream().forEach(it -> {
                        if (it == null || it.startsWith("consumers:")) {
                            return;
                        }
                        List<Instance> instances = null;
                        try {
                            instances = nacosNaming.getAllInstances(it);
                            //                            log.info("service:{} num:{}", it, instances.size());
                        } catch (NacosException e) {
                            log.error("Nacos.getAllInstance error,", e);
                        }
                        assert instances != null;
                        instances.forEach(it5 -> {
                            if (teslaFlag.contains(it)) {
                                Set<String> tmpIps = cache.getOrDefault(it, new HashSet<>());
                                tmpIps.add(it5.getIp() + ":" + it5.getPort());
                                cache.putIfAbsent(it, tmpIps);
                            }
                        });
                        List<String> starterAddrs = instances.stream()
                                .filter(it1 -> it1.getMetadata() != null && StringUtils.startsWith(it,
                                        CUSTOM_JOB_PREFIX)).map(it2 -> {
                                    String ip = it2.getIp();
                                    String port = it2.getMetadata().get(CUSTOM_JOB_PORT_KEY);
                                    return ip + ":" + port;
                                }).collect(Collectors.toList());
                        
                        List<String> javaagentAddrs = instances.stream()
                                .filter(it1 -> it1.getMetadata() != null && StringUtils.isNotEmpty(
                                        it1.getMetadata().get(JAVAAGENT_PROMETHEUS_PORT))).map(it2 -> {
                                    String ip = it2.getIp();
                                    String port = it2.getMetadata().get(JAVAAGENT_PROMETHEUS_PORT);
                                    return ip + ":" + port;
                                }).collect(Collectors.toList());
                        
                        List<String> jaegerquery = instances.stream()
                                .filter(it1 -> it1.getMetadata() != null && StringUtils.isNotEmpty(
                                        it1.getMetadata().get(JAEGERQUERY_PROMETHEUS_PORT))).map(it2 -> {
                                    String ip = it2.getIp();
                                    String port = it2.getMetadata().get(JAEGERQUERY_PROMETHEUS_PORT);
                                    return ip + ":" + port;
                                }).collect(Collectors.toList());
                        
                        List<String> moneStarterAddrs = instances.stream()
                                .filter(it1 -> it1.getMetadata() != null && StringUtils.isNotEmpty(
                                        it1.getMetadata().get(MONESTARTER_PROMETHEUS_PORT))).map(it2 -> {
                                    String ip = it2.getIp();
                                    String port = it2.getMetadata().get(MONESTARTER_PROMETHEUS_PORT);
                                    return ip + ":" + port;
                                }).collect(Collectors.toList());
                        
                        instances.stream().filter(it3 -> it3.getMetadata() != null && StringUtils.isNotEmpty(
                                it3.getMetadata().get(APPLICATION))).forEach(it4 -> {
                            String appName = it4.getMetadata().get(APPLICATION);
                            Set<String> tmpIps = cache.getOrDefault(appName, new HashSet<>());
                            if (appName.equals("tesla-gateway")) {
                                tmpIps.add(it4.getIp() + ":8080");
                            } else {
                                tmpIps.add(it4.getIp());
                            }
                            cache.putIfAbsent(appName, tmpIps);
                        });
                        
                        starterAddresssSet.addAll(starterAddrs);
                        javaagentAddresssSet.addAll(javaagentAddrs);
                        jaegerqueryAddresssSet.addAll(jaegerquery);
                        monestarterPrometheusPortSet.addAll(moneStarterAddrs);
                    });
                }
                
                appIpsCache = cache;
                
                starterIps.setTargets(new ArrayList<>(starterAddresssSet));
                javaagentIps.setTargets(new ArrayList<>(javaagentAddresssSet));
                jaegerqueryIps.setTargets(new ArrayList<>(jaegerqueryAddresssSet));
                moneStarterIps.setTargets(new ArrayList<>(monestarterPrometheusPortSet));
                
                starterIpsListTmp.add(starterIps);
                javaagentIpsListTmp.add(javaagentIps);
                jaegerqueryIpsListTmp.add(jaegerqueryIps);
                monestarterIpsListTmp.add(moneStarterIps);
                
                starterIpsList = starterIpsListTmp;
                javaagentIpsList = javaagentIpsListTmp;
                jaegerqueryIpsList = jaegerqueryIpsListTmp;
                monequeryIpsList = monestarterIpsListTmp;
                log.info("异步获取nacos信息完成 use time:{}", sw.elapsed(TimeUnit.MILLISECONDS));
            } catch (Exception ex) {
                log.error("PrometheusService.init, get nacos value error", ex);
            }
        }, 0, 15, TimeUnit.SECONDS);
    }