Search in sources :

Example 1 with StringUtil

use of org.apache.skywalking.oap.server.library.util.StringUtil in project incubator-skywalking by apache.

the class ElasticSearchBuilder method build.

@SneakyThrows
public ElasticSearch build() {
    final List<Endpoint> endpoints = this.endpoints.build().stream().filter(StringUtil::isNotBlank).map(Endpoint::parse).collect(Collectors.toList());
    final ClientFactoryBuilder factoryBuilder = ClientFactory.builder().connectTimeout(connectTimeout).idleTimeout(socketTimeout).useHttp2Preface(false).workerGroup(numHttpClientThread > 0 ? numHttpClientThread : NUM_PROC);
    if (StringUtil.isNotBlank(trustStorePath)) {
        final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        final KeyStore truststore = KeyStore.getInstance("jks");
        try (final InputStream is = Files.newInputStream(Paths.get(trustStorePath))) {
            truststore.load(is, trustStorePass.toCharArray());
        }
        trustManagerFactory.init(truststore);
        factoryBuilder.tlsCustomizer(sslContextBuilder -> sslContextBuilder.trustManager(trustManagerFactory));
    }
    final ClientFactory clientFactory = factoryBuilder.build();
    final HealthCheckedEndpointGroupBuilder endpointGroupBuilder = HealthCheckedEndpointGroup.builder(EndpointGroup.of(endpoints), "_cluster/health").protocol(protocol).useGet(true).clientFactory(clientFactory).retryInterval(healthCheckRetryInterval).withClientOptions(options -> {
        options.decorator(LoggingClient.builder().logger(log).newDecorator());
        options.decorator((delegate, ctx, req) -> {
            ctx.logBuilder().name("health-check");
            return delegate.execute(ctx, req);
        });
        return options;
    });
    if (StringUtil.isNotBlank(username) && StringUtil.isNotBlank(password)) {
        endpointGroupBuilder.auth(AuthToken.ofBasic(username, password));
    }
    final HealthCheckedEndpointGroup endpointGroup = endpointGroupBuilder.build();
    return new ElasticSearch(protocol, username, password, endpointGroup, clientFactory, healthyListener, responseTimeout);
}
Also used : HealthCheckedEndpointGroup(com.linecorp.armeria.client.endpoint.healthcheck.HealthCheckedEndpointGroup) HealthCheckedEndpointGroupBuilder(com.linecorp.armeria.client.endpoint.healthcheck.HealthCheckedEndpointGroupBuilder) Endpoint(com.linecorp.armeria.client.Endpoint) ClientFactoryBuilder(com.linecorp.armeria.client.ClientFactoryBuilder) InputStream(java.io.InputStream) TrustManagerFactory(javax.net.ssl.TrustManagerFactory) ClientFactory(com.linecorp.armeria.client.ClientFactory) StringUtil(org.apache.skywalking.oap.server.library.util.StringUtil) KeyStore(java.security.KeyStore) SneakyThrows(lombok.SneakyThrows)

Example 2 with StringUtil

use of org.apache.skywalking.oap.server.library.util.StringUtil in project incubator-skywalking by apache.

the class LogQueryService method queryLogs.

public Logs queryLogs(String serviceId, String serviceInstanceId, String endpointId, TraceScopeCondition relatedTrace, Pagination paging, Order queryOrder, final long startTB, final long endTB, final List<Tag> tags, List<String> keywordsOfContent, List<String> excludingKeywordsOfContent) throws IOException {
    PaginationUtils.Page page = PaginationUtils.INSTANCE.exchange(paging);
    if (nonNull(keywordsOfContent)) {
        keywordsOfContent = keywordsOfContent.stream().filter(StringUtil::isNotEmpty).collect(Collectors.toList());
    }
    if (nonNull(excludingKeywordsOfContent)) {
        excludingKeywordsOfContent = excludingKeywordsOfContent.stream().filter(StringUtil::isNotEmpty).collect(Collectors.toList());
    }
    Logs logs = getLogQueryDAO().queryLogs(serviceId, serviceInstanceId, endpointId, relatedTrace, queryOrder, page.getFrom(), page.getLimit(), startTB, endTB, tags, keywordsOfContent, excludingKeywordsOfContent);
    logs.getLogs().forEach(log -> {
        if (StringUtil.isNotEmpty(log.getServiceId())) {
            final IDManager.ServiceID.ServiceIDDefinition serviceIDDefinition = IDManager.ServiceID.analysisId(log.getServiceId());
            log.setServiceName(serviceIDDefinition.getName());
        }
        if (StringUtil.isNotEmpty(log.getServiceInstanceId())) {
            final IDManager.ServiceInstanceID.InstanceIDDefinition instanceIDDefinition = IDManager.ServiceInstanceID.analysisId(log.getServiceInstanceId());
            log.setServiceInstanceName(instanceIDDefinition.getName());
        }
    });
    return logs;
}
Also used : Logs(org.apache.skywalking.oap.server.core.query.type.Logs) StringUtil(org.apache.skywalking.oap.server.library.util.StringUtil)

