> For the complete documentation index, see [llms.txt](https://cocktailcloud.gitbook.io/cocktail-cloud-online-en/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cocktailcloud.gitbook.io/cocktail-cloud-online-en/log-service/application-logs/application-logging/automatic-instrumentation-of-container-logs/python.md).

# Python

### 1) CRD installation

You can create one by searching for Infrastructure - Custom Resources - '**instrumentations**'.

<figure><img src="/files/MddA1LFHetRK4arQGHJL" alt=""><figcaption></figcaption></figure>

You can create it by clicking the Create button, selecting the namespace where you want to collect logs, and modifying the form below.

<figure><img src="/files/oMYTJwZBtDl3Q2V3xrKW" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The above CRD is applied on a namespace basis, and automatic container logs can be collected for other languages ​​in the same namespace.
{% endhint %}

```yaml
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: {Instrumentation name}
spec:
  exporter:
    endpoint: {log-agent Service address}:4318
  python:
    image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:0.44b0
    env:
      - name: OTEL_LOGS_EXPORTER
        value: otlp_proto_http
      - name: OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
        value: {log-agent Service address}:4318/v1/logs
      - name: OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED
        value: 'true'
        
      # Used when you want to collect all Java applications for which the anotation value of the namespace is 'true'.
      - name: OTEL_EXPORTER_OTLP_LOGS_HEADERS
        value: app_token={Application Token},app_name={Application Name}
```

**`log-agent Service Address`** : Infrastructure - Cluster - Add-ons - Click 'log-agent' and check the service name.

( http port = 4318 , grpc port = 4317)

<figure><img src="/files/ozS9FJHxXL2gD2HFBVIS" alt=""><figcaption></figcaption></figure>

## 2) Add annotations to the applications you want to collect

Add annotations to the workloads in the namespace for which you want to collect logs.

Application - Service Map - Service Map to collect logs - Workload - Select the application to collect logs - Click the "Settings" button.

Change the Yaml view and add the following annotations to the template - metadata - annotations section.

<figure><img src="/files/wKf51O6qNZrJ8i276zim" alt=""><figcaption></figcaption></figure>

```yaml
instrumentation.opentelemetry.io/inject-python: 'true'
```

## 3) Add service name and token value to environment variables.

<figure><img src="/files/YPX6re1f6LhKjkcxSXEE" alt=""><figcaption></figcaption></figure>

```yaml
apiVersion: apps/v1
kind: Deployment
...
spec:
...
  template:
    spec:
      containers:
      - env:

	# Application name
	- name: OTEL_SERVICE_NAME
          value: {Application name}
        
        # Settings for authentication
        - name: OTEL_EXPORTER_OTLP_LOGS_HEADERS
          value: app_token={Application token},app_name={application name}     
        
        image: {python-application image}
        imagePullPolicy: Always
        ...
```

## 4. Check Application log

### 1) Logging - Application Log - Search for the application you set in the application list.

<figure><img src="/files/Lumi3pTp181l7lOtoeGi" alt=""><figcaption></figcaption></figure>
