Я пытаюсь запустить fluent-bit
внутри spark
контейнера, чтобы spark driver container
, который записывает журналы в файл /var/log/sparkDriver.log
, управляемый свойствами spark log4j
, мог быть прочитан или использован fluent-bit
. Я знаю, что запуск нескольких процессов в одном контейнере - это AntiParttern, но сейчас у меня нет выбора. Какая конфигурация мне нужна, чтобы прочитать этот файл (/var/log/sparkDriver.log
) и переслать журналы на наш внутренний splunk hec
сервер.
Я знаю, fluent-bit
можно использовать как sidecar
в модуле, но я использую простой spark-submit
, чтобы отправить свою искровую работу на K8S
, а spark-submit
не может сказать k8s
, что я тоже хочу запустить коляску (беглый бит) .
Я также знаю, что fluent-bit
может быть установлен как deamonSet в кластере, который будет в основном работать на каждом узле в кластере k8s
и пересылать журналы из контейнера через узел на Splunk
. Но эта опция также не будет работать для меня.
Поэтому я подумал, могу ли я испечь fluent-bit
или splunkforwarder
или даже fluentd
и прочитать журналы из файла или stdout . Я знаю, что другие 2 варианта будут раздувать мое spark
docker изображение, но у меня сейчас нет выбора.
Любая помощь или предложение будут очень признательны
Я на самом деле попробовал tail
и splunk
, но почему-то я не могу определить правильную конфигурацию для fluent-bit
Вот мой файл журнала, который spark
журналов, используя log4j
:
Я на самом деле пробовал это, но почему-то я не могу установить правильную конфигурацию. Вот как выглядят мои файлы журналов:
20/03/02 19:35:47 INFO TaskSetManager: Starting task 12526.0 in stage 0.0 (TID 12526, 172.16.7.233, executor 1, partition 12526, PROCESS_LOCAL, 7885 bytes)
20/03/02 19:35:47 DEBUG KubernetesClusterSchedulerBackend$KubernetesDriverEndpoint: Launching task 12526 on executor id: 1 hostname: 172.16.7.233.
20/03/02 19:35:47 INFO TaskSetManager: Finished task 12524.0 in stage 0.0 (TID 12524) in 1 ms on 172.16.7.233 (executor 1) (12525/1000000)
20/03/02 19:35:47 TRACE MessageDecoder: Received message OneWayMessage: OneWayMessage{body=NettyManagedBuffer{buf=CompositeByteBuf(ridx: 5, widx: 1622, cap: 1622, components=2)}}
20/03/02 19:35:47 TRACE MessageDecoder: Received message OneWayMessage: OneWayMessage{body=NettyManagedBuffer{buf=PooledUnsafeDirectByteBuf(ridx: 13, widx: 1630, cap: 32768)}}
20/03/02 19:35:47 TRACE MessageDecoder: Received message OneWayMessage: OneWayMessage{body=NettyManagedBuffer{buf=PooledUnsafeDirectByteBuf(ridx: 13, widx: 2414, cap: 4096)}}
Вот моя fluent-bit
конфигурация:
[INPUT]
Name tail
Path /var/log/sparklog.log
# nest the record under the 'event' key
[FILTER]
Name nest
Match *
Operation nest
Wildcard *
Nest_under event
# add event metadata
[FILTER]
Name modify
Match *
Add index myindex
Add host ${HOSTNAME}
Add app_name ${APP_NAME}
Add namespace ${NAMESPACE}
[OUTPUT]
Name Splunk
Match *
Host splunk.example.com
Port 30000
Splunk_Token XXXX-XXXX-XXXX-XXXX
Splunk_Send_Raw On
TLS On
TLS.Verify Off