Skip to main content

EasyConnect

The EasyConnect is a tool that simplifies the process of instrumenting Kubernetes applications with OpenTelemetry auto-instrumentation and adding configurable log types. The EasyConnect is based on the easy-connect Helm chart that works in conjunction with the logzio-monitoring Helm chart.

EasyConnect comprises three principal components:

  • Kubernetes Instrumentor - Provides auto-instrumentation and manages log type control for Kubernetes applications.
  • Easy Connect Server - Facilitates communication between the user and the Kubernetes Instrumentor.
  • Easy Connect UI - Offers an intuitive graphical interface for managing and viewing your instrumentation data.

Easy Connect supports several programming languages, including:

  • Java
  • Node.js
  • Python
  • .NET

Before you start, you will need:

Opentelemetry collector installed on your cluster. The collector works out of the box with logzio-monitoring chart installed with traces and logs enabled (version 0.5.8 or higher for log_type).

note

To send data to a custom collector, change the kubernetesInstrumentor.env.monitoringServiceEndpoint value.

Install EasyConnect

To install the EasyConnect Helm chart, run the following commands:

helm repo add logzio-helm https://logzio.github.io/logzio-helm
helm repo update
helm install logzio-easy-connect logzio-helm/easy-connect -n monitoring --create-namespace

After installing, run kubectl port-forward to access the user interface in your browser:

kubectl port-forward svc/easy-connect-ui -n monitoring 31032:31032

The EasyConnect UI is available at http://localhost:31032

Using EasyConnect UI

The EasyConnect UI shows a list of all workloads in your account. You can filter the worloads by name, namespace, workload type or language.

Logs

Edit the log type for a workload

If you need to change the log type for a workload:

  1. In the row of the required workload, click Edit.
  2. Click the Log Type dropdown.
  3. Select the required log type. If the required log type is not available from the selection, manually enter the log type and press Enter.
  4. Click Deploy.

Add a log type to a workload

If you need to add a log type to a workload:

  1. In the row of the required workload, click the Log Type dropdown.
  2. Enter the required log type definition.
  3. Press Enter.
  4. Click Deploy.

Traces

Add instrumentation to a workload

To add OpenTelemetry instrumentation to a workload:

  1. In the row of the required workload, click Edit.
  2. Enable the selector of Traces (Service name).
  3. Click the Select service name dropdown.
  4. Select the required service name. If the required service name is not available from the selection, manually enter the service name and press Enter.
  5. Click Deploy.

Remove instrumentation from a workload

To remove OpenTelemetry instrumentation from a workload:

  1. In the row of the required workload, click Edit.
  2. Disable the toggle switch of Traces (Service name).
note

If Opentelemetry is already integrated into your workload, EasyConnect will identify its presence and notify you, preventing any addition or removal of Opentelemetry through EasyConnect. If your workload's telemetry language is unsupported, EasyConnect will display a notification indicating that auto-instrumentation is not available.

Parameters configuration

The EasyConnect chart has several configurable parameters and their default values.

ParameterDescriptionDefault
kubernetesInstrumentor.serviceAccountService account name of the instrumentor deployment"kubernetes-instrumentor"
kubernetesInstrumentor.image.repositoryRepository of the instrumentor image"logzio/instrumentor"
kubernetesInstrumentor.image.tagTag of the instrumentor image"v1.0.5"
kubernetesInstrumentor.instrumentationDetectorImage.repositoryRepository of the instrumentation detector image"logzio/instrumentation-detector"
kubernetesInstrumentor.instrumentationDetectorImage.tagTag of the instrumentation detector image"v1.0.5"
kubernetesInstrumentor.javaAgentImage.repositoryRepository of the Java agent image"logzio/otel-agent-java"
kubernetesInstrumentor.javaAgentImage.tagTag of the Java agent image"v1.0.5"
kubernetesInstrumentor.dotnetAgentImage.repositoryRepository of the .Net agent image"logzio/otel-agent-dotnet"
kubernetesInstrumentor.dotnetAgentImage.tagTag of the .Net agent image"v1.0.5"
kubernetesInstrumentor.nodejsAgentImage.repositoryRepository of the Node.js agent image"logzio/otel-agent-nodejs"
kubernetesInstrumentor.nodejsAgentImage.tagTag of the Node.js agent image"v1.0.5"
kubernetesInstrumentor.pythonAgentImage.repositoryRepository of the Python agent image"logzio/otel-agent-python"
kubernetesInstrumentor.pythonAgentImage.tagTag of the Python agent image"v1.0.5"
kubernetesInstrumentor.ports.metricsPortMetrics port for the instrumentor8080
kubernetesInstrumentor.ports.healthProbePortHealth probe port for the instrumentor8081
kubernetesInstrumentor.resources.limits.cpuCPU limit for the instrumentor"500m"
kubernetesInstrumentor.resources.limits.memoryMemory limit for the instrumentor"128Mi"
kubernetesInstrumentor.resources.requests.cpuCPU request for the instrumentor"10m"
kubernetesInstrumentor.resources.requests.memoryMemory request for the instrumentor"64Mi"
kubernetesInstrumentor.env.monitoringServiceEndpointEndpoint of the monitoring service"logzio-monitoring-otel-collector.monitoring.svc.cluster.local"
kubernetesInstrumentor.service.nameName of the instrumentor service"kubernetes-instrumentor-service"
kubernetesInstrumentor.service.portService port for the instrumentor8080
kubernetesInstrumentor.service.targetPortTarget port for the instrumentor service8080
easyConnectServer.serviceAccountService account name of the instrumentor deployment"easy-connect-server"
easyConnectServer.image.repositoryRepository of the server image"logzio/easy-connect-server"
easyConnectServer.image.tagTag of the server image"v1.0.7"
easyConnectServer.ports.httpHTTP port for the server8080
easyConnectServer.service.nameName of the server service"easy-connect-server"
easyConnectServer.service.portService port for the server5050
easyConnectServer.service.targetPortTarget port for the server service5050
easyConnectUi.image.repositoryRepository of the UI image"logzio/easy-connect-ui"
easyConnectUi.image.tagTag of the UI image"v1.0.0"
easyConnectUi.ports.httpHTTP port for the UI31032
easyConnectUi.service.nameName of the UI service"easy-connect-ui"
easyConnectUi.service.portService port for the UI31032
easyConnectUi.service.targetPortTarget port for the UI service31032
rbac.clusterRoles...Configure the RBAC cluster rolesRefer to values.yaml
rbac.clusterRoleBindings...Configure the RBAC cluster role bindingsRefer to values.yaml

You can override the default values by creating your own values.yaml file and passing the --values or -f option to the Helm command. For example:

helm install logzio-easy-connect logzio-helm/easy-connect -n easy-connect --create-namespace --values my_values.yaml

Here, my_values.yaml is your custom configuration file.

Manual actions

The logzio-instrumetor microservice can be deployed to your cluster to discover applications, inject opentelemetry instrumentation, add log types and more. You can manually control the discovery process with annotations:

  • logz.io/traces_instrument = true - to instrument the application with OpenTelemetry
  • logz.io/traces_instrument = rollback - to delete the OpenTelemetry instrumentation
  • logz.io/service-name = <string> - to set an active service name for your OpenTelemetry instrumentation
  • logz.io/application_type = <string> - to set the log type to send to logz.io (dependent on logz.io fluentd helm chart)
  • logz.io/skip = true - to skip the application from instrumentation or app detection

Alternative images

You can find alternative to dockerhub images in public.ecr.aws/logzio/ with the same image name. For example, public.ecr.aws/logzio/instrumentor.