Observability in Action for your Service Mesh

@kialiProject

Xavier Canal

@xeviknal

Software Engineer, Maintainer at Kiali and RedHat

@kialiProject

Agenda

  • Why Service Mesh?

  • What's a Service Mesh?

  • Demo

  • Observability recap 

Monolith to Microservices

@kialiProject

@kialiProject

public static float getBenefits() {
	return getIncome() - getOutCome();
}

Breaking the monolith IS NOT ONLY about SPLITTING EXISTING CODE into different pieces

The big difference is: NETWORK MANAGEMENT

@kialiProject

public static float getBenefits() {
    try {
      // Perform the actual operation (network usage)
      return getIncome() - getOutCome();
    } catch (TimeOutException toe) {
        if (retries < MAX_RETRIES) {
            retry()
        }
    }
}

Breaking the monolith IS NOT ONLY about SPLITTING EXISTING CODE into different pieces

The big difference is: NETWORK MANAGEMENT

@kialiProject

public static float getBenefits() {
    try {
        // Add Span to Trace
        jaegerClient = new JaegerClient();
        jaegerClient.startSpan();

        // Perform the actual operation (network usage)
        return getIncome() - getOutCome();
    } catch (TimeOutException toe) {
        if (retries < MAX_RETRIES) {
            retry()
        }
    } catch (JaegerError je) {
        manageTracingExpection(je);
    } finally {
        if (jaegerClient != null) {
            jaegerClient.finishSpan();
        }
    }
}

Breaking the monolith IS NOT ONLY about SPLITTING EXISTING CODE into different pieces

The big difference is: NETWORK MANAGEMENT

@kialiProject

Breaking the monolith IS NOT ONLY about SPLITTING EXISTING CODE into different pieces

The big difference is: NETWORK MANAGEMENT

public static float getBenefits() {
    try {
        // Add Span to Trace
        jaegerClient = new JaegerClient();
        jaegerClient.startSpan();

        // Track telemetry
        telemClient = new TelemClient();
        telemClient.start();

        // Perform the actual operation (network usage)
        return getIncome() - getOutCome();

    } catch (TimeOutException toe) {
        if (retries < maxRetries) {
            retry()
        }
    } catch (JaegerError je) {
        manageTracingExpection(je);
    } catch (TelemError te) {
        manageTelemetryExpection(te);
    } finally {
        if (jaegerClient != null) {
            jaegerClient.finishSpan();
        }

        if (telemClient() != null) {
            telemClient.finish();
        }
    }
}

Microservice responsibilities

@kialiProject

Service Mesh to the rescue

@kialiProject

Service Mesh architecture

@kialiProject

Observability

 

Traffic management

 

Security

Observability tool for applications based on Istio Service Mesh

@kialiProject

How are my MICROSERVICES doing?

@kialiProject

@kialiProject

Demo time

@kialiProject

  • Metrics: Latency, Traffic, Errors, Saturation

    • Service Discovery
    • Health
    • Dashboards
    • Security Status
  • Distributed Tracing

  • Logs: Application and Proxy

Observability recap

@kialiProject

THANKS

Github: github.com/kiali/kiali

IRC: #kiali

Twitter: kialiProject

Medium: kialiProject