Search in sources :

Example 1 with MonitorFailEvent

use of org.apache.servicecomb.huaweicloud.dashboard.monitor.event.MonitorFailEvent in project java-chassis by ServiceComb.

the class DefaultMonitorDataPublisher method doSend.

private void doSend(String endpoint, String jsonData, String url, IpPort host, int times) {
    clientMgr.findThreadBindClientPool().runOnContext(client -> {
        client.request(HttpMethod.POST, host.getPort(), host.getHostOrIp(), url).compose(request -> {
            request.headers().add("environment", RegistryUtils.getMicroservice().getEnvironment());
            request.setTimeout(MonitorConstant.getInterval() / MonitorConstant.MAX_RETRY_TIMES);
            try {
                SignRequest signReq = SignUtil.createSignRequest(request.getMethod().toString(), endpoint + url, new HashMap<>(), IOUtils.toInputStream(jsonData, "UTF-8"));
                SignUtil.getAuthHeaderProviders().forEach(authHeaderProvider -> {
                    request.headers().addAll(authHeaderProvider.getSignAuthHeaders(signReq));
                });
            } catch (Exception e) {
                LOGGER.error("sign request error!", e);
            }
            return request.send(jsonData).compose(rsp -> {
                if (rsp.statusCode() != HttpResponseStatus.OK.code()) {
                    addressManager.recordSuccessState(endpoint);
                    if (times < MonitorConstant.MAX_RETRY_TIMES && rsp.statusCode() == HttpResponseStatus.BAD_GATEWAY.code()) {
                        doSend(endpoint, jsonData, url, host, times + 1);
                        return Future.succeededFuture();
                    }
                    return rsp.body().compose(buffer -> {
                        LOGGER.warn("Send data to url {} failed and status line is {}", url, rsp.statusCode());
                        LOGGER.warn("message: {}", buffer);
                        return Future.succeededFuture();
                    });
                } else {
                    addressManager.recordSuccessState(endpoint);
                    EventManager.post(new MonitorSuccEvent());
                }
                return Future.succeededFuture();
            }).onFailure(failure -> {
                EventManager.post(new MonitorFailEvent("send monitor data fail."));
                addressManager.recordFailState(endpoint);
                LOGGER.warn("Send monitor data to {} failed , {}", endpoint, failure);
            });
        });
    });
}
Also used : Json(io.vertx.core.json.Json) RegistryUtils(org.apache.servicecomb.serviceregistry.RegistryUtils) MonitorConstant(org.apache.servicecomb.huaweicloud.dashboard.monitor.data.MonitorConstant) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) IpPort(org.apache.servicecomb.foundation.common.net.IpPort) ArrayList(java.util.ArrayList) EventManager(org.apache.servicecomb.foundation.common.event.EventManager) VertxUtils(org.apache.servicecomb.foundation.vertx.VertxUtils) SSLCustom(org.apache.servicecomb.foundation.ssl.SSLCustom) SSLOption(org.apache.servicecomb.foundation.ssl.SSLOption) VertxTLSBuilder(org.apache.servicecomb.foundation.vertx.VertxTLSBuilder) AddressResolverConfig(org.apache.servicecomb.foundation.vertx.AddressResolverConfig) SSLOptionFactory(org.apache.servicecomb.foundation.ssl.SSLOptionFactory) HttpClientOptions(io.vertx.core.http.HttpClientOptions) Deployment(org.apache.servicecomb.deployment.Deployment) SignRequest(org.apache.servicecomb.foundation.auth.SignRequest) NetUtils(org.apache.servicecomb.foundation.common.net.NetUtils) MonitorDataPublisher(org.apache.servicecomb.huaweicloud.dashboard.monitor.model.MonitorDataPublisher) ProxyOptions(io.vertx.core.net.ProxyOptions) Logger(org.slf4j.Logger) HttpClientWithContext(org.apache.servicecomb.foundation.vertx.client.http.HttpClientWithContext) MonitorFailEvent(org.apache.servicecomb.huaweicloud.dashboard.monitor.event.MonitorFailEvent) ClientVerticle(org.apache.servicecomb.foundation.vertx.client.ClientVerticle) Vertx(io.vertx.core.Vertx) MonitorSuccEvent(org.apache.servicecomb.huaweicloud.dashboard.monitor.event.MonitorSuccEvent) VertxOptions(io.vertx.core.VertxOptions) HttpResponseStatus(io.netty.handler.codec.http.HttpResponseStatus) Future(io.vertx.core.Future) MonitorDaraProvider(org.apache.servicecomb.huaweicloud.dashboard.monitor.model.MonitorDaraProvider) IOUtils(org.apache.commons.io.IOUtils) List(java.util.List) HttpClientPoolFactory(org.apache.servicecomb.foundation.vertx.client.http.HttpClientPoolFactory) ClientPoolManager(org.apache.servicecomb.foundation.vertx.client.ClientPoolManager) DeploymentOptions(io.vertx.core.DeploymentOptions) HttpMethod(io.vertx.core.http.HttpMethod) SystemBootstrapInfo(org.apache.servicecomb.deployment.SystemBootstrapInfo) MonitorSuccEvent(org.apache.servicecomb.huaweicloud.dashboard.monitor.event.MonitorSuccEvent) SignRequest(org.apache.servicecomb.foundation.auth.SignRequest) MonitorFailEvent(org.apache.servicecomb.huaweicloud.dashboard.monitor.event.MonitorFailEvent)

Aggregations

HttpResponseStatus (io.netty.handler.codec.http.HttpResponseStatus)1 DeploymentOptions (io.vertx.core.DeploymentOptions)1 Future (io.vertx.core.Future)1 Vertx (io.vertx.core.Vertx)1 VertxOptions (io.vertx.core.VertxOptions)1 HttpClientOptions (io.vertx.core.http.HttpClientOptions)1 HttpMethod (io.vertx.core.http.HttpMethod)1 Json (io.vertx.core.json.Json)1 ProxyOptions (io.vertx.core.net.ProxyOptions)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 IOUtils (org.apache.commons.io.IOUtils)1 Deployment (org.apache.servicecomb.deployment.Deployment)1 SystemBootstrapInfo (org.apache.servicecomb.deployment.SystemBootstrapInfo)1 SignRequest (org.apache.servicecomb.foundation.auth.SignRequest)1 EventManager (org.apache.servicecomb.foundation.common.event.EventManager)1 IpPort (org.apache.servicecomb.foundation.common.net.IpPort)1 NetUtils (org.apache.servicecomb.foundation.common.net.NetUtils)1 SSLCustom (org.apache.servicecomb.foundation.ssl.SSLCustom)1