|
Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official. |
Saídas e ClusterOutputs
Consulte a documentação do operador Logging para obter todos os detalhes sobre como configurar Flows e ClusterFlows.
Veja Integração do Rancher com Serviços de Logging: Consulte [Solução de problemas para saber como resolver problemas de memória com o buffer de logging.
Saídas
O recurso Output define onde seu Flows pode enviar as mensagens de log. Outputs são a etapa final para um Flow de registro.
O Output é um recurso com escopo de namespace, o que significa que apenas um Flow dentro do mesmo namespace pode acessá-lo.
Você pode usar segredos nessas definições, mas eles também devem estar no mesmo namespace.
Outputs pode ser configurado preenchendo formulários na interface do Rancher.
Para os detalhes do recurso personalizado Output, consulte OutputSpec..
A interface do Rancher fornece formulários para configuração dos seguintes tipos de Output:
-
Amazon ElasticSearch
-
Azure Storage
-
Cloudwatch
-
Datadog
-
Elasticsearch
-
Arquivo
-
Fluentd
-
GCS
-
Kafka
-
Kinesis Stream
-
LogDNA
-
LogZ
-
Loki
-
New Relic
-
Splunk
-
SumoLogic
-
Syslog
A interface do Rancher fornece formulários para configuração do tipo Output, do alvo e das credenciais de acesso, se aplicável.
Para exemplos de configuração para cada plugin de registro suportado pelo operador de registro, consulte a documentação do operador de registro.
ClusterOutputs
ClusterOutput define um Output sem restrições de namespace. Ele é eficaz apenas quando implantado no mesmo namespace que o operador de registro.
ClusterOutputs pode ser configurado preenchendo formulários na interface do Rancher.
Para os detalhes do recurso personalizado ClusterOutput, veja ClusterOutput.
Exemplos de YAML
Uma vez que o registro esteja instalado, você pode usar esses exemplos para ajudar a criar seu próprio pipeline de registro.
Saída do Cluster para ElasticSearch
Vamos supor que você queira enviar todos os logs do seu cluster para um elasticsearch cluster. Primeiro, criamos um cluster Output.
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterOutput
metadata:
name: "example-es"
namespace: "cattle-logging-system"
spec:
elasticsearch:
host: elasticsearch.example.com
port: 9200
scheme: http
Criamos este ClusterOutput, sem configuração do elasticsearch, no mesmo namespace que nosso operador: cattle-logging-system.. Sempre que criamos um ClusterFlow ou ClusterOutput, precisamos colocá-lo no namespace cattle-logging-system.
Agora que configuramos para onde queremos que os logs vão, vamos configurar todos os logs para irem para aquele ClusterOutput.
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterFlow
metadata:
name: "all-logs"
namespace: "cattle-logging-system"
spec:
globalOutputRefs:
- "example-es"
Agora devemos ver nosso índice configurado com logs nele.
Saída para Splunk
E se tivermos uma equipe de aplicação que só quer que os logs de namespaces específicos sejam enviados para um servidor splunk? Para este caso, podemos usar Outputs e Flows com namespace.
Antes de começarmos, vamos configurar a aplicação daquela equipe: coolapp.
apiVersion: v1
kind: Namespace
metadata:
name: devteam
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: coolapp
namespace: devteam
labels:
app: coolapp
spec:
replicas: 2
selector:
matchLabels:
app: coolapp
template:
metadata:
labels:
app: coolapp
spec:
containers:
- name: generator
image: paynejacob/loggenerator:latest
Com coolapp em execução, seguiremos um caminho semelhante ao que fizemos ao criar um ClusterOutput. No entanto, ao contrário de ClusterOutputs, criamos nosso Output no namespace da nossa aplicação.
apiVersion: logging.banzaicloud.io/v1beta1
kind: Output
metadata:
name: "devteam-splunk"
namespace: "devteam"
spec:
splunkHec:
hec_host: splunk.example.com
hec_port: 8088
protocol: http
Mais uma vez, vamos fornecer alguns logs ao nosso Output:
apiVersion: logging.banzaicloud.io/v1beta1
kind: Flow
metadata:
name: "devteam-logs"
namespace: "devteam"
spec:
localOutputRefs:
- "devteam-splunk"
Saída para Syslog
Vamos supor que você queira enviar todos os logs do seu cluster para um syslog servidor. Primeiro, criamos um ClusterOutput:
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterOutput
metadata:
name: "example-syslog"
namespace: "cattle-logging-system"
spec:
syslog:
buffer:
timekey: 30s
timekey_use_utc: true
timekey_wait: 10s
flush_interval: 5s
format:
type: json
app_name_field: test
host: syslog.example.com
insecure: true
port: 514
transport: tcp
Agora que configuramos para onde queremos que os logs vão, vamos configurar todos os logs para irem para aquele Output.
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterFlow
metadata:
name: "all-logs"
namespace: cattle-logging-system
spec:
globalOutputRefs:
- "example-syslog"
Saídas Não Suportadas
Para o exemplo final, criamos um Output para escrever logs em um destino que não é suportado por padrão:
|
Nota sobre syslog:
|
apiVersion: v1
kind: Secret
metadata:
name: syslog-config
namespace: cattle-logging-system
type: Opaque
stringData:
fluent-bit.conf: |
[INPUT]
Name forward
Port 24224
[OUTPUT]
Name syslog
InstanceName syslog-output
Match *
Addr syslog.example.com
Port 514
Cluster ranchers
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: fluentbit-syslog-forwarder
namespace: cattle-logging-system
labels:
output: syslog
spec:
selector:
matchLabels:
output: syslog
template:
metadata:
labels:
output: syslog
spec:
containers:
- name: fluentbit
image: paynejacob/fluent-bit-out-syslog:latest
ports:
- containerPort: 24224
volumeMounts:
- mountPath: "/fluent-bit/etc/"
name: configuration
volumes:
- name: configuration
secret:
secretName: syslog-config
---
apiVersion: v1
kind: Service
metadata:
name: syslog-forwarder
namespace: cattle-logging-system
spec:
selector:
output: syslog
ports:
- protocol: TCP
port: 24224
targetPort: 24224
---
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterFlow
metadata:
name: all-logs
namespace: cattle-logging-system
spec:
globalOutputRefs:
- syslog
---
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterOutput
metadata:
name: syslog
namespace: cattle-logging-system
spec:
forward:
servers:
- host: "syslog-forwarder.cattle-logging-system"
require_ack_response: false
ignore_network_errors_at_startup: false
Vamos analisar o que está acontecendo aqui. Primeiro, criamos uma implantação de um contêiner que possui o plugin adicional syslog e aceita logs encaminhados de outro fluentd. Em seguida, criamos um Output configurado como um encaminhador para nossa implantação. A implantação fluentd então encaminhará todos os logs para o destino syslog configurado.