SpitfireYük Testi ve Gözlemlenebilirlikv1.4.9 · Yenilikler

Sürüm: 1.4.9Bu dokümantasyon Spitfire 1.4.9 içindir.

Log toplama (syslog, NetScaler, dosyalar, Fluent Bit, Splunk, journald, Windows, Kubernetes)

Kurulum ve denemenin adımları aşağıda. Log kayıtlarının Backend sekmesinde nasıl göründüğü için Gözlemlenebilirlik → Loglar bölümüne bakın.

Başlamadan önce

  1. Ayarlar → Genel → Genel adres dolu olsun.
    text
    https://spitfire.example.com
  2. OTLP alıcısı ekleyin ve sfotlp_ token'ını kopyalayın.
    text
    Gözlemlenebilirlik → Ekle → OTLP alıcısı → Kaydet → Token'ı kopyala
  3. Log toplayıcılar kartında kaynağı seçip Yapılandırmayı oluştur'a basın; aşağıdaki komutlar orada adresinizle hazır gelir.
    text
    Gözlemlenebilirlik → Log toplayıcılar → <kaynak> → Yapılandırmayı oluştur

Tek satırlık kurulum

Linux (Docker ya da otelcol-contrib paketi; token gizli sorulur):

bash
curl -fsSL "https://<spitfire>/api/v1/setup/ds/logs.sh" -o /tmp/sf-logs.sh && SF_SOURCE=syslog bash /tmp/sf-logs.sh