Example 3 with StringUtil

use of org.apache.skywalking.oap.server.library.util.StringUtil in project skywalking by apache.

the class LogQueryService method queryLogs.

public Logs queryLogs(String serviceId, String serviceInstanceId, String endpointId, TraceScopeCondition relatedTrace, Pagination paging, Order queryOrder, final long startTB, final long endTB, final List<Tag> tags, List<String> keywordsOfContent, List<String> excludingKeywordsOfContent) throws IOException {
    PaginationUtils.Page page = PaginationUtils.INSTANCE.exchange(paging);
    if (nonNull(keywordsOfContent)) {
        keywordsOfContent = keywordsOfContent.stream().filter(StringUtil::isNotEmpty).collect(Collectors.toList());
    }
    if (nonNull(excludingKeywordsOfContent)) {
        excludingKeywordsOfContent = excludingKeywordsOfContent.stream().filter(StringUtil::isNotEmpty).collect(Collectors.toList());
    }
    Logs logs = getLogQueryDAO().queryLogs(serviceId, serviceInstanceId, endpointId, relatedTrace, queryOrder, page.getFrom(), page.getLimit(), startTB, endTB, tags, keywordsOfContent, excludingKeywordsOfContent);
    logs.getLogs().forEach(log -> {
        if (StringUtil.isNotEmpty(log.getServiceId())) {
            final IDManager.ServiceID.ServiceIDDefinition serviceIDDefinition = IDManager.ServiceID.analysisId(log.getServiceId());
            log.setServiceName(serviceIDDefinition.getName());
        }
        if (StringUtil.isNotEmpty(log.getServiceInstanceId())) {
            final IDManager.ServiceInstanceID.InstanceIDDefinition instanceIDDefinition = IDManager.ServiceInstanceID.analysisId(log.getServiceInstanceId());
            log.setServiceInstanceName(instanceIDDefinition.getName());
        }
    });
    return logs;
}
Also used : Logs(org.apache.skywalking.oap.server.core.query.type.Logs) StringUtil(org.apache.skywalking.oap.server.library.util.StringUtil)

Example 4 with StringUtil

use of org.apache.skywalking.oap.server.library.util.StringUtil in project skywalking by apache.

the class ElasticSearchBuilder method build.

