> For the complete documentation index, see [llms.txt](https://docs.cloudeka.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cloudeka.ai/deka-gpu-documentations/panduan-untuk-enterprise/deka-gpu/deka-gpu-log-collection/log-aggregator.md).

# Agregator Log

*Log Aggregator* berfungsi sebagai lapisan pemrosesan dan konsolidasi. Komponen ini menggabungkan log dari beberapa sumber ke lokasi pusat, mengklasifikasikannya secara otomatis, mendeteksi pola serta anomali, dan mendukung pencarian serta analitik lintas log. Kemampuan agregasi dan pemrosesan lanjutannya membantu pengguna memperoleh wawasan dari volume data log yang besar.

## Agregasikan Log Audit dan Kontainer Kubernetes ke Platform Lain

*Log Aggregator* mengagregasikan log audit dan kontainer Kubernetes ke platform lain. Proses ini mencakup penerapan Logstash pada klaster untuk menerima kedua jenis log, serta konfigurasi *pipeline* Logstash untuk mengurai, memperkaya, dan mengekspor log ke platform *logging* yang sudah ada. Semua log dapat dikonsolidasikan dan dianalisis secara terpusat. Hal ini meningkatkan efisiensi pemantauan sistem dan pemecahan masalah. Bagian ini menjelaskan dua metode konfigurasi *Log Aggregator* dengan Logstash.

### 1. Keluaran *stdout* *(Untuk kebutuhan debugging)*

Buat file YAML bernama `logstash-stdout`.

```bash
nano logstash-stdout.yaml
```

Salin dan tempel konfigurasi YAML berikut.

```yaml
apiVersion: logstash.k8s.elastic.co/v1alpha1
kind: Logstash
metadata:
  name: logstash-stdout
spec:
  version: 8.17.2
  count: 1
  podTemplate:
    spec:
      containers:
        - name: logstash
          securityContext:
            allowPrivilegeEscalation: false
            runAsUser: 1000
            runAsNonRoot: true
          resources:
            limits:
              cpu: 500m
              memory: 1024Mi
            requests:
              cpu: 200m
              memory: 256Mi
      initContainers:
        - name: logstash-internal-init-config
          securityContext:
            allowPrivilegeEscalation: false
            runAsUser: 1000
            runAsNonRoot: true
          resources:
            limits:
              cpu: 100m
              memory: 128Mi
            requests:
              cpu: 50m
              memory: 64Mi
  volumeClaimTemplates:
    - metadata:
        name: logstash-data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 10Gi
  pipelines:
    - pipeline.id: audit
      config.string: |
        input {
          elasticsearch {
            hosts => "https://dekalog.cloudeka.ai"
            index => "logs-<project_name>*"
            api_key => "api_key"
            query => '{
              "query": {
                "bool": {
                  "must": [
                    { "range": { "@timestamp": { "gte": "now-1m" } } }
                  ]
                }
              }
            }'
            ssl_enabled => true
            ssl_verification_mode => "full"
            schedule => "* * * * *"
            docinfo => true
          }
        }
        output {
          stdout { codec => rubydebug }
        }
```

### 2. Keluaran Elasticsearch *(Untuk penggunaan produksi)*

Buat file YAML bernama `logstash-elasticsearch`.

```bash
nano logstash-elasticsearch.yaml
```

Salin dan tempel konfigurasi YAML berikut.

```yaml
apiVersion: logstash.k8s.elastic.co/v1alpha1
kind: Logstash
metadata:
  name: logstash-elasticsearch
spec:
  version: 8.17.2
  count: 1
  podTemplate:
    spec:
      containers:
        - name: logstash
          securityContext:
            allowPrivilegeEscalation: false
            runAsUser: 1000
            runAsNonRoot: true
          resources:
            limits:
              cpu: 500m
              memory: 1024Mi
            requests:
              cpu: 200m
              memory: 256Mi
      initContainers:
        - name: logstash-internal-init-config
          securityContext:
            allowPrivilegeEscalation: false
            runAsUser: 1000
            runAsNonRoot: true
          resources:
            limits:
              cpu: 100m
              memory: 128Mi
            requests:
              cpu: 50m
              memory: 64Mi
  volumeClaimTemplates:
    - metadata:
        name: logstash-data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 10Gi
  pipelines:
    - pipeline.id: audit
      config.string: |
        input {
          elasticsearch {
            hosts => "https://dekalog.cloudeka.ai"
            index => "logs-<project_name>*"
            api_key => "<api_key>"
            query => '{
              "query": {
                "bool": {
                  "must": [
                    { "range": { "@timestamp": { "gte": "now-1m" } } }
                  ]
                }
              }
            }'
            ssl_enabled => true
            ssl_verification_mode => "full"
            schedule => "* * * * *"
            docinfo => true
          }
        }
        
        output {
          elasticsearch {
            hosts => ["https://<es_url>:<es_port>"]
            api_key => "<api_key>"
            data_stream => "true"
            data_stream_type => "logs"
            data_stream_dataset => "kubernetes"
            data_stream_namespace => "default"
            ssl_enabled => true
            ssl_verification_mode => "full"
          }
        }
```
