> 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/guideline-for-enterprise/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 *cluster* 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"
          }
        }
```