@SneakyThrows
public ElasticSearch build() {
    final List<Endpoint> endpoints = this.endpoints.build().stream().filter(StringUtil::isNotBlank).map(Endpoint::parse).collect(Collectors.toList());
    final ClientFactoryBuilder factoryBuilder = ClientFactory.builder().connectTimeout(connectTimeout).idleTimeout(socketTimeout).useHttp2Preface(false).workerGroup(numHttpClientThread > 0 ? numHttpClientThread : NUM_PROC);
    if (StringUtil.isNotBlank(trustStorePath)) {
        final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        final KeyStore truststore = KeyStore.getInstance("jks");
        try (final InputStream is = Files.newInputStream(Paths.get(trustStorePath))) {
            truststore.load(is, trustStorePass.toCharArray());
        }
        trustManagerFactory.init(truststore);
        factoryBuilder.tlsCustomizer(sslContextBuilder -> sslContextBuilder.trustManager(trustManagerFactory));
    }
    final ClientFactory clientFactory = factoryBuilder.build();
    final HealthCheckedEndpointGroupBuilder endpointGroupBuilder = HealthCheckedEndpointGroup.builder(EndpointGroup.of(endpoints), "_cluster/health").protocol(protocol).useGet(true).clientFactory(clientFactory).retryInterval(healthCheckRetryInterval).withClientOptions(options -> {
        options.decorator(LoggingClient.builder().logger(log).newDecorator());
        options.decorator((delegate, ctx, req) -> {
            ctx.logBuilder().name("health-check");
            return delegate.execute(ctx, req);
        });
        return options;
    });
    if (StringUtil.isNotBlank(username) && StringUtil.isNotBlank(password)) {
        endpointGroupBuilder.auth(AuthToken.ofBasic(username, password));
    }
    final HealthCheckedEndpointGroup endpointGroup = endpointGroupBuilder.build();
    return new ElasticSearch(protocol, username, password, endpointGroup, clientFactory, healthyListener, responseTimeout);
}
Also used : HealthCheckedEndpointGroup(com.linecorp.armeria.client.endpoint.healthcheck.HealthCheckedEndpointGroup) HealthCheckedEndpointGroupBuilder(com.linecorp.armeria.client.endpoint.healthcheck.HealthCheckedEndpointGroupBuilder) Endpoint(com.linecorp.armeria.client.Endpoint) ClientFactoryBuilder(com.linecorp.armeria.client.ClientFactoryBuilder) InputStream(java.io.InputStream) TrustManagerFactory(javax.net.ssl.TrustManagerFactory) ClientFactory(com.linecorp.armeria.client.ClientFactory) StringUtil(org.apache.skywalking.oap.server.library.util.StringUtil) KeyStore(java.security.KeyStore) SneakyThrows(lombok.SneakyThrows)

Example 5 with StringUtil

use of org.apache.skywalking.oap.server.library.util.StringUtil in project skywalking by apache.

the class OndemandLogQuery method ondemandPodLogs.

