【问题标题】:Send spark driver logs running in k8s to Splunk将在 k8s 中运行的 spark 驱动程序日志发送到 Splunk
【发布时间】:2023-10-08 09:24:01
【问题描述】:

我正在尝试按照此处提到的步骤在 kubernetes 中运行示例 spark 作业:https://spark.apache.org/docs/latest/running-on-kubernetes.html

我正在尝试将 spark 驱动程序和执行程序日志发送到 Splunk。 spark是否提供任何配置来做同样的事情? 如何在 spark-submit 命令中发送 Splunk 配置,例如 HEC 端点、端口、令牌等?

我确实尝试将它作为 args 传递给 spark 驱动程序

bin/spark-submit
  --deploy-mode cluster
  --class org.apache.spark.examples.JavaSparkPi
  --master k8s://http://127.0.0.1:8001
  --conf spark.executor.instances=2
  --conf spark.app.name=spark-pi
  --conf spark.kubernetes.container.image=gcr.io/spark-operator/spark:v2.4.4
  --conf spark.kubernetes.authenticate.driver.serviceAccountName=<account>
  --conf spark.kubernetes.docker.image.pullPolicy=Always
  --conf spark.kubernetes.namespace=default
  local:///opt/spark/examples/jars/spark-examples_2.11-2.4.4.jar
  --log-driver=splunk
  --log-opt splunk-url=<url:port>
  -—log-opt splunk-token=<token>
  --log-opt splunk-index=<index>
  --log-opt splunk-sourcetype=<sourceType>
  --log-opt splunk-format=json

但日志未转发到所需的索引。

我正在使用 spark 版本 2.4.4 运行 spark-submit。

提前感谢您的任何意见!

【问题讨论】:

    标签: apache-spark logging kubernetes splunk spark-submit


    【解决方案1】:

    您好,欢迎来到 *。

    我已经在网上搜索了一段时间,试图找到与Spark + Splunk 用法类似的问题案例。我设法意识到的是,您可能正在混合几件事。参考有关Splunk logging driver 的Docker 文档似乎您尝试使用`spark-submit 重现相同的步骤。不幸的是,它对你不起作用。

    基本上,脚本中local:///opt/spark/examples/jars/spark-examples_2.11-2.4.4.jar ... 之后的所有配置选项都是org.apache.spark.examples.JavaSparkPi#main 方法的程序参数,它(除非您对其进行自定义)简单地忽略它们。

    您需要做的是将您的 Kubrnetes 集群连接到 Splunk API。其中一种方法是将Splunk Connector 安装到您的 Kubernetes 集群。根据您的环境细节,可能有其他方法可以做到这一点,但阅读文档是一个不错的起点。

    希望它能指引你走向正确的道路。

    【讨论】:

      最近更新 更多