Windows (PowerShell'i yönetici olarak açın):

powershell
$env:SF_SOURCE='windowseventlog'; irm "https://<spitfire>/api/v1/setup/ds/logs.ps1" | iex

SF_SOURCE değerleri: syslog, netscaler, filelog, fluentforward, splunk_hec, journald, logstash, vector (Linux); windowseventlog, filelog (Windows).

Kaldırmak için:

bash
SF_ACTION=uninstall SF_SOURCE=syslog bash /tmp/sf-logs.sh

Başarı kontrolü

  1. Deneme kaydı gönderin (syslog örneği).
    bash
    logger --rfc5424 -d -n 127.0.0.1 -P 5514 -p user.err -t spitfire-test "spitfire-test ERROR log collection works"
  2. Kartta İlk kayıtlar satırı yeşile döner: 1 kayıt geldi ve spitfire-test.
    text
    Gözlemlenebilirlik → Log toplayıcılar → İlk kayıtlar
  3. Gelmezse Collector'ın logu:
    bash
    sudo docker logs spitfire-logs-syslog 2>&1 | tail -n 30 || sudo journalctl -u otelcol-contrib -n 30 --no-pager

Syslog

  1. Kurulum:
    bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/logs.sh" -o /tmp/sf-logs.sh && SF_SOURCE=syslog SF_PORT=5514 SF_TRANSPORT=udp SF_PROTOCOL=rfc5424 bash /tmp/sf-logs.sh
  2. rsyslog'u Collector'a yönlendirin:
    bash
    echo '*.* @<collector-host>:5514;RSYSLOG_SyslogProtocol23Format' | sudo tee /etc/rsyslog.d/90-spitfire.conf && sudo systemctl restart rsyslog
  3. Kontrol: logger -p user.err -t spitfire-test "spitfire-test ERROR" → İlk kayıtlar.

NetScaler (Citrix ADC)

  1. Kurulum (NetScaler RFC 3164 gönderir):
    bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/logs.sh" -o /tmp/sf-logs.sh && SF_SOURCE=netscaler SF_PORT=5514 SF_TRANSPORT=udp SF_PROTOCOL=rfc3164 bash /tmp/sf-logs.sh
  2. NetScaler CLI: syslog action, policy ve global bind.
    text
    add audit syslogAction sf_syslog <collector-ip> -serverPort 5514 -transport UDP -logLevel ALL -userDefinedAuditlog YES
    add audit syslogPolicy sf_syslog_pol true sf_syslog
    bind audit syslogGlobal -policyName sf_syslog_pol -priority 100
  3. İstek başına satır (client IP, vserver, method, URL, HTTP status):
    text
    add audit messageaction sf_http INFORMATIONAL "\"client=\" + CLIENT.IP.SRC + \" vserver=\" + HTTP.REQ.LB_VSERVER.NAME + \" method=\" + HTTP.REQ.METHOD + \" url=\" + HTTP.REQ.URL.PATH + \" status=\" + HTTP.RES.STATUS"
    add rewrite policy sf_http_pol true NOREWRITE -logAction sf_http
    bind lb vserver <vserver-adı> -policyName sf_http_pol -priority 900 -gotoPriorityExpression NEXT -type RESPONSE
    save ns config
  4. Kontrol (Collector sunucusunda):
    bash
    printf '<131>%s 10.0.0.10 0-PPE-0 : default AAA Message 1 0 :  "client=203.0.113.7 vserver=vs_web method=GET url=/api/orders status=503 rt_ms=1840"\n' "$(date '+%b %e %H:%M:%S')" | nc -u -w1 127.0.0.1 5514

Ayrıştırılan alanlar:

Kaynak Alanlar
Yerel biçim (Source, Vserver, Client_ip) client.address, netscaler.vserver
CEF / audit (AppFW: src=, request=, method=, act=) client.address, url.path, http.request.method, netscaler.module, netscaler.event, netscaler.action; CEF severity 7+ error
Message action (client= vserver= method= url= status= rt_ms=) client.address, netscaler.vserver, http.request.method, url.path, http.response.status_code (5xx error, 4xx warn), http.server.request.duration (sn)
Not

Response time için satıra rt_ms=<milisaniye> ekleyen bir ifade kullanın (ADC sürümünüzün transaction time ifadesi); yoksa alan boş kalır, diğerleri ayrıştırılır.

Not

AppFlow/IPFIX: contrib Collector'ın netflow receiver'ı (alpha) IPFIX alır ama NetScaler'ın AppFlow HTTP template'lerini (URL, status, response time) çözemez. HTTP alanları için yukarıdaki syslog yolunu kullanın. NetScaler metrikleri (NITRO API) Altyapı izleme'dedir.

Log dosyaları

  1. Kurulum (nginx örneği; Docker'da dosyaların klasörü salt okunur bağlanır):
    bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/logs.sh" -o /tmp/sf-logs.sh && SF_SOURCE=filelog SF_PATHS='/var/log/nginx/access.log' SF_PARSER=nginx bash /tmp/sf-logs.sh
  2. Kontrol:
    bash
    echo "$(date -u +%FT%TZ) ERROR spitfire-test log collection works" | sudo tee -a /var/log/app/app.log

Satır biçimleri: none, json, nginx, apache (combined; 5xx error, 4xx warn), regex (named group'lu; yalnızca kartta, betik none kullanır).

Fluentd / Fluent Bit

  1. Kurulum:
    bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/logs.sh" -o /tmp/sf-logs.sh && SF_SOURCE=fluentforward SF_PORT=24224 bash /tmp/sf-logs.sh
  2. Fluent Bit çıkışı (fluent-bit.conf):
    text
    [OUTPUT]
        Name  forward
        Match *
        Host  <collector-host>
        Port  24224
  3. Fluentd çıkışı:
    text
    <match **>
      @type forward
      <server>
        host <collector-host>
        port 24224
      </server>
    </match>

Splunk

Splunk iki yoldan bağlanır:

Yol Ne Nerede
Splunk HEC (push) HEC'e gönderen uygulama, Fluent Bit, Vector ya da OTel → Collector :8088 → Spitfire Log toplayıcılar → Splunk HEC
Splunk search API (pull) Spitfire → Splunk management port :8089, /services/search/jobs/export, salt okunur Bağlantılar → Log depoları → Splunk

HEC kurulumu:

  1. bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/logs.sh" -o /tmp/sf-logs.sh && SF_SOURCE=splunk_hec SF_PORT=8088 bash /tmp/sf-logs.sh
  2. Gönderenin HEC adresini Collector'a çevirin:
    text
    http://<collector-host>:8088/services/collector/event
  3. Kontrol:
    bash
    curl -sS http://127.0.0.1:8088/services/collector/event -H 'Authorization: Splunk any' -d '{"event":"spitfire-test ERROR log collection works","source":"spitfire-test"}'

Search API bağlantısı:

  1. Splunk'ta search yetkili bir token oluşturun.
    text
    Settings → Tokens → New Token
  2. Spitfire'da bağlantı ekleyin.
    text
    Gözlemlenebilirlik → Ekle → Splunk   URL: https://splunk.corp:8089   Kimlik: Splunk token'ı (Bearer)   Index: main
  3. Bağlantıyı dene → Splunk sürümü görünür.
Not

Splunk bağlantısı izleme olayları ek modülüyle gelir.

journald

  1. bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/logs.sh" -o /tmp/sf-logs.sh && SF_SOURCE=journald SF_UNITS=nginx.service,api.service bash /tmp/sf-logs.sh
  2. Kontrol:
    bash
    logger -p user.err -t spitfire-test "spitfire-test ERROR log collection works"
Not

journald receiver'ı contrib'de alpha; betik her zaman paketi kurar (journalctl gerekir).

Windows olay günlükleri

  1. PowerShell'i yönetici olarak açın:
    powershell
    $env:SF_SOURCE='windowseventlog'; $env:SF_CHANNELS='Application,System'; irm "https://<spitfire>/api/v1/setup/ds/logs.ps1" | iex
  2. Kontrol (betik de yazar):
    powershell
    Write-EventLog -LogName Application -Source 'spitfire-test' -EventId 1 -EntryType Error -Message 'spitfire-test ERROR log collection works'
Not

Token C:\ProgramData\Spitfire\otlp-token dosyasındadır (yalnızca SYSTEM ve Administrators okur). windowseventlog receiver'ı contrib'de alpha.

Kubernetes

  1. Namespace ve token secret'ı:
    bash
    kubectl create namespace spitfire-logs --dry-run=client -o yaml | kubectl apply -f -
    read -rsp "OTLP token (sfotlp_...): " SF_T && echo && kubectl -n spitfire-logs create secret generic spitfire-otlp --from-literal=token="$SF_T" --dry-run=client -o yaml | kubectl apply -f - && unset SF_T
  2. Helm değerleri ve kurulum:
    bash
    curl -fsSL "https://<spitfire>/api/v1/setup/logs/config?source=kubernetes&events=1&format=yaml" -o /tmp/spitfire-logs-values.yaml
    helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts && helm repo update open-telemetry
    helm upgrade --install spitfire-logs open-telemetry/opentelemetry-collector -n spitfire-logs -f /tmp/spitfire-logs-values.yaml
  3. Kontrol:
    bash
    kubectl -n spitfire-logs rollout status daemonset -l app.kubernetes.io/instance=spitfire-logs --timeout=120s
    kubectl run spitfire-test --rm -i --restart=Never --image=busybox:1.36 -- sh -c 'echo "ERROR spitfire-test log collection works"'

Logstash ve Vector

  1. bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/logs.sh" -o /tmp/sf-logs.sh && SF_SOURCE=logstash SF_PORT=5170 bash /tmp/sf-logs.sh
  2. Logstash çıkışı (spitfire.conf):
    text
    output { tcp { host => "<collector-host>" port => 5170 codec => json_lines } }
  3. Vector sink'i (spitfire.yaml; SF_SOURCE=vector):
    yaml
    sinks:
      spitfire:
        type: socket
        inputs: ["*"]
        address: "<collector-host>:5170"
        mode: tcp
        encoding:
          codec: json
        framing:
          method: newline_delimited
  4. Kontrol:
    bash
    echo '{"level":"error","message":"spitfire-test ERROR log collection works","service.name":"spitfire-test"}' | nc -w1 127.0.0.1 5170

Log depolarından okuma (salt okunur)

Depo URL Kimlik Okunan
Elasticsearch https://es.corp:9200 API key ya da kullanıcı (index'te read) _search + date_histogram, 50 error örneği
OpenSearch https://os.corp:9200 Kullanıcı (index'te read) _search + date_histogram, 50 error örneği
Graylog https://graylog.corp:9000 Access token ya da kullanıcı (Reader) /api/search/universal/absolute, en çok 1000 mesaj
Splunk https://splunk.corp:8089 Token ya da kullanıcı (search) /services/search/jobs/export: stats + error örnekleri
Datadog site API key + Application key (logs_read_data) Logs aggregate + events search
New Relic veri merkezi User key NRQL FROM Log … FACET … TIMESERIES
  1. text
    Gözlemlenebilirlik → Ekle → Elasticsearch | OpenSearch | Graylog | Splunk
  2. Datadog ve New Relic bağlantısında: Koşu penceresinin loglarını da oku → Açık.
  3. Bağlantıyı dene → sonraki koşunun Backend sekmesinde Loglar ve yük.

İlgili sayfalar