1.Installieren
shell
curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev | bash
# or: apt/yum packages and Docker images at vector.dev/docs/setup/installation/2.Dateien und das systemd-Journal
/etc/vector/vector.yaml
# The ingest key is read from /etc/vector/secrets/key through Vector's
# secret backend; ${ENV} placeholders are not expanded in the config.
secret:
local:
type: directory
path: /etc/vector/secrets
sources:
app_files:
type: file
include: [/var/log/myapp/*.log]
ignore_older_secs: 86400
journal:
type: journald
include_units: [nginx.service, postgresql.service]
transforms:
enrich:
type: remap
inputs: [app_files, journal]
source: |
.host = get_hostname!()
.env = "prod"
# files: service from the path; journald: from the unit
if exists(.file) { .service = replace(basename!(string!(.file)), r'\.log$', "") }
if exists(._SYSTEMD_UNIT) { .service = replace(string!(._SYSTEMD_UNIT), ".service", "") }
parsed, err = parse_json(string!(.message))
if err == null { . = merge(., parsed) }
sinks:
uptimeeye:
type: elasticsearch
inputs: [enrich]
endpoints: ["https://logs.uptimeeye.com/v1/ingest/elasticsearch/"]
api_version: v8
compression: gzip
healthcheck: { enabled: false }
request:
headers:
Authorization: "Bearer SECRET[local.key]"
query:
_msg_field: message
_time_field: timestamp
_stream_fields: service,host,env
buffer:
type: disk
max_size: 268435488
when_full: block3.Starten und prüfen
shell
install -d -m 700 -o vector /etc/vector/secrets
printf '%s' 'ue_ingest_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' > /etc/vector/secrets/key
chown vector /etc/vector/secrets/key && chmod 600 /etc/vector/secrets/key
vector validate /etc/vector/vector.yaml
systemctl enable --now vector
vector top # live view of events per componentFelder, die du bekommst
Diese Felder erscheinen im Panel „Felder“ und funktionieren in jedem Filter:
servicehostenvfilebei Datei-Sources- journald-Metadaten wie
_SYSTEMD_UNIT,PRIORITY
Tipps
- Stacktraces: Nutz die Option
multilinederfile-Source (multiline: { start_pattern: '^\\d{4}-\\d{2}-\\d{2}', mode: halt_before, condition_pattern: '^\\d{4}-\\d{2}-\\d{2}', timeout_ms: 1000 }). - Wirf Rauschen weg, bevor es auf dein Kontingent zählt: ein
filter-Transform mitcondition: '.level != "debug"'. - Der
http-Sink von Vector geht auch:uri: https://logs.uptimeeye.com/v1/ingest/jsonline?_stream_fields=service,env,encoding: { codec: json },framing: { method: newline_delimited },auth: { strategy: bearer, token: … }.
FAQ
Warum der elasticsearch-Sink und nicht http?
Beides geht. Mit dem Bulk-Protokoll von Elasticsearch bekommt Vector Bestätigungen pro Zeile und Back-Pressure gratis; der
http-Sink ist eine gute Alternative, wenn dir JSON-Lines lieber sind.Wo bekomme ich den Ingest-Key?
In der App unter API-Keys → Neuer API-Key → Typ „Log-Ingest“. Der Key beginnt mit
ue_ingest_ und wird nur einmal angezeigt. Management-Keys (ue_live_) lehnt der Ingest-Endpoint ab.Wie sehe ich, ob Logs ankommen?
Öffne Logs in der App, wähl den Zeitraum „15 Min.“ und such nach
service:=<your service>. Neue Zeilen sind nach etwa einer Sekunde durchsuchbar; Live-Tail zeigt sie mit etwa 6 s Verzögerung.Verwandte Seiten
KubernetesSende stdout/stderr aller Pods per Vector-DaemonSet mit Namespace, Container und Node an UptimeEye Logs.DockerSchick die Logs aller Container eines Docker-Hosts an UptimeEye Logs: ein Vector-Container am Docker-Socket oder der Loki-Logging-Driver pro Container..Fluent BitLass Fluent Bit Logdateien oder Container-Ausgaben mitlesen und als JSON-Lines über den http-Output an UptimeEye Logs senden – auf Hosts, VMs und Kubernetes..Logs durchsuchenJetzt, wo Zeilen ankommen: Filter, Felder, Zeiträume und Live-Tail.