This is an automated email from the ASF dual-hosted git repository.
zhangxiaowei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozhera.git
The following commit(s) were added to refs/heads/master by this push:
new 422dc630 refactor: improve code layering of ozhera-prometheus-agent
module (#437)
422dc630 is described below
commit 422dc630edbcb9da1d2d3bf5359ca8c8c934b2d8
Author: Black Pan <[email protected]>
AuthorDate: Fri Sep 6 14:31:53 2024 +0800
refactor: improve code layering of ozhera-prometheus-agent module (#437)
* refactor: improve code layering of ozhera-prometheus-agent module
* refactor: improve code layering of ozhera-prometheus-agent-service module
---------
Co-authored-by: wodiwudi <[email protected]>
---
.../prometheus/agent/service/DingDingService.java | 265 +-------------
.../prometheus/agent/service/FeishuService.java | 77 +---
.../prometheus/agent/service/InitService.java | 49 +--
.../agent/service/MioneMachineService.java | 49 +--
.../agent/service/PrometheusIpService.java | 87 +----
.../agent/service/PrometheusVmService.java | 74 +---
.../service/api/MioneMachineServiceExtension.java | 2 +
.../impl/MioneMachineServiceExtensionImpl.java} | 4 +-
.../impl/PrometheusIpServiceExtensionImpl.java} | 177 +++++----
.../DingDingServiceImpl.java} | 108 +++---
.../FeishuServiceImpl.java} | 10 +-
.../InitServiceImpl.java} | 29 +-
.../service/impl/MioneMachineServiceImpl.java | 19 +-
...rtImpl.java => PrometheusAlertServiceImpl.java} | 2 +-
.../service/impl/PrometheusIpServiceImpl.java | 403 +++------------------
.../PrometheusVmServiceImpl.java} | 21 +-
16 files changed, 305 insertions(+), 1071 deletions(-)
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/DingDingService.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/DingDingService.java
index 99ce2842..6f5b452e 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/DingDingService.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/DingDingService.java
@@ -13,265 +13,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.xiaomi.youpin.prometheus.agent.service;
-
-import com.alibaba.nacos.api.config.annotation.NacosValue;
-import com.aliyun.dingtalkcard_1_0.models.RegisterCallbackResponse;
-import com.aliyun.dingtalkim_1_0.Client;
-import com.aliyun.dingtalkim_1_0.models.SendRobotInteractiveCardHeaders;
-import com.aliyun.dingtalkim_1_0.models.SendRobotInteractiveCardRequest;
-import com.aliyun.dingtalkim_1_0.models.UpdateRobotInteractiveCardHeaders;
-import com.aliyun.dingtalkim_1_0.models.UpdateRobotInteractiveCardRequest;
-import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest;
-import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse;
-import com.aliyun.tea.TeaException;
-import com.aliyun.teaopenapi.models.Config;
-import com.aliyun.teautil.models.RuntimeOptions;
-import com.google.common.cache.Cache;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.stereotype.Service;
-import javax.annotation.PostConstruct;
-import java.util.*;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
+package com.xiaomi.youpin.prometheus.agent.service;
/**
* @author zhangxiaowei6
* @Date 2023/9/15 09:33
*/
-@Service
-@Slf4j
-@ConditionalOnProperty(name = "service.selector.property", havingValue =
"outer")
-public class DingDingService {
- private Client dingClient;
- private Config dingConfig;
-
- @Autowired
- private Cache<String, Object> cache;
-
- private com.aliyun.dingtalkoauth2_1_0.Client dingOauthClient;
-
- private com.aliyun.dingtalkcard_1_0.Client dingCardClient;
-
- @NacosValue(value = "${dingding.appKey}", autoRefreshed = true)
- private String appKey;
-
- @NacosValue(value = "${dingding.appSecret}", autoRefreshed = true)
- private String appSecret;
-
- @NacosValue(value = "${dingding.robotCode}", autoRefreshed = true)
- private String robotCode;
-
- @NacosValue(value = "${dingding.callbackUrl}", autoRefreshed = true)
- private String callbackUrl;
-
- @NacosValue(value = "${hera.alert.whiteList}", autoRefreshed = true)
- private String whiteListStr;
-
- @NacosValue(value = "${dingding.user.type}", autoRefreshed = true)
- private String dingdingUserType;
-
- private final String ACCESS_TOKEN = "dingding_access_token";
-
- private final String DINGDING_USER_INFO_URL =
"https://oapi.dingtalk.com/topapi/v2/user/get";
-
- private final Map<String, String> whiteListMap = new HashMap<>();
-
- private Object getDingDingAccessToken() {
-
- // Get data from the cache
- return cache.getIfPresent(ACCESS_TOKEN);
- }
-
- private void setDingDingAccessToken(String accessToken) {
- // Get data from the cache
- cache.put(ACCESS_TOKEN, accessToken);
- }
-
- @PostConstruct
- public void init() throws Exception {
- dingConfig = new Config();
- dingConfig.protocol = "https";
- dingConfig.regionId = "central";
- dingClient = new Client(dingConfig);
- dingCardClient = new com.aliyun.dingtalkcard_1_0.Client(dingConfig);
- dingOauthClient = new com.aliyun.dingtalkoauth2_1_0.Client(dingConfig);
- //registerDingDingCallBack();
- //user type judge
- if (!dingdingUserType.equals("userId") &&
!dingdingUserType.equals("unionId")) {
- log.error("DingDingService.userType not valid, userType:
{}",dingdingUserType);
- //set default value
- dingdingUserType = "userId";
- }
- periodicRefreshWhiteList();
- }
-
- //2m auto refresh white list
- private void periodicRefreshWhiteList() {
- new ScheduledThreadPoolExecutor(1).scheduleWithFixedDelay(() -> {
- //fill in white list
- if (!StringUtils.isBlank(whiteListStr)) {
- List<String> whiteList = Arrays.asList(whiteListStr.split(",",
-1));
- log.info("DingDingService init whiteList is :{}", whiteList);
- if (whiteList.size() % 2 != 0) {
- log.error("DingDingService sendDingDing whiteList error ,
because whiteList size is not even");
- return;
- }
- //fill in map
- for (int i = 0; i < whiteList.size(); i = i + 2) {
- whiteListMap.put(whiteList.get(i), whiteList.get(i + 1));
- }
- }
- }, 0, 120, TimeUnit.SECONDS);
- }
-
- private String getAccessToken() {
- String accessToken = (String) getDingDingAccessToken();
- if (accessToken != null) {
- return accessToken;
- }
- //TODO:token redis cache
- GetAccessTokenRequest getAccessTokenRequest = new
GetAccessTokenRequest();
- getAccessTokenRequest.setAppKey(appKey);
- getAccessTokenRequest.setAppSecret(appSecret);
- try {
- GetAccessTokenResponse accessTokenRes =
dingOauthClient.getAccessToken(getAccessTokenRequest);
- if (accessTokenRes.getBody() == null) {
- return null;
- }
- accessToken = accessTokenRes.getBody().getAccessToken();
- log.info("accessToken:{}", accessToken);
- if (accessToken != null) {
- setDingDingAccessToken(accessToken);
- }
- return accessToken;
- } catch (Exception e) {
- log.error("DingDingService getAccessToken err:{}", e);
- return null;
- }
- }
-
- private void registerDingDingCallBack() {
- String token = getAccessToken();
- if (token == null) {
- log.error("DingDingService registerDingDingCallBack token is
null");
- return;
- }
- com.aliyun.dingtalkcard_1_0.models.RegisterCallbackHeaders
registerCallbackHeaders =
- new
com.aliyun.dingtalkcard_1_0.models.RegisterCallbackHeaders();
- registerCallbackHeaders.setXAcsDingtalkAccessToken(token);
-
- com.aliyun.dingtalkcard_1_0.models.RegisterCallbackRequest
registerCallbackRequest =
- new
com.aliyun.dingtalkcard_1_0.models.RegisterCallbackRequest()
- .setCallbackRouteKey("hera-route-key")
- .setCallbackUrl(callbackUrl);
- try {
- RegisterCallbackResponse registerDingDingCallbackResponse =
dingCardClient.
- registerCallbackWithOptions(registerCallbackRequest,
registerCallbackHeaders, new RuntimeOptions());
- log.info("registerDingDingCallbackResponse:{}",
registerDingDingCallbackResponse);
- } catch (Exception e) {
- log.error("DingDingService registerDingDingCallBack err:{}", e);
- }
- }
-
- public void sendDingDing(String content, String[] unionIds, String
cardBizId) {
- log.info("sendDingDing param content: {}, unionIds: {}, cardBizId:
{}", content, unionIds, cardBizId);
- String token = getAccessToken();
- if (token == null) {
- log.error("DingDingService sendDingDing token is null");
- return;
- }
- log.info("DingDingService sendDingDing token:{}", token);
- /* List<Union> unions = new ArrayList<Union>();
- Arrays.stream(unionIds).forEach(unionId-> {
- Union union = new Union(unionId);
- unions.add(union);
- });*/
- for (String uid : unionIds) {
- if (whiteListMap.containsKey(uid)) {
- uid = whiteListMap.get(uid);
- }
- SendRobotInteractiveCardHeaders sendRobotInteractiveCardHeaders =
new SendRobotInteractiveCardHeaders();
- sendRobotInteractiveCardHeaders.setXAcsDingtalkAccessToken(token);
-
SendRobotInteractiveCardRequest.SendRobotInteractiveCardRequestSendOptions
sendOptions =
- new
SendRobotInteractiveCardRequest.SendRobotInteractiveCardRequestSendOptions();
- SendRobotInteractiveCardRequest sendRobotInteractiveCardRequest =
new SendRobotInteractiveCardRequest()
- .setCardTemplateId("StandardCard")
- .setSingleChatReceiver("{\""+ dingdingUserType +"\":\"" +
uid + "\"}")
- .setCardBizId(cardBizId)
- .setRobotCode(robotCode)
- .setCardData(content)
- .setSendOptions(sendOptions)
- .setPullStrategy(false)
- .setCallbackUrl(callbackUrl);
- try {
-
dingClient.sendRobotInteractiveCardWithOptions(sendRobotInteractiveCardRequest,
- sendRobotInteractiveCardHeaders, new RuntimeOptions());
- } catch (Exception e) {
- log.error("DingDingService sendDingDing err:{}", e);
- }
- }
- }
-
- public void updateDingDingCard(String content, String cardBizId) {
- String token = getAccessToken();
- if (token == null) {
- log.error("DingDingService updateDingDingCard token is null");
- return;
- }
- log.info("DingDingService updateDingDingCard token:{}", token);
-
- UpdateRobotInteractiveCardHeaders updateRobotInteractiveCardHeaders =
new UpdateRobotInteractiveCardHeaders();
- updateRobotInteractiveCardHeaders.setXAcsDingtalkAccessToken(token);
-
UpdateRobotInteractiveCardRequest.UpdateRobotInteractiveCardRequestUpdateOptions
updateOptions =
- new
UpdateRobotInteractiveCardRequest.UpdateRobotInteractiveCardRequestUpdateOptions()
- .setUpdateCardDataByKey(false)
- .setUpdatePrivateDataByKey(false);
- UpdateRobotInteractiveCardRequest updateRobotInteractiveCardRequest =
new UpdateRobotInteractiveCardRequest()
- .setCardBizId(cardBizId)
- .setCardData(content)
-
//.setUserIdPrivateDataMap("{\"userId0001\":{\"xxxx\":\"xxxx\"}}")
- //
.setUnionIdPrivateDataMap("{\"unionId0001\":{\"xxxx\":\"xxxx\"}}")
- .setUpdateOptions(updateOptions);
- try {
-
dingClient.updateRobotInteractiveCardWithOptions(updateRobotInteractiveCardRequest,
- updateRobotInteractiveCardHeaders, new RuntimeOptions());
- } catch (TeaException err) {
- if (!com.aliyun.teautil.Common.empty(err.code) &&
!com.aliyun.teautil.Common.empty(err.message)) {
- log.error("DingDingService updateDingDingCard
TeaException:{}", err);
- }
-
- } catch (Exception _err) {
- TeaException err = new TeaException(_err.getMessage(), _err);
- if (!com.aliyun.teautil.Common.empty(err.code) &&
!com.aliyun.teautil.Common.empty(err.message)) {
- log.error("DingDingService updateDingDingCard err:{}", err);
- }
- }
-
- }
-
- public String getNameByUserId(String userId) {
- return "unKnown";
- /*String token = getAccessToken();
- if (token == null) {
- log.error("DingDingService getNameByUserId token is null");
- return null;
- }
- try {
- DingTalkClient client = new
DefaultDingTalkClient(DINGDING_USER_INFO_URL);
- OapiV2UserGetRequest req = new OapiV2UserGetRequest();
- req.setUserid(userId);
- req.setLanguage("zh_CN");
- OapiV2UserGetResponse rsp = client.execute(req, token);
- System.out.println(rsp.getBody());
- return rsp.getResult().getName();
- } catch (ApiException e) {
- log.error("DingDingService getNameByUserId err:{}", e);
- return null;
- }*/
- }
+public interface DingDingService {
+
+ void init() throws Exception;
+
+ void sendDingDing(String content, String[] unionIds, String cardBizId);
+
+ void updateDingDingCard(String content, String cardBizId);
+
+ String getNameByUserId(String userId);
}
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/FeishuService.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/FeishuService.java
index 6aff1538..9886e7d4 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/FeishuService.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/FeishuService.java
@@ -13,75 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.xiaomi.youpin.prometheus.agent.service;
-
-import com.alibaba.nacos.api.config.annotation.NacosValue;
-import com.google.gson.Gson;
-import com.xiaomi.youpin.feishu.FeiShu;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.PostConstruct;
-
-@Service
-@Slf4j
-public class FeishuService {
-
- private FeiShu feiShu;
-
- private final Gson gson = new Gson();
- @NacosValue(value = "${feishu.appid}", autoRefreshed = true)
- private String appId;
-
- @NacosValue(value = "${feishu.appSecret}", autoRefreshed = true)
- private String appSecret;
-
- @PostConstruct
- private void init() {
- feiShu = new FeiShu(appId, appSecret);
- }
-
- public void sendFeishu(String content, String[] receivers, String[]
feishuGroups) {
- sendFeishu(content, receivers, feishuGroups, false);
- }
-
- public void sendFeishu(String content, String[] receivers, String[]
feishuGroups, boolean sendCard) {
- if (StringUtils.isEmpty(content)) {
- return;
- }
- log.info("sendFeishu content:{},receivers:{}",content, receivers);
- try {
- if (receivers != null) {
- for (String receiver : receivers) {
-// if (receiver.contains("@xiaomi.com") == false) {
-// receiver = receiver + "@xiaomi.com";
-// }
- if (sendCard) {
- feiShu.sendCardByEmail(receiver, content);
- } else {
- feiShu.sendMsgByEmail(receiver, content);
- }
- }
- }
- if (feishuGroups != null) {
- //content += feishuGroupsAtTags(receivers);
- for (String feishuGroup : feishuGroups) {
- if (sendCard) {
- feiShu.sendCardByChatId(feishuGroup, content);
- } else {
- feiShu.sendMsgByChatId(feishuGroup, content);
- }
- }
- }
-
- } catch (Exception e) {
- log.error(e.toString());
- }
- }
+package com.xiaomi.youpin.prometheus.agent.service;
- public String getUserIdByEmail(String email) {
- return feiShu.getUserIdByEmail(email);
- }
+public interface FeishuService {
+
+ void sendFeishu(String content, String[] receivers, String[] feishuGroups);
+
+ void sendFeishu(String content, String[] receivers, String[] feishuGroups,
boolean sendCard);
+
+ String getUserIdByEmail(String email);
}
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/InitService.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/InitService.java
index 63bc45aa..8164770d 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/InitService.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/InitService.java
@@ -13,50 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.xiaomi.youpin.prometheus.agent.service;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import com.xiaomi.data.push.nacos.NacosNaming;
-
-import javax.annotation.PostConstruct;
-
-@Service
-@Slf4j
-public class InitService {
-
- @Autowired
- private NacosNaming nacosNaming;
-
- @Value("${server.port}")
- private String httpPort;
-
- @Value("${dubbo.group}")
- private String group;
-
- @Value("${app.name}")
- private String appName;
-
- @PostConstruct
- public void init() {
- String host = System.getenv("host.ip") == null ?
NetUtils.getLocalHost() : System.getenv("host.ip");
- final String port = httpPort;
- try {
- nacosNaming.registerInstance(appName, host, Integer.valueOf(port),
group);
+package com.xiaomi.youpin.prometheus.agent.service;
- Runtime.getRuntime().addShutdownHook(new Thread(()->{
- try {
- nacosNaming.deregisterInstance(appName, host,
Integer.valueOf(port), group);
- } catch (Exception e) {
- log.error("nacos init service : ",e);
- }
- }));
- } catch (Exception e) {
- log.error("nacos init service : ",e);
- }
- }
+public interface InitService {
+
+
+ void init();
}
\ No newline at end of file
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/MioneMachineService.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/MioneMachineService.java
index b7b559ff..d4ca493e 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/MioneMachineService.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/MioneMachineService.java
@@ -23,54 +23,9 @@ import org.springframework.stereotype.Service;
import java.util.List;
-@Slf4j
-@Service
-public class MioneMachineService {
- @Autowired
- private MioneMachineServiceExtension mioneMachineServiceExtension;
+public interface MioneMachineService {
-// @NacosValue(value = "${mione.machine.port}", autoRefreshed = true)
-// private String machinePort;
-//
-// @NacosValue(value = "${mione.container.port}", autoRefreshed = true)
-// private String containerPort;
- /*@Reference(interfaceClass = QuotaService.class, group =
"${ref.quota.service.group}", check = false)
- private QuotaService quotaService;
-
- @Reference(interfaceClass = ResourceService.class, group =
"${ref.quota.service.group}", check = false)
- private ResourceService resourceService;*/
-
- public List<Ips> queryMachineList(String type) {
- /* List<String> result = new ArrayList<>();
- List<String> ips = new ArrayList<>();
- try {
- Result<List<ResourceBo>> resourceResult = resourceService.list();
- List<ResourceBo> data = resourceResult.getData();
- data.forEach((resource) -> {
- if (resource.getLables() != null &&
Objects.equals(resource.getLables().get("type"), "docker")) {
- ips.add(resource.getIp());
- }
- });
- if (ips.size() > 0) {
- for (String ip : ips) {
- if ("1".equals(type)) {
- result.add(ip + ":" + machinePort);
- } else {
- result.add(ip + ":" + containerPort);
- }
- }
- }
- } catch (Exception e) {
- log.error("quotaService.resourceService接口失败:", e);
- }
- List<Ips> defaultResult = new ArrayList<>();
- Ips ips2 = new Ips();
- ips2.setTargets(result);
- defaultResult.add(ips2);
- return defaultResult;
-*/
- return mioneMachineServiceExtension.queryMachineList(type);
- }
+ List<Ips> queryMachineList(String type) ;
}
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/PrometheusIpService.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/PrometheusIpService.java
index b70fe2e7..385b0bb7 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/PrometheusIpService.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/PrometheusIpService.java
@@ -13,78 +13,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.xiaomi.youpin.prometheus.agent.service;
-import com.alibaba.nacos.api.config.annotation.NacosValue;
-import com.google.gson.Gson;
-import com.xiaomi.data.push.client.HttpClientV2;
import com.xiaomi.youpin.prometheus.agent.domain.Ips;
-import
com.xiaomi.youpin.prometheus.agent.service.api.PrometheusIpServiceExtension;
-import com.xiaomi.youpin.prometheus.agent.service.dto.heraApp.GetAllPodIpRes;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-
-@Slf4j
-@Service
-public class PrometheusIpService {
-
- @Autowired
- private PrometheusIpServiceExtension prometheusIpServiceExtension;
-
- @NacosValue(value = "${hera.app.addr}", autoRefreshed = true)
- private String heraAppAddr;
-
- @NacosValue(value = "${golang.runtime.default.port}", autoRefreshed = true)
- private String goRuntimePort;
-
- private static final Gson gson = new Gson();
-
- public List<Ips> getByType(String type) {
- return prometheusIpServiceExtension.getByType(type);
- }
-
- public Set<String> getIpsByAppName(String name) {
- return prometheusIpServiceExtension.getIpsByAppName(name);
- }
-
- public Set<String> getEtcdHosts() {
- return prometheusIpServiceExtension.getEtcdHosts();
- }
-
-
- public List<Ips> getK8sNodeIp(String type) {
- return prometheusIpServiceExtension.getK8sNodeIp(type);
- }
-
- public List<Ips> getHeraAppPodIp() {
- log.info("getHeraAppPodIp begin heraAppAddr:{},goRuntimePort: {}",
heraAppAddr, goRuntimePort);
- List<Ips> res = new ArrayList<>();
- String url = heraAppAddr + "/hera/app/env/non/probe/ips";
- log.info("getHeraAppPodIp url:{}", url);
- Map<String, String> headers = new HashMap(1);
- headers.put("Content-Type", "application/json; charset=utf-8");
- try {
- String heraAppRes = HttpClientV2.get(url, headers, 10000);
- GetAllPodIpRes getAllPodIpRes = gson.fromJson(heraAppRes,
GetAllPodIpRes.class);
- log.info("getHeraAppPodIp heraAppRes : {} ", heraAppRes);
- if (getAllPodIpRes == null || getAllPodIpRes.getCode() != 0) {
- return res;
- }
- Ips ips = new Ips();
- List<String> ipStr = new ArrayList<>();
- getAllPodIpRes.getData().forEach(it -> {
- ipStr.add(it + ":" + goRuntimePort);
- });
- ips.setTargets(ipStr);
- res.add(ips);
- return res;
- } catch (Exception e) {
- log.error("getHeraAppPodIp error:{}", e);
- return res;
- }
- }
+import java.util.List;
+import java.util.Set;
+
+public interface PrometheusIpService {
+
+
+ List<Ips> getByType(String type);
+
+ Set<String> getIpsByAppName(String name);
+
+ Set<String> getEtcdHosts();
+
+ List<Ips> getK8sNodeIp(String type);
+
+ List<Ips> getHeraAppPodIp();
+
}
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/PrometheusVmService.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/PrometheusVmService.java
index 20638fcf..8beb0704 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/PrometheusVmService.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/PrometheusVmService.java
@@ -13,84 +13,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.xiaomi.youpin.prometheus.agent.service;
-import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.xiaomi.youpin.prometheus.agent.domain.Ips;
-import io.fabric8.kubernetes.api.model.PodList;
-import io.fabric8.kubernetes.client.DefaultKubernetesClient;
-import io.fabric8.kubernetes.client.KubernetesClient;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
/**
* @author zhangxiaowei6
* @Date 2024/2/23 16:31
*/
-@Slf4j
-@Service
-public class PrometheusVmService {
-
- @NacosValue(value = "${vm.agent.port}", autoRefreshed = true)
- private String vmAgentPort;
-
- @NacosValue(value = "${vm.Alert.Port}", autoRefreshed = true)
- private String vmAlertPort;
-
- @NacosValue(value = "${vm.Insert.Port}", autoRefreshed = true)
- private String vmInsertPort;
-
- @NacosValue(value = "${vm.Select.Port}", autoRefreshed = true)
- private String vmSelectPort;
-
- @NacosValue(value = "${vm.Storage.Port}", autoRefreshed = true)
- private String vmStoragePort;
-
- public List<Ips> getVMClusterIp(String name) {
- String port = "";
- switch (name) {
- case "ozhera-vmagent":
- port = vmAgentPort;
- break;
- case "ozhera-vmalert":
- port = vmAlertPort;
- break;
- case "ozhera-vminsert":
- port = vmInsertPort;
- break;
- case "ozhera-vmselect":
- port = vmSelectPort;
- break;
- case "ozhera-vmstorage":
- port = vmStoragePort;
- break;
- default:
- log.error("getClusterIp invalid name:{}", name);
- return null;
- }
- // fetch vm cluster ip list
- Set<String> podNameSet = new HashSet<>();
- try (KubernetesClient client = new DefaultKubernetesClient()) {
- String labelName = "app";
- // get Pod name
- PodList podList = client.pods().withLabel(labelName, name).list();
- String finalPort = port;
- podList.getItems().forEach(pod ->
podNameSet.add(pod.getStatus().getPodIP() + ":" + finalPort));
- List<String> result = new ArrayList<>(podNameSet);
- List<Ips> defaultResult = new ArrayList<>();
- Ips ips = new Ips();
- ips.setTargets(result);
- defaultResult.add(ips);
- return defaultResult;
- } catch (Exception e) {
- log.error("PrometheusVMClient getVMAgentPodName error: {}", e);
- return null;
- }
- }
+public interface PrometheusVmService {
+
+
+ List<Ips> getVMClusterIp(String name);
}
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/api/MioneMachineServiceExtension.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/api/MioneMachineServiceExtension.java
index d87919e7..c20e938a 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/api/MioneMachineServiceExtension.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/api/MioneMachineServiceExtension.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.xiaomi.youpin.prometheus.agent.service.api;
import com.xiaomi.youpin.prometheus.agent.domain.Ips;
@@ -24,5 +25,6 @@ import java.util.List;
*/
public interface MioneMachineServiceExtension {
+
List<Ips> queryMachineList(String type);
}
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/MioneMachineServiceImpl.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/api/impl/MioneMachineServiceExtensionImpl.java
similarity index 88%
copy from
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/MioneMachineServiceImpl.java
copy to
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/api/impl/MioneMachineServiceExtensionImpl.java
index 80cf4529..3b8527e7 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/MioneMachineServiceImpl.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/api/impl/MioneMachineServiceExtensionImpl.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.xiaomi.youpin.prometheus.agent.service.impl;
+package com.xiaomi.youpin.prometheus.agent.service.api.impl;
import com.xiaomi.youpin.prometheus.agent.domain.Ips;
import
com.xiaomi.youpin.prometheus.agent.service.api.MioneMachineServiceExtension;
@@ -28,7 +28,7 @@ import java.util.List;
@Slf4j
@Service
@ConditionalOnProperty(name = "service.selector.property", havingValue =
"outer")
-public class MioneMachineServiceImpl implements MioneMachineServiceExtension {
+public class MioneMachineServiceExtensionImpl implements
MioneMachineServiceExtension {
@Override
public List<Ips> queryMachineList(String type) {
return null;
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusIpServiceImpl.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/api/impl/PrometheusIpServiceExtensionImpl.java
similarity index 80%
copy from
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusIpServiceImpl.java
copy to
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/api/impl/PrometheusIpServiceExtensionImpl.java
index 43a7e042..4c579250 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusIpServiceImpl.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/api/impl/PrometheusIpServiceExtensionImpl.java
@@ -13,7 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.xiaomi.youpin.prometheus.agent.service.impl;
+
+package com.xiaomi.youpin.prometheus.agent.service.api.impl;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.alibaba.nacos.api.exception.NacosException;
@@ -37,67 +38,83 @@ import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
+
@Slf4j
@Service
@ConditionalOnProperty(name = "service.selector.property", havingValue =
"outer")
-public class PrometheusIpServiceImpl implements PrometheusIpServiceExtension {
+public class PrometheusIpServiceExtensionImpl implements
PrometheusIpServiceExtension {
+
@Autowired
private NacosNaming nacosNaming;
-
+
private static ConcurrentHashMap<String, Set<String>> appIpsCache = new
ConcurrentHashMap<>();
-
+
public static final int PAGINATION_SIZE = 200;
-
+
public static final String PROMETHEUS_PORT = "prometheus_port";
-
+
public static final String JAVAAGENT_PROMETHEUS_PORT =
"javaagent_prometheus_port";
-
+
public static final String JAEGERQUERY_PROMETHEUS_PORT =
"jaegerQuery_port";
-
+
public static final String MONESTARTER_PROMETHEUS_PORT =
"monestarter_prometheus_port";
-
+
public static final String APPLICATION = "application";
-
- public static final String[] TESLA_FLAG = new String[]{""};
-
+
+ public static final String[] TESLA_FLAG = new String[] {""};
+
public static final String ST_K8S_NODE = "http://localhost";
-
+
public static final String ONLINE_K8S_NODE = "http://localhost";
-
+
public static final String CUSTOM_JOB_PREFIX = "prometheus_custom_server_";
-
+
public static final String CUSTOM_JOB_PORT_KEY = "ozhera_prometheus_port";
-
+
private final Gson gson = new Gson();
-
+
private List<Ips> starterIpsList = new ArrayList<>();
+
private List<Ips> javaagentIpsList = new ArrayList<>();
+
private List<Ips> jaegerqueryIpsList = new ArrayList<>();
+
private List<Ips> monequeryIpsList = new ArrayList<>();
-
+
@Value("${server.type}")
private String serverType;
-
+
@NacosValue(value = "${mione.k8s.node.port}", autoRefreshed = true)
private String machinePort;
-
+
@NacosValue(value = "${mione.k8s.container.port}", autoRefreshed = true)
private String containerPort;
-
+
@NacosValue(value = "${jaeger_query_token}")
private String jaegerQueryToken;
-
+
private ReentrantLock lock = new ReentrantLock();
-
+
@PostConstruct
public void init() {
new ScheduledThreadPoolExecutor(1).scheduleWithFixedDelay(() -> {
@@ -128,7 +145,7 @@ public class PrometheusIpServiceImpl implements
PrometheusIpServiceExtension {
List<Instance> instances = null;
try {
instances = nacosNaming.getAllInstances(it);
-// log.info("service:{} num:{}", it,
instances.size());
+ // log.info("service:{}
num:{}", it, instances.size());
} catch (NacosException e) {
log.error("Nacos.getAllInstance error,", e);
}
@@ -140,31 +157,40 @@ public class PrometheusIpServiceImpl implements
PrometheusIpServiceExtension {
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
-> {
+ 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")) {
@@ -174,26 +200,26 @@ public class PrometheusIpServiceImpl implements
PrometheusIpServiceExtension {
}
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;
@@ -204,11 +230,11 @@ public class PrometheusIpServiceImpl implements
PrometheusIpServiceExtension {
}
}, 0, 15, TimeUnit.SECONDS);
}
-
+
private Set<String> getAllServiceNames() {
-
+
final Set<String> serviceNames = new LinkedHashSet<>();
-
+
int pageIndex = 1;
ListView<String> listView = nacosNaming.getServicesOfServer(pageIndex,
PAGINATION_SIZE);
// First page data
@@ -229,10 +255,10 @@ public class PrometheusIpServiceImpl implements
PrometheusIpServiceExtension {
listView = nacosNaming.getServicesOfServer(++pageIndex,
PAGINATION_SIZE);
serviceNames.addAll(listView.getData());
}
-
+
return serviceNames;
}
-
+
@Override
public List<Ips> getByType(String type) {
if (StringUtils.isEmpty(type)) {
@@ -261,25 +287,25 @@ public class PrometheusIpServiceImpl implements
PrometheusIpServiceExtension {
return defaultResult;
}
}
-
+
@Override
public Set<String> getIpsByAppName(String name) {
return appIpsCache.getOrDefault(name, new HashSet<>());
}
-
+
private String[] getEtcd() {
return null;
}
-
+
@Override
public Set<String> getEtcdHosts() {
return null;
}
-
-
+
+
@Override
public List<Ips> getK8sNodeIp(String type) {
-
+
List<String> res = new ArrayList<>();
/* V1NodeList nodes;
try {
@@ -313,9 +339,9 @@ public class PrometheusIpServiceImpl implements
PrometheusIpServiceExtension {
}
}
} catch (Exception e) {
- log.error("getK8sNodeIp error:{}",e.getMessage());
+ log.error("getK8sNodeIp error:{}", e.getMessage());
}
- log.info("getK8sNodeIp k8s node count:{}",res.size());
+ log.info("getK8sNodeIp k8s node count:{}", res.size());
List<String> result = new ArrayList<>();
String port = "";
if (type.equals("node")) {
@@ -326,18 +352,17 @@ public class PrometheusIpServiceImpl implements
PrometheusIpServiceExtension {
return null;
}
String finalPort = port;
- res.forEach(
- item -> {
- result.add(item + ":" + finalPort);
- });
+ res.forEach(item -> {
+ result.add(item + ":" + finalPort);
+ });
List<Ips> defaultResult = new ArrayList<>();
Ips ips2 = new Ips();
ips2.setTargets(result);
defaultResult.add(ips2);
return defaultResult;
}
-
-
+
+
private String innerRequest(String data, String url, String apiKey, String
method) {
try {
URL requestUrl = new URL(url);
@@ -389,5 +414,5 @@ public class PrometheusIpServiceImpl implements
PrometheusIpServiceExtension {
lock.unlock();
}
}*/
-
+
}
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/DingDingService.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/DingDingServiceImpl.java
similarity index 85%
copy from
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/DingDingService.java
copy to
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/DingDingServiceImpl.java
index 99ce2842..0eba8636 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/DingDingService.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/DingDingServiceImpl.java
@@ -13,7 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.xiaomi.youpin.prometheus.agent.service;
+
+package com.xiaomi.youpin.prometheus.agent.service.impl;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.aliyun.dingtalkcard_1_0.models.RegisterCallbackResponse;
@@ -28,6 +29,7 @@ import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import com.google.common.cache.Cache;
+import com.xiaomi.youpin.prometheus.agent.service.DingDingService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -35,7 +37,10 @@ import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
-import java.util.*;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@@ -46,52 +51,55 @@ import java.util.concurrent.TimeUnit;
@Service
@Slf4j
@ConditionalOnProperty(name = "service.selector.property", havingValue =
"outer")
-public class DingDingService {
+public class DingDingServiceImpl implements DingDingService {
+
private Client dingClient;
+
private Config dingConfig;
-
+
@Autowired
private Cache<String, Object> cache;
-
+
private com.aliyun.dingtalkoauth2_1_0.Client dingOauthClient;
-
+
private com.aliyun.dingtalkcard_1_0.Client dingCardClient;
-
+
@NacosValue(value = "${dingding.appKey}", autoRefreshed = true)
private String appKey;
-
+
@NacosValue(value = "${dingding.appSecret}", autoRefreshed = true)
private String appSecret;
-
+
@NacosValue(value = "${dingding.robotCode}", autoRefreshed = true)
private String robotCode;
-
+
@NacosValue(value = "${dingding.callbackUrl}", autoRefreshed = true)
private String callbackUrl;
-
+
@NacosValue(value = "${hera.alert.whiteList}", autoRefreshed = true)
private String whiteListStr;
-
+
@NacosValue(value = "${dingding.user.type}", autoRefreshed = true)
private String dingdingUserType;
-
+
private final String ACCESS_TOKEN = "dingding_access_token";
-
+
private final String DINGDING_USER_INFO_URL =
"https://oapi.dingtalk.com/topapi/v2/user/get";
-
+
private final Map<String, String> whiteListMap = new HashMap<>();
-
+
private Object getDingDingAccessToken() {
-
+
// Get data from the cache
return cache.getIfPresent(ACCESS_TOKEN);
}
-
+
private void setDingDingAccessToken(String accessToken) {
// Get data from the cache
cache.put(ACCESS_TOKEN, accessToken);
}
-
+
+ @Override
@PostConstruct
public void init() throws Exception {
dingConfig = new Config();
@@ -103,13 +111,13 @@ public class DingDingService {
//registerDingDingCallBack();
//user type judge
if (!dingdingUserType.equals("userId") &&
!dingdingUserType.equals("unionId")) {
- log.error("DingDingService.userType not valid, userType:
{}",dingdingUserType);
+ log.error("DingDingService.userType not valid, userType: {}",
dingdingUserType);
//set default value
dingdingUserType = "userId";
}
periodicRefreshWhiteList();
}
-
+
//2m auto refresh white list
private void periodicRefreshWhiteList() {
new ScheduledThreadPoolExecutor(1).scheduleWithFixedDelay(() -> {
@@ -128,7 +136,7 @@ public class DingDingService {
}
}, 0, 120, TimeUnit.SECONDS);
}
-
+
private String getAccessToken() {
String accessToken = (String) getDingDingAccessToken();
if (accessToken != null) {
@@ -154,30 +162,27 @@ public class DingDingService {
return null;
}
}
-
+
private void registerDingDingCallBack() {
String token = getAccessToken();
if (token == null) {
log.error("DingDingService registerDingDingCallBack token is
null");
return;
}
- com.aliyun.dingtalkcard_1_0.models.RegisterCallbackHeaders
registerCallbackHeaders =
- new
com.aliyun.dingtalkcard_1_0.models.RegisterCallbackHeaders();
+ com.aliyun.dingtalkcard_1_0.models.RegisterCallbackHeaders
registerCallbackHeaders = new
com.aliyun.dingtalkcard_1_0.models.RegisterCallbackHeaders();
registerCallbackHeaders.setXAcsDingtalkAccessToken(token);
-
- com.aliyun.dingtalkcard_1_0.models.RegisterCallbackRequest
registerCallbackRequest =
- new
com.aliyun.dingtalkcard_1_0.models.RegisterCallbackRequest()
- .setCallbackRouteKey("hera-route-key")
- .setCallbackUrl(callbackUrl);
+
+ com.aliyun.dingtalkcard_1_0.models.RegisterCallbackRequest
registerCallbackRequest = new
com.aliyun.dingtalkcard_1_0.models.RegisterCallbackRequest().setCallbackRouteKey(
+ "hera-route-key").setCallbackUrl(callbackUrl);
try {
- RegisterCallbackResponse registerDingDingCallbackResponse =
dingCardClient.
- registerCallbackWithOptions(registerCallbackRequest,
registerCallbackHeaders, new RuntimeOptions());
+ RegisterCallbackResponse registerDingDingCallbackResponse =
dingCardClient.registerCallbackWithOptions(
+ registerCallbackRequest, registerCallbackHeaders, new
RuntimeOptions());
log.info("registerDingDingCallbackResponse:{}",
registerDingDingCallbackResponse);
} catch (Exception e) {
log.error("DingDingService registerDingDingCallBack err:{}", e);
}
}
-
+ @Override
public void sendDingDing(String content, String[] unionIds, String
cardBizId) {
log.info("sendDingDing param content: {}, unionIds: {}, cardBizId:
{}", content, unionIds, cardBizId);
String token = getAccessToken();
@@ -197,17 +202,11 @@ public class DingDingService {
}
SendRobotInteractiveCardHeaders sendRobotInteractiveCardHeaders =
new SendRobotInteractiveCardHeaders();
sendRobotInteractiveCardHeaders.setXAcsDingtalkAccessToken(token);
-
SendRobotInteractiveCardRequest.SendRobotInteractiveCardRequestSendOptions
sendOptions =
- new
SendRobotInteractiveCardRequest.SendRobotInteractiveCardRequestSendOptions();
- SendRobotInteractiveCardRequest sendRobotInteractiveCardRequest =
new SendRobotInteractiveCardRequest()
- .setCardTemplateId("StandardCard")
- .setSingleChatReceiver("{\""+ dingdingUserType +"\":\"" +
uid + "\"}")
- .setCardBizId(cardBizId)
- .setRobotCode(robotCode)
- .setCardData(content)
- .setSendOptions(sendOptions)
- .setPullStrategy(false)
- .setCallbackUrl(callbackUrl);
+
SendRobotInteractiveCardRequest.SendRobotInteractiveCardRequestSendOptions
sendOptions = new
SendRobotInteractiveCardRequest.SendRobotInteractiveCardRequestSendOptions();
+ SendRobotInteractiveCardRequest sendRobotInteractiveCardRequest =
new SendRobotInteractiveCardRequest().setCardTemplateId(
+ "StandardCard").setSingleChatReceiver("{\"" +
dingdingUserType + "\":\"" + uid + "\"}")
+
.setCardBizId(cardBizId).setRobotCode(robotCode).setCardData(content).setSendOptions(sendOptions)
+ .setPullStrategy(false).setCallbackUrl(callbackUrl);
try {
dingClient.sendRobotInteractiveCardWithOptions(sendRobotInteractiveCardRequest,
sendRobotInteractiveCardHeaders, new RuntimeOptions());
@@ -216,7 +215,7 @@ public class DingDingService {
}
}
}
-
+ @Override
public void updateDingDingCard(String content, String cardBizId) {
String token = getAccessToken();
if (token == null) {
@@ -224,16 +223,13 @@ public class DingDingService {
return;
}
log.info("DingDingService updateDingDingCard token:{}", token);
-
+
UpdateRobotInteractiveCardHeaders updateRobotInteractiveCardHeaders =
new UpdateRobotInteractiveCardHeaders();
updateRobotInteractiveCardHeaders.setXAcsDingtalkAccessToken(token);
-
UpdateRobotInteractiveCardRequest.UpdateRobotInteractiveCardRequestUpdateOptions
updateOptions =
- new
UpdateRobotInteractiveCardRequest.UpdateRobotInteractiveCardRequestUpdateOptions()
- .setUpdateCardDataByKey(false)
- .setUpdatePrivateDataByKey(false);
- UpdateRobotInteractiveCardRequest updateRobotInteractiveCardRequest =
new UpdateRobotInteractiveCardRequest()
- .setCardBizId(cardBizId)
- .setCardData(content)
+
UpdateRobotInteractiveCardRequest.UpdateRobotInteractiveCardRequestUpdateOptions
updateOptions = new
UpdateRobotInteractiveCardRequest.UpdateRobotInteractiveCardRequestUpdateOptions().setUpdateCardDataByKey(
+ false).setUpdatePrivateDataByKey(false);
+ UpdateRobotInteractiveCardRequest updateRobotInteractiveCardRequest =
new UpdateRobotInteractiveCardRequest().setCardBizId(
+ cardBizId).setCardData(content)
//.setUserIdPrivateDataMap("{\"userId0001\":{\"xxxx\":\"xxxx\"}}")
//
.setUnionIdPrivateDataMap("{\"unionId0001\":{\"xxxx\":\"xxxx\"}}")
.setUpdateOptions(updateOptions);
@@ -244,16 +240,16 @@ public class DingDingService {
if (!com.aliyun.teautil.Common.empty(err.code) &&
!com.aliyun.teautil.Common.empty(err.message)) {
log.error("DingDingService updateDingDingCard
TeaException:{}", err);
}
-
+
} catch (Exception _err) {
TeaException err = new TeaException(_err.getMessage(), _err);
if (!com.aliyun.teautil.Common.empty(err.code) &&
!com.aliyun.teautil.Common.empty(err.message)) {
log.error("DingDingService updateDingDingCard err:{}", err);
}
}
-
+
}
-
+ @Override
public String getNameByUserId(String userId) {
return "unKnown";
/*String token = getAccessToken();
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/FeishuService.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/FeishuServiceImpl.java
similarity index 92%
copy from
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/FeishuService.java
copy to
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/FeishuServiceImpl.java
index 6aff1538..a99c0f33 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/FeishuService.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/FeishuServiceImpl.java
@@ -13,11 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.xiaomi.youpin.prometheus.agent.service;
+package com.xiaomi.youpin.prometheus.agent.service.impl;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.google.gson.Gson;
import com.xiaomi.youpin.feishu.FeiShu;
+import com.xiaomi.youpin.prometheus.agent.service.FeishuService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@@ -26,7 +27,7 @@ import javax.annotation.PostConstruct;
@Service
@Slf4j
-public class FeishuService {
+public class FeishuServiceImpl implements FeishuService {
private FeiShu feiShu;
@@ -43,10 +44,11 @@ public class FeishuService {
feiShu = new FeiShu(appId, appSecret);
}
+ @Override
public void sendFeishu(String content, String[] receivers, String[]
feishuGroups) {
sendFeishu(content, receivers, feishuGroups, false);
}
-
+ @Override
public void sendFeishu(String content, String[] receivers, String[]
feishuGroups, boolean sendCard) {
if (StringUtils.isEmpty(content)) {
return;
@@ -80,7 +82,7 @@ public class FeishuService {
log.error(e.toString());
}
}
-
+ @Override
public String getUserIdByEmail(String email) {
return feiShu.getUserIdByEmail(email);
}
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/InitService.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/InitServiceImpl.java
similarity index 80%
copy from
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/InitService.java
copy to
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/InitServiceImpl.java
index 63bc45aa..a7d50708 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/InitService.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/InitServiceImpl.java
@@ -13,50 +13,53 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.xiaomi.youpin.prometheus.agent.service;
+package com.xiaomi.youpin.prometheus.agent.service.impl;
+
+import com.xiaomi.data.push.nacos.NacosNaming;
+import com.xiaomi.youpin.prometheus.agent.service.InitService;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.NetUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
-import com.xiaomi.data.push.nacos.NacosNaming;
import javax.annotation.PostConstruct;
@Service
@Slf4j
-public class InitService {
-
-
+public class InitServiceImpl implements InitService {
+
+
@Autowired
private NacosNaming nacosNaming;
-
+
@Value("${server.port}")
private String httpPort;
-
+
@Value("${dubbo.group}")
private String group;
-
+
@Value("${app.name}")
private String appName;
-
+
+ @Override
@PostConstruct
public void init() {
String host = System.getenv("host.ip") == null ?
NetUtils.getLocalHost() : System.getenv("host.ip");
final String port = httpPort;
try {
nacosNaming.registerInstance(appName, host, Integer.valueOf(port),
group);
-
- Runtime.getRuntime().addShutdownHook(new Thread(()->{
+
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> {
try {
nacosNaming.deregisterInstance(appName, host,
Integer.valueOf(port), group);
} catch (Exception e) {
- log.error("nacos init service : ",e);
+ log.error("nacos init service : ", e);
}
}));
} catch (Exception e) {
- log.error("nacos init service : ",e);
+ log.error("nacos init service : ", e);
}
}
}
\ No newline at end of file
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/MioneMachineServiceImpl.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/MioneMachineServiceImpl.java
index 80cf4529..6ef1d68e 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/MioneMachineServiceImpl.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/MioneMachineServiceImpl.java
@@ -13,24 +13,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.xiaomi.youpin.prometheus.agent.service.impl;
import com.xiaomi.youpin.prometheus.agent.domain.Ips;
+import com.xiaomi.youpin.prometheus.agent.service.MioneMachineService;
import
com.xiaomi.youpin.prometheus.agent.service.api.MioneMachineServiceExtension;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
-/**
- * @author zhangxiaowei6
- */
+
@Slf4j
@Service
-@ConditionalOnProperty(name = "service.selector.property", havingValue =
"outer")
-public class MioneMachineServiceImpl implements MioneMachineServiceExtension {
- @Override
+public class MioneMachineServiceImpl implements MioneMachineService {
+
+ @Autowired
+ private MioneMachineServiceExtension mioneMachineServiceExtension;
+
public List<Ips> queryMachineList(String type) {
- return null;
+
+ return mioneMachineServiceExtension.queryMachineList(type);
}
}
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusAlertImpl.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusAlertServiceImpl.java
similarity index 97%
rename from
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusAlertImpl.java
rename to
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusAlertServiceImpl.java
index 4a1e7c3b..5af37d32 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusAlertImpl.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusAlertServiceImpl.java
@@ -26,7 +26,7 @@ import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;
@Service(timeout = 5000, group = "${dubbo.group}")
-public class PrometheusAlertImpl implements PrometheusAlertService {
+public class PrometheusAlertServiceImpl implements PrometheusAlertService {
@Autowired
RuleAlertService ruleAlertService;
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusIpServiceImpl.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusIpServiceImpl.java
index 43a7e042..2b981e74 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusIpServiceImpl.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusIpServiceImpl.java
@@ -13,381 +13,88 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.xiaomi.youpin.prometheus.agent.service.impl;
import com.alibaba.nacos.api.config.annotation.NacosValue;
-import com.alibaba.nacos.api.exception.NacosException;
-import com.alibaba.nacos.api.naming.pojo.Instance;
-import com.alibaba.nacos.api.naming.pojo.ListView;
-import com.google.common.base.Stopwatch;
import com.google.gson.Gson;
-import com.xiaomi.data.push.nacos.NacosNaming;
+import com.xiaomi.data.push.client.HttpClientV2;
import com.xiaomi.youpin.prometheus.agent.domain.Ips;
+import com.xiaomi.youpin.prometheus.agent.service.PrometheusIpService;
import
com.xiaomi.youpin.prometheus.agent.service.api.PrometheusIpServiceExtension;
-import io.fabric8.kubernetes.api.model.Node;
-import io.fabric8.kubernetes.api.model.NodeAddress;
-import io.fabric8.kubernetes.api.model.NodeList;
-import io.fabric8.kubernetes.client.DefaultKubernetesClient;
-import io.fabric8.kubernetes.client.KubernetesClient;
+import com.xiaomi.youpin.prometheus.agent.service.dto.heraApp.GetAllPodIpRes;
import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
-import javax.annotation.PostConstruct;
-import java.io.*;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.ReentrantLock;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
@Slf4j
@Service
-@ConditionalOnProperty(name = "service.selector.property", havingValue =
"outer")
-public class PrometheusIpServiceImpl implements PrometheusIpServiceExtension {
+public class PrometheusIpServiceImpl implements PrometheusIpService {
+
@Autowired
- private NacosNaming nacosNaming;
-
- private static ConcurrentHashMap<String, Set<String>> appIpsCache = new
ConcurrentHashMap<>();
-
- public static final int PAGINATION_SIZE = 200;
-
- public static final String PROMETHEUS_PORT = "prometheus_port";
-
- public static final String JAVAAGENT_PROMETHEUS_PORT =
"javaagent_prometheus_port";
-
- public static final String JAEGERQUERY_PROMETHEUS_PORT =
"jaegerQuery_port";
-
- public static final String MONESTARTER_PROMETHEUS_PORT =
"monestarter_prometheus_port";
-
- public static final String APPLICATION = "application";
-
- public static final String[] TESLA_FLAG = new String[]{""};
-
- public static final String ST_K8S_NODE = "http://localhost";
-
- public static final String ONLINE_K8S_NODE = "http://localhost";
-
- public static final String CUSTOM_JOB_PREFIX = "prometheus_custom_server_";
-
- public static final String CUSTOM_JOB_PORT_KEY = "ozhera_prometheus_port";
-
- private final Gson gson = new Gson();
-
- private List<Ips> starterIpsList = new ArrayList<>();
- private List<Ips> javaagentIpsList = new ArrayList<>();
- private List<Ips> jaegerqueryIpsList = new ArrayList<>();
- private List<Ips> monequeryIpsList = new ArrayList<>();
-
- @Value("${server.type}")
- private String serverType;
-
- @NacosValue(value = "${mione.k8s.node.port}", autoRefreshed = true)
- private String machinePort;
-
- @NacosValue(value = "${mione.k8s.container.port}", autoRefreshed = true)
- private String containerPort;
-
- @NacosValue(value = "${jaeger_query_token}")
- private String jaegerQueryToken;
-
- private ReentrantLock lock = new ReentrantLock();
-
- @PostConstruct
- 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);
- }
-
- private Set<String> getAllServiceNames() {
-
- final Set<String> serviceNames = new LinkedHashSet<>();
-
- int pageIndex = 1;
- ListView<String> listView = nacosNaming.getServicesOfServer(pageIndex,
PAGINATION_SIZE);
- // First page data
- List<String> firstPageData = listView.getData();
- // Append first page into list
- serviceNames.addAll(firstPageData);
- // the total count
- int count = listView.getCount();
- // the number of pages
- int pageNumbers = count / PAGINATION_SIZE;
- int remainder = count % PAGINATION_SIZE;
- // remain
- if (remainder > 0) {
- pageNumbers += 1;
- }
- // If more than 1 page
- while (pageIndex < pageNumbers) {
- listView = nacosNaming.getServicesOfServer(++pageIndex,
PAGINATION_SIZE);
- serviceNames.addAll(listView.getData());
- }
-
- return serviceNames;
- }
-
+ private PrometheusIpServiceExtension prometheusIpServiceExtension;
+
+ @NacosValue(value = "${hera.app.addr}", autoRefreshed = true)
+ private String heraAppAddr;
+
+ @NacosValue(value = "${golang.runtime.default.port}", autoRefreshed = true)
+ private String goRuntimePort;
+
+ private static final Gson gson = new Gson();
+
@Override
public List<Ips> getByType(String type) {
- if (StringUtils.isEmpty(type)) {
- log.info("获取ip列表时, type : " + type + " 为空");
- List<Ips> defaultResult = new ArrayList<>();
- Ips ips = new Ips();
- ips.setTargets(new ArrayList<>());
- defaultResult.add(ips);
- return defaultResult;
- }
- // type 1:customized metrics 2:javaagent jvm metrics 3:jaegerquery
- if ("1".equals(type)) {
- return starterIpsList;
- } else if ("2".equals(type)) {
- return javaagentIpsList;
- } else if ("3".equals(type)) {
- return jaegerqueryIpsList;
- } else if ("4".equals(type)) {
- return monequeryIpsList;
- } else {
- log.info("Obtain the ip address list, type : " + type + "
illegality");
- List<Ips> defaultResult = new ArrayList<>();
- Ips ips = new Ips();
- ips.setTargets(new ArrayList<>());
- defaultResult.add(ips);
- return defaultResult;
- }
+ return prometheusIpServiceExtension.getByType(type);
}
-
+
@Override
public Set<String> getIpsByAppName(String name) {
- return appIpsCache.getOrDefault(name, new HashSet<>());
- }
-
- private String[] getEtcd() {
- return null;
+ return prometheusIpServiceExtension.getIpsByAppName(name);
}
-
+
@Override
public Set<String> getEtcdHosts() {
- return null;
+ return prometheusIpServiceExtension.getEtcdHosts();
}
-
-
+
@Override
public List<Ips> getK8sNodeIp(String type) {
-
- List<String> res = new ArrayList<>();
- /* V1NodeList nodes;
- try {
- ApiClient client = getClient();
- if (client == null) {
- return null;
- }
- nodes = new CoreV1Api(client).listNode(null, null, null, null,
null, null, null, null, null);
- } catch (ApiException e) {
- log.error(e.getResponseBody());
- return null;
- }
- nodes.getItems().forEach(it -> {
- String info = it.getMetadata().getName();
- for (V1NodeAddress n : it.getStatus().getAddresses()) {
- if ("ExternalIP".equals(n.getType())) {
- info = n.getAddress();
- } else if ("InternalIP".equals(n.getType())) {
- info = n.getAddress();
- }
- }
- res.add(info);
- });*/
- try (KubernetesClient client = new DefaultKubernetesClient()) {
- // get Node list
- NodeList nodeList = client.nodes().list();
- for (Node node : nodeList.getItems()) {
- // fetch Node adress list
- for (NodeAddress address : node.getStatus().getAddresses()) {
- res.add(address.getAddress());
- }
- }
- } catch (Exception e) {
- log.error("getK8sNodeIp error:{}",e.getMessage());
- }
- log.info("getK8sNodeIp k8s node count:{}",res.size());
- List<String> result = new ArrayList<>();
- String port = "";
- if (type.equals("node")) {
- port = machinePort;
- } else if (type.equals("container")) {
- port = containerPort;
- } else {
- return null;
- }
- String finalPort = port;
- res.forEach(
- item -> {
- result.add(item + ":" + finalPort);
- });
- List<Ips> defaultResult = new ArrayList<>();
- Ips ips2 = new Ips();
- ips2.setTargets(result);
- defaultResult.add(ips2);
- return defaultResult;
+ return prometheusIpServiceExtension.getK8sNodeIp(type);
}
-
-
- private String innerRequest(String data, String url, String apiKey, String
method) {
+
+ @Override
+ public List<Ips> getHeraAppPodIp() {
+ log.info("getHeraAppPodIp begin heraAppAddr:{},goRuntimePort: {}",
heraAppAddr, goRuntimePort);
+ List<Ips> res = new ArrayList<>();
+ String url = heraAppAddr + "/hera/app/env/non/probe/ips";
+ log.info("getHeraAppPodIp url:{}", url);
+ Map<String, String> headers = new HashMap(1);
+ headers.put("Content-Type", "application/json; charset=utf-8");
try {
- URL requestUrl = new URL(url);
- HttpURLConnection conn = (HttpURLConnection)
requestUrl.openConnection();
- PrintWriter out = null;
- // set the parameters of the URLConnection and the normal request
properties
- conn.setRequestProperty("Expect", "");
- conn.setRequestProperty("Accept", "application/json");
- conn.setRequestProperty("Content-Type", "application/json;
charset=utf-8");
- if (StringUtils.isNotBlank(apiKey)) {
- conn.setRequestProperty("Authorization", "Bearer " + apiKey);
+ String heraAppRes = HttpClientV2.get(url, headers, 10000);
+ GetAllPodIpRes getAllPodIpRes = gson.fromJson(heraAppRes,
GetAllPodIpRes.class);
+ log.info("getHeraAppPodIp heraAppRes : {} ", heraAppRes);
+ if (getAllPodIpRes == null || getAllPodIpRes.getCode() != 0) {
+ return res;
}
- conn.setDoOutput(true);
- conn.setDoInput(true);
- conn.setRequestMethod(method);
- conn.connect();
- if ("POST".equals(method)) {
- // POST request
- BufferedWriter out1 = new BufferedWriter(new
OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
- out1.write(data);
- out1.flush();
- out1.close();
- }
- InputStream is = conn.getInputStream();
- BufferedReader br = new BufferedReader(new InputStreamReader(is));
- String finalStr = "";
- String str = "";
- while ((str = br.readLine()) != null) {
- finalStr = new String(str.getBytes(), "UTF-8");
- }
- is.close();
- conn.disconnect();
- log.info("innerRequest param url:{},apiKey:{},method:{}", url,
apiKey, method);
- return finalStr;
- } catch (IOException e) {
- e.printStackTrace();
- return e.getMessage();
+ Ips ips = new Ips();
+ List<String> ipStr = new ArrayList<>();
+ getAllPodIpRes.getData().forEach(it -> {
+ ipStr.add(it + ":" + goRuntimePort);
+ });
+ ips.setTargets(ipStr);
+ res.add(ips);
+ return res;
+ } catch (Exception e) {
+ log.error("getHeraAppPodIp error:{}", e);
+ return res;
}
}
-
-/* private ApiClient getClient() {
- lock.lock();
- try {
- return Config.defaultClient();
- } catch (IOException e) {
- log.error("getClient error : {}",e.getMessage());
- return null;
- } finally {
- lock.unlock();
- }
- }*/
-
+
}
diff --git
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/PrometheusVmService.java
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusVmServiceImpl.java
similarity index 92%
copy from
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/PrometheusVmService.java
copy to
ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusVmServiceImpl.java
index 20638fcf..c50d1e64 100644
---
a/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/PrometheusVmService.java
+++
b/ozhera-prometheus-agent/ozhera-prometheus-agent-service/src/main/java/com/xiaomi/youpin/prometheus/agent/service/impl/PrometheusVmServiceImpl.java
@@ -13,10 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.xiaomi.youpin.prometheus.agent.service;
+
+package com.xiaomi.youpin.prometheus.agent.service.impl;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.xiaomi.youpin.prometheus.agent.domain.Ips;
+import com.xiaomi.youpin.prometheus.agent.service.PrometheusVmService;
import io.fabric8.kubernetes.api.model.PodList;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClient;
@@ -34,23 +36,24 @@ import java.util.Set;
*/
@Slf4j
@Service
-public class PrometheusVmService {
-
+public class PrometheusVmServiceImpl implements PrometheusVmService {
+
@NacosValue(value = "${vm.agent.port}", autoRefreshed = true)
private String vmAgentPort;
-
+
@NacosValue(value = "${vm.Alert.Port}", autoRefreshed = true)
private String vmAlertPort;
-
+
@NacosValue(value = "${vm.Insert.Port}", autoRefreshed = true)
private String vmInsertPort;
-
+
@NacosValue(value = "${vm.Select.Port}", autoRefreshed = true)
private String vmSelectPort;
-
+
@NacosValue(value = "${vm.Storage.Port}", autoRefreshed = true)
private String vmStoragePort;
-
+
+ @Override
public List<Ips> getVMClusterIp(String name) {
String port = "";
switch (name) {
@@ -77,7 +80,7 @@ public class PrometheusVmService {
Set<String> podNameSet = new HashSet<>();
try (KubernetesClient client = new DefaultKubernetesClient()) {
String labelName = "app";
-
+
// get Pod name
PodList podList = client.pods().withLabel(labelName, name).list();
String finalPort = port;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]