Google compute engine 如何在kubernetes吊舱的Stackdriver中设置错误报告?

Google compute engine 如何在kubernetes吊舱的Stackdriver中设置错误报告?,google-compute-engine,kubernetes,gcloud,fluentd,stackdriver,Google Compute Engine,Kubernetes,Gcloud,Fluentd,Stackdriver,我对如何在kubernetes中设置错误报告有点困惑,所以在Google云控制台/Stackdriver“错误报告”中可以看到错误 根据文件 我们需要启用fluentd的“转发输入插件”,然后从我们的应用程序发送异常数据。我认为,如果我们自己安装了fluentd,这种方法可能会奏效,但它已经预装在一个只运行gcr.io/google_containers/fluentd-gcp docker image的pod中的每个节点上 我们如何在这些pod上启用转发输入,并确保节点上的每个pod都可以使用

我对如何在kubernetes中设置错误报告有点困惑,所以在Google云控制台/Stackdriver“错误报告”中可以看到错误

根据文件 我们需要启用fluentd的“转发输入插件”,然后从我们的应用程序发送异常数据。我认为,如果我们自己安装了fluentd,这种方法可能会奏效,但它已经预装在一个只运行gcr.io/google_containers/fluentd-gcp docker image的pod中的每个节点上

我们如何在这些pod上启用转发输入,并确保节点上的每个pod都可以使用http端口?我们还需要确保在向集群添加更多节点时默认使用此配置


任何帮助都将不胜感激,可能是我从错误的角度看待这一切?

基本思想是启动一个单独的pod,通过TCP接收结构化日志并将其转发到云日志,类似于本地运行的fluentd代理。我使用的步骤见下文

(不幸的是,Docker和Kubernetes中内置的日志记录支持无法使用-它只是将来自stdout/stderr的单独文本行作为单独的日志条目转发,从而防止错误报告看到完整的堆栈跟踪。)

使用
Dockerfile
为fluentd转发器创建docker映像,如下所示:

FROM gcr.io/google_containers/fluentd-gcp:1.18

COPY fluentd-forwarder.conf /etc/google-fluentd/google-fluentd.conf
其中
fluentd forwarder.conf
包含以下内容:

<source>
  type forward
  port 24224
</source>

<match **>
  type google_cloud
  buffer_chunk_limit 2M
  buffer_queue_limit 24
  flush_interval 5s
  max_retry_wait 30
  disable_retry_limit
</match>
您需要一个复制控制器(
fluentd forwarder controller.yaml
):

您还需要一项服务(
fluentd forwarder service.yaml
):

然后创建复制控制器和服务:

$ kubectl create -f fluentd-forwarder-controller.yaml
$ kubectl create -f fluentd-forwarder-service.yaml

最后,在您的应用程序中,不要使用“localhost”和24224来连接上所述的fluentd代理,而是使用环境变量值
fluentd\u FORWARDER\u SERVICE\u HOST
fluentd\u FORWARDER\u SERVICE\u PORT

来添加到Boris的答案:只要以正确的格式记录错误(请参阅)如果启用了云日志记录(您可以在中看到错误),则错误将在不进行任何进一步设置的情况下进入错误报告

鲍里斯的回答很好,但比实际需要的要复杂得多(不需要树立码头工人的形象)。如果您在本地机器上配置了kubectl(或者您可以使用Google Cloud Shell),复制并粘贴以下内容,它将在您的集群中安装转发器(我根据上述答案更新了fluent gcp的版本)。我的解决方案使用ConfigMap存储文件,因此无需重建即可轻松更改

cat << EOF | kubectl create -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: fluentd-forwarder
data:
  google-fluentd.conf: |+
    <source>
      type forward
      port 24224
    </source>

    <match **>
      type google_cloud
      buffer_chunk_limit 2M
      buffer_queue_limit 24
      flush_interval 5s
      max_retry_wait 30
      disable_retry_limit
    </match>

---
apiVersion: v1
kind: ReplicationController
metadata:
  name: fluentd-forwarder
spec:
  replicas: 1
  template:
    metadata:
      name: fluentd-forwarder
      labels:
        app: fluentd-forwarder
    spec:
      containers:
      - name: fluentd-forwarder
        image: gcr.io/google_containers/fluentd-gcp:2.0.18
        env:
        - name: FLUENTD_ARGS
          value: -qq
        ports:
        - containerPort: 24224
        volumeMounts:
        - name: config-vol
          mountPath: /etc/google-fluentd
      volumes:
        - name: config-vol
          configMap:
            name: fluentd-forwarder
---
apiVersion: v1
kind: Service
metadata:
  name: fluentd-forwarder
spec:
  selector:
    app: fluentd-forwarder
  ports:
  - protocol: TCP
    port: 24224
EOF

cat您使用GKE还是GCE?我是Stackdriver错误报告的产品经理。目前,该功能处于测试阶段,我们还没有正式支持Kubernetes。一旦我们有了一个解决方案可以分享,我们将尽力在这里提供我们最好的答案。感谢您的回复。我们使用GKE—我们希望将错误报告从java吊舱发送到Stackdriver错误报告@斯特伦,谢谢你,期待着。我能让它工作如下:1。创建一个以fluentd gcp image/Dockerfile为模型的docker映像,将google-fluentd.conf内容替换为forward input插件的一个部分。2.为这个专用fluentd转发器创建一个复制控制器和服务,以便您的应用程序可以通过TCP访问它。3.按照我们文档中的示例,将localhost和24224替换为在2中创建的服务中的环境变量值。对不起,这么简单!我需要清理我的例子并发布它,希望我上面的大纲已经对你有用了。谢谢你的输入Boris!我们的结局差不多就是这样:)不客气。您的错误是否按预期显示?如果您有任何反馈,请提交反馈-查看错误报告页面时,请使用控制台右上角的“!”图标,团队将直接收到反馈。谢谢在应用程序中设置fluentd客户端可以按照以下步骤建模:
apiVersion: v1
kind: Service
metadata:
  name: fluentd-forwarder
spec:
  selector:
    app: fluentd-forwarder
  ports:
  - protocol: TCP
    port: 24224
$ kubectl create -f fluentd-forwarder-controller.yaml
$ kubectl create -f fluentd-forwarder-service.yaml
cat << EOF | kubectl create -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: fluentd-forwarder
data:
  google-fluentd.conf: |+
    <source>
      type forward
      port 24224
    </source>

    <match **>
      type google_cloud
      buffer_chunk_limit 2M
      buffer_queue_limit 24
      flush_interval 5s
      max_retry_wait 30
      disable_retry_limit
    </match>

---
apiVersion: v1
kind: ReplicationController
metadata:
  name: fluentd-forwarder
spec:
  replicas: 1
  template:
    metadata:
      name: fluentd-forwarder
      labels:
        app: fluentd-forwarder
    spec:
      containers:
      - name: fluentd-forwarder
        image: gcr.io/google_containers/fluentd-gcp:2.0.18
        env:
        - name: FLUENTD_ARGS
          value: -qq
        ports:
        - containerPort: 24224
        volumeMounts:
        - name: config-vol
          mountPath: /etc/google-fluentd
      volumes:
        - name: config-vol
          configMap:
            name: fluentd-forwarder
---
apiVersion: v1
kind: Service
metadata:
  name: fluentd-forwarder
spec:
  selector:
    app: fluentd-forwarder
  ports:
  - protocol: TCP
    port: 24224
EOF