public Logs ondemandPodLogs(final String namespace, final String podName, final OndemandLogQueryCondition condition) throws IOException {
    if (Strings.isNullOrEmpty(namespace) || Strings.isNullOrEmpty(podName)) {
        return new Logs().setErrorReason("namespace and podName can't be null or empty");
    }
    try {
        final V1Pod pod = kApi().readNamespacedPod(podName, namespace, null);
        final V1ObjectMeta podMetadata = pod.getMetadata();
        if (isNull(podMetadata)) {
            return new Logs().setErrorReason("No pod metadata can be found");
        }
        final V1PodSpec spec = pod.getSpec();
        if (isNull(spec)) {
            return new Logs().setErrorReason("No pod spec can be found");
        }
        final Duration duration = new Duration();
        duration.setStart(condition.getDuration().getStart());
        duration.setEnd(condition.getDuration().getEnd());
        duration.setStep(condition.getDuration().getStep());
        final long since = duration.getStartTimestamp() / 1000;
        final String container = condition.getContainer();
        final String podLog = kApi().readNamespacedPodLog(podMetadata.getName(), podMetadata.getNamespace(), container, false, null, null, null, null, (int) since, null, true);
        final List<InternalLog> logs = Splitter.on("\n").omitEmptyStrings().splitToList(Strings.nullToEmpty(podLog)).stream().filter(StringUtil::isNotBlank).map(it -> InternalLog.builder().line(it).container(container).build()).collect(Collectors.toList());
        final List<Log> filtered = filter(condition, logs);
        final List<Log> limited = filtered.stream().limit(10000).collect(Collectors.toList());
        final Logs result = new Logs();
        result.getLogs().addAll(limited);
        return result;
    } catch (ApiException e) {
        log.error("Failed to fetch logs from Kubernetes, {}", e.getResponseBody(), e);
        if (!Strings.isNullOrEmpty(e.getResponseBody())) {
            Map<String, Object> responseBody = gson.fromJson(e.getResponseBody(), responseType);
            String message = responseBody.getOrDefault("message", e.getCode()).toString();
            return new Logs().setErrorReason(message);
        }
        return new Logs().setErrorReason(e.getMessage() + ": " + e.getCode());
    }
}
Also used : RequiredArgsConstructor(lombok.RequiredArgsConstructor) TypeToken(com.google.common.reflect.TypeToken) PropertyUtil(org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic.PropertyUtil) Duration(org.apache.skywalking.oap.server.core.query.input.Duration) Strings(com.google.common.base.Strings) ApiException(io.kubernetes.client.openapi.ApiException) Configuration(io.kubernetes.client.openapi.Configuration) Gson(com.google.gson.Gson) Map(java.util.Map) OndemandLogQueryCondition(org.apache.skywalking.oap.query.graphql.type.OndemandLogQueryCondition) V1ObjectMeta(io.kubernetes.client.openapi.models.V1ObjectMeta) Attribute(org.apache.skywalking.oap.server.core.query.type.Attribute) Objects.isNull(java.util.Objects.isNull) Comparator.comparing(java.util.Comparator.comparing) StringUtil(org.apache.skywalking.oap.server.library.util.StringUtil) V1Container(io.kubernetes.client.openapi.models.V1Container) Splitter(com.google.common.base.Splitter) InternalLog(org.apache.skywalking.oap.query.graphql.type.InternalLog) OndemandContainergQueryCondition(org.apache.skywalking.oap.query.graphql.type.OndemandContainergQueryCondition) Log(org.apache.skywalking.oap.server.core.query.type.Log) ServiceInstance(org.apache.skywalking.oap.server.core.query.type.ServiceInstance) IOException(java.io.IOException) CoreV1Api(io.kubernetes.client.openapi.apis.CoreV1Api) Collectors(java.util.stream.Collectors) GraphQLQueryResolver(graphql.kickstart.tools.GraphQLQueryResolver) Config(io.kubernetes.client.util.Config) LogAdapter(org.apache.skywalking.oap.query.graphql.type.LogAdapter) V1PodSpec(io.kubernetes.client.openapi.models.V1PodSpec) List(java.util.List) Slf4j(lombok.extern.slf4j.Slf4j) Type(java.lang.reflect.Type) Predicate(com.google.common.base.Predicate) PodContainers(org.apache.skywalking.oap.query.graphql.type.PodContainers) Logs(org.apache.skywalking.oap.server.core.query.type.Logs) Objects.nonNull(java.util.Objects.nonNull) Collections(java.util.Collections) V1Pod(io.kubernetes.client.openapi.models.V1Pod) InternalLog(org.apache.skywalking.oap.query.graphql.type.InternalLog) InternalLog(org.apache.skywalking.oap.query.graphql.type.InternalLog) Log(org.apache.skywalking.oap.server.core.query.type.Log) V1ObjectMeta(io.kubernetes.client.openapi.models.V1ObjectMeta) Duration(org.apache.skywalking.oap.server.core.query.input.Duration) Logs(org.apache.skywalking.oap.server.core.query.type.Logs) V1Pod(io.kubernetes.client.openapi.models.V1Pod) StringUtil(org.apache.skywalking.oap.server.library.util.StringUtil) Map(java.util.Map) V1PodSpec(io.kubernetes.client.openapi.models.V1PodSpec) ApiException(io.kubernetes.client.openapi.ApiException)

Aggregations

StringUtil (org.apache.skywalking.oap.server.library.util.StringUtil)6 Logs (org.apache.skywalking.oap.server.core.query.type.Logs)4 Predicate (com.google.common.base.Predicate)2 Splitter (com.google.common.base.Splitter)2 Strings (com.google.common.base.Strings)2 TypeToken (com.google.common.reflect.TypeToken)2 Gson (com.google.gson.Gson)2 ClientFactory (com.linecorp.armeria.client.ClientFactory)2 ClientFactoryBuilder (com.linecorp.armeria.client.ClientFactoryBuilder)2 Endpoint (com.linecorp.armeria.client.Endpoint)2 HealthCheckedEndpointGroup (com.linecorp.armeria.client.endpoint.healthcheck.HealthCheckedEndpointGroup)2 GraphQLQueryResolver (graphql.kickstart.tools.GraphQLQueryResolver)2 ApiException (io.kubernetes.client.openapi.ApiException)2 Configuration (io.kubernetes.client.openapi.Configuration)2 CoreV1Api (io.kubernetes.client.openapi.apis.CoreV1Api)2 V1Container (io.kubernetes.client.openapi.models.V1Container)2 V1ObjectMeta (io.kubernetes.client.openapi.models.V1ObjectMeta)2 V1Pod (io.kubernetes.client.openapi.models.V1Pod)2 V1PodSpec (io.kubernetes.client.openapi.models.V1PodSpec)2 Config (io.kubernetes.client.util.Config)2