L'idea di base è di avviare un pod separato che riceve registri strutturati su TCP e lo inoltra al Cloud Logging, simile a un agent fluentd in esecuzione locale. Vedi sotto per i passaggi che ho usato.
(Purtroppo, il supporto di registrazione che è costruito in Docker e kubernetes non può essere utilizzato - si allinei solo in avanti individuali di testo da output/error come voci di registro separati che impedisce Segnalazione errori di vedere tracce di stack completo.)
Creare un'immagine finestra mobile per un fluentd spedizioniere utilizzando un Dockerfile
come segue:
FROM gcr.io/google_containers/fluentd-gcp:1.18
COPY fluentd-forwarder.conf /etc/google-fluentd/google-fluentd.conf
Dove fluentd-forwarder.conf
contiene quanto segue:
<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>
Poi costruire e spingere l'immagine:
$ docker build -t gcr.io/###your project id###/fluentd-forwarder:v1 .
$ gcloud docker push gcr.io/###your project id###/fluentd-forwarder:v1
è necessario un controller di replica (fluentd-forwarder-controller.yaml
):
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/###your project id###/fluentd-forwarder:v1
env:
- name: FLUENTD_ARGS
value: -qq
ports:
- containerPort: 24224
è necessario anche un servizio (fluentd-forwarder-service.yaml
):
apiVersion: v1
kind: Service
metadata:
name: fluentd-forwarder
spec:
selector:
app: fluentd-forwarder
ports:
- protocol: TCP
port: 24224
Poi creare il controller e il servizio di replica:
$ kubectl create -f fluentd-forwarder-controller.yaml
$ kubectl create -f fluentd-forwarder-service.yaml
Infine, nella vostra applicazione, invece di utilizzare 'localhost' e 24224 per la connessione al agente fluentd come descritto a https://cloud.google.com/error-reporting/docs/setting-up-on-compute-engine, utilizzare i valori delle variabili Evironment FLUENTD_FORWARDER_SERVICE_HOST
e FLUENTD_FORWARDER_SERVICE_PORT
.
Usi GKE o GCE? –
Sono il product manager per Stackdriver Error Reporting. Attualmente, la funzione è in beta e non supportiamo ufficialmente ancora Kubernetes. Cercheremo di fornire la nostra migliore risposta qui una volta che avremo una soluzione da condividere. – Steren
Grazie per la risposta. Usiamo GKE - vogliamo inviare segnalazione degli errori dai nostri java pod a Stackdriver Error Reporting. @Steren, grazie, non vedo l'ora. – s3ncha