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
- Ayarlar → Genel → Genel adres dolu olsun.
https://spitfire.example.com - OTLP alıcısı ekleyin ve
sfotlp_token'ını kopyalayın.Gözlemlenebilirlik → Ekle → OTLP alıcısı → Kaydet → Token'ı kopyala - 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.
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):
curl -fsSL "https://<spitfire>/api/v1/setup/ds/logs.sh" -o /tmp/sf-logs.sh && SF_SOURCE=syslog bash /tmp/sf-logs.shWindows (PowerShell'i yönetici olarak açın):
$env:SF_SOURCE='windowseventlog'; irm "https://<spitfire>/api/v1/setup/ds/logs.ps1" | iexSF_SOURCE değerleri: syslog, netscaler, filelog, fluentforward, splunk_hec, journald,
logstash, vector (Linux); windowseventlog, filelog (Windows).
Kaldırmak için:
SF_ACTION=uninstall SF_SOURCE=syslog bash /tmp/sf-logs.shBaşarı kontrolü
- Deneme kaydı gönderin (syslog örneği).
logger --rfc5424 -d -n 127.0.0.1 -P 5514 -p user.err -t spitfire-test "spitfire-test ERROR log collection works" - Kartta İlk kayıtlar satırı yeşile döner:
1 kayıt geldivespitfire-test.Gözlemlenebilirlik → Log toplayıcılar → İlk kayıtlar - Gelmezse Collector'ın logu:
sudo docker logs spitfire-logs-syslog 2>&1 | tail -n 30 || sudo journalctl -u otelcol-contrib -n 30 --no-pager
Syslog
- Kurulum:
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 - rsyslog'u Collector'a yönlendirin:
echo '*.* @<collector-host>:5514;RSYSLOG_SyslogProtocol23Format' | sudo tee /etc/rsyslog.d/90-spitfire.conf && sudo systemctl restart rsyslog - Kontrol:
logger -p user.err -t spitfire-test "spitfire-test ERROR"→ İlk kayıtlar.
NetScaler (Citrix ADC)
- Kurulum (NetScaler RFC 3164 gönderir):
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 - NetScaler CLI: syslog action, policy ve global bind.
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 - İstek başına satır (client IP, vserver, method, URL, HTTP status):
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 - Kontrol (Collector sunucusunda):
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) |
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.
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ı
- Kurulum (nginx örneği; Docker'da dosyaların klasörü salt okunur bağlanır):
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 - Kontrol:
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
- Kurulum:
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 - Fluent Bit çıkışı (
fluent-bit.conf):[OUTPUT] Name forward Match * Host <collector-host> Port 24224 - Fluentd çıkışı:
<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:
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- Gönderenin HEC adresini Collector'a çevirin:
http://<collector-host>:8088/services/collector/event - Kontrol:
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ı:
- Splunk'ta search yetkili bir token oluşturun.
Settings → Tokens → New Token - Spitfire'da bağlantı ekleyin.
Gözlemlenebilirlik → Ekle → Splunk URL: https://splunk.corp:8089 Kimlik: Splunk token'ı (Bearer) Index: main - Bağlantıyı dene → Splunk sürümü görünür.
Splunk bağlantısı izleme olayları ek modülüyle gelir.
journald
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- Kontrol:
logger -p user.err -t spitfire-test "spitfire-test ERROR log collection works"
journald receiver'ı contrib'de alpha; betik her zaman paketi kurar (journalctl gerekir).
Windows olay günlükleri
- PowerShell'i yönetici olarak açın:
$env:SF_SOURCE='windowseventlog'; $env:SF_CHANNELS='Application,System'; irm "https://<spitfire>/api/v1/setup/ds/logs.ps1" | iex - Kontrol (betik de yazar):
Write-EventLog -LogName Application -Source 'spitfire-test' -EventId 1 -EntryType Error -Message 'spitfire-test ERROR log collection works'
Token C:\ProgramData\Spitfire\otlp-token dosyasındadır (yalnızca SYSTEM ve
Administrators okur). windowseventlog receiver'ı contrib'de alpha.
Kubernetes
- Namespace ve token secret'ı:
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 - Helm değerleri ve kurulum:
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 - Kontrol:
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
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- Logstash çıkışı (
spitfire.conf):output { tcp { host => "<collector-host>" port => 5170 codec => json_lines } } - Vector sink'i (
spitfire.yaml;SF_SOURCE=vector):sinks: spitfire: type: socket inputs: ["*"] address: "<collector-host>:5170" mode: tcp encoding: codec: json framing: method: newline_delimited - Kontrol:
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 |
Gözlemlenebilirlik → Ekle → Elasticsearch | OpenSearch | Graylog | Splunk- Datadog ve New Relic bağlantısında: Koşu penceresinin loglarını da oku → Açık.
- Bağlantıyı dene → sonraki koşunun Backend sekmesinde Loglar ve yük.
İlgili sayfalar
- Gözlemlenebilirlik
- Observability
Spitfire'da: /observability