10.11. Transmission des journaux à l'aide du protocole syslog
Vous pouvez utiliser le protocole syslog RFC3164 ou RFC5424 pour envoyer une copie de vos journaux à un agrégateur de journaux externe configuré pour accepter le protocole à la place ou en plus du magasin de journaux Elasticsearch par défaut. Vous êtes responsable de la configuration de l'agrégateur de journaux externe, tel qu'un serveur syslog, pour recevoir les journaux d'OpenShift Container Platform.
Pour configurer la transmission des journaux à l'aide du protocole syslog, vous devez créer une ressource personnalisée (CR) ClusterLogForwarder
avec une ou plusieurs sorties vers les serveurs syslog, et des pipelines qui utilisent ces sorties. La sortie syslog peut utiliser une connexion UDP, TCP ou TLS.
Vous pouvez également utiliser une carte de configuration pour transmettre les journaux en utilisant les protocoles syslog RFC3164. Cependant, cette méthode est obsolète dans OpenShift Container Platform et sera supprimée dans une prochaine version.
Conditions préalables
- Vous devez disposer d'un serveur de journalisation configuré pour recevoir les données de journalisation à l'aide du protocole ou du format spécifié.
Procédure
Créez ou modifiez un fichier YAML qui définit l'objet
ClusterLogForwarder
CR :apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: name: instance 1 namespace: openshift-logging 2 spec: outputs: - name: rsyslog-east 3 type: syslog 4 syslog: 5 facility: local0 rfc: RFC3164 payloadKey: message severity: informational url: 'tls://rsyslogserver.east.example.com:514' 6 secret: 7 name: syslog-secret - name: rsyslog-west type: syslog syslog: appName: myapp facility: user msgID: mymsg procID: myproc rfc: RFC5424 severity: debug url: 'udp://rsyslogserver.west.example.com:514' pipelines: - name: syslog-east 8 inputRefs: 9 - audit - application outputRefs: 10 - rsyslog-east - default 11 parse: json 12 labels: secure: "true" 13 syslog: "east" - name: syslog-west 14 inputRefs: - infrastructure outputRefs: - rsyslog-west - default labels: syslog: "west"
- 1
- Le nom du CR
ClusterLogForwarder
doit êtreinstance
. - 2
- L'espace de noms pour le CR
ClusterLogForwarder
doit êtreopenshift-logging
. - 3
- Spécifiez un nom pour la sortie.
- 4
- Spécifiez le type de
syslog
. - 5
- En option : Spécifiez les paramètres syslog, énumérés ci-dessous.
- 6
- Spécifiez l'URL et le port de l'instance syslog externe. Vous pouvez utiliser le protocole
udp
(non sécurisé),tcp
(non sécurisé) outls
(TCP sécurisé). Si le proxy à l'échelle du cluster utilisant l'annotation CIDR est activé, la sortie doit être un nom de serveur ou un FQDN, et non une adresse IP. - 7
- Si vous utilisez un préfixe
tls
, vous devez spécifier le nom du secret requis par le point de terminaison pour la communication TLS. Le secret doit exister dans le projetopenshift-logging
et doit avoir des clés de : tls.crt, tls.key, et ca-bundle.crt qui pointent vers les certificats respectifs qu'elles représentent. - 8
- Facultatif : Spécifiez un nom pour le pipeline.
- 9
- Spécifiez les types de journaux à transférer en utilisant le pipeline :
application,
infrastructure
ouaudit
. - 10
- Spécifiez le nom de la sortie à utiliser lors du transfert des journaux avec ce pipeline.
- 11
- Facultatif : Spécifiez la sortie
default
pour transmettre les journaux à l'instance Elasticsearch interne. - 12
- Facultatif : Indiquez si les entrées de log JSON structurées doivent être transmises en tant qu'objets JSON dans le champ
structured
. L'entrée de log doit contenir du JSON structuré valide ; sinon, OpenShift Logging supprime le champstructured
et envoie l'entrée de log à l'index par défaut,app-00000x
. - 13
- Facultatif : Chaîne. Une ou plusieurs étiquettes à ajouter aux journaux. Citez des valeurs comme "true" pour qu'elles soient reconnues comme des chaînes de caractères et non comme des booléens.
- 14
- Facultatif : Configurez plusieurs sorties pour transmettre les journaux à d'autres agrégateurs de journaux externes, quel que soit le type pris en charge :
- Un nom pour décrire le pipeline.
-
L'adresse
inputRefs
est le type de journal à transmettre en utilisant le pipeline :application,
infrastructure
, ouaudit
. -
outputRefs
est le nom de la sortie à utiliser. - Facultatif : Chaîne. Une ou plusieurs étiquettes à ajouter aux journaux.
Créer l'objet CR :
oc create -f <nom-de-fichier>.yaml
10.11.1. Ajout d'informations sur la source du journal à la sortie du message
Vous pouvez ajouter les éléments namespace_name
, pod_name
et container_name
au champ message
de l'enregistrement en ajoutant le champ AddLogSource
à votre ressource personnalisée (CR) ClusterLogForwarder
.
spec: outputs: - name: syslogout syslog: addLogSource: true facility: user payloadKey: message rfc: RFC3164 severity: debug tag: mytag type: syslog url: tls://syslog-receiver.openshift-logging.svc:24224 pipelines: - inputRefs: - application name: test-app outputRefs: - syslogout
Cette configuration est compatible avec les normes RFC3164 et RFC5424.
Exemple de message syslog sans AddLogSource
<15>1 2020-11-15T17:06:14+00:00 fluentd-9hkb4 mytag - - - {"msgcontent"=>"Message Contents", "timestamp"=>"2020-11-15 17:06:09", "tag_key"=>"rec_tag", "index"=>56}
Exemple de sortie de message syslog avec AddLogSource
<15>1 2020-11-16T10:49:37+00:00 crc-j55b9-master-0 mytag - - - namespace_name=clo-test-6327,pod_name=log-generator-ff9746c49-qxm7l,container_name=log-generator,message={"msgcontent":"My life is my message", "timestamp":"2020-11-16 10:49:36", "tag_key":"rec_tag", "index":76}
10.11.2. Paramètres Syslog
Vous pouvez configurer les éléments suivants pour les sorties de syslog
. Pour plus d'informations, voir le RFC syslog RFC3164 ou RFC5424.
facility : L'installation syslog. La valeur peut être un entier décimal ou un mot-clé insensible à la casse :
-
0
oukern
pour les messages du noyau -
1
ouuser
pour les messages de niveau utilisateur, la valeur par défaut. -
2
oumail
pour le système de messagerie -
3
oudaemon
pour les démons du système -
4
ouauth
pour les messages de sécurité/authentification -
5
ousyslog
pour les messages générés en interne par syslogd -
6
oulpr
pour le sous-système d'impression de ligne -
7
ounews
pour le sous-système d'information en réseau -
8
ouuucp
pour le sous-système UUCP -
9
oucron
pour le démon de l'horloge -
10
ouauthpriv
pour les messages d'authentification de sécurité -
11
ouftp
pour le démon FTP -
12
ountp
pour le sous-système NTP -
13
ousecurity
pour le journal d'audit syslog -
14
ouconsole
pour le journal d'alerte syslog -
15
ousolaris-cron
pour le démon de planification -
16
-23
oulocal0
-local7
pour les installations utilisées localement
-
Facultatif :
payloadKey
: Le champ d'enregistrement à utiliser comme charge utile pour le message syslog.NoteLa configuration du paramètre
payloadKey
empêche les autres paramètres d'être transmis au syslog.- rfc : Le RFC à utiliser pour l'envoi de journaux via syslog. La valeur par défaut est RFC5424.
severity (gravité) : La gravité syslog à définir sur les enregistrements syslog sortants. La valeur peut être un entier décimal ou un mot-clé insensible à la casse :
-
0
ouEmergency
pour les messages indiquant que le système est inutilisable -
1
ouAlert
pour les messages indiquant qu'une action doit être entreprise immédiatement -
2
ouCritical
pour les messages indiquant des conditions critiques -
3
ouError
pour les messages indiquant des conditions d'erreur -
4
ouWarning
pour les messages indiquant des conditions d'alerte -
5
ouNotice
pour les messages indiquant des conditions normales mais significatives -
6
ouInformational
pour les messages d'information -
7
ouDebug
pour les messages indiquant des messages de niveau débogage, la valeur par défaut est
-
- tag : Tag spécifie un champ d'enregistrement à utiliser comme tag sur le message syslog.
- trimPrefix : Supprime le préfixe spécifié de la balise.
10.11.3. Paramètres syslog supplémentaires RFC5424
Les paramètres suivants s'appliquent à RFC5424 :
-
appName : APP-NAME est une chaîne de texte libre qui identifie l'application qui a envoyé le journal. Doit être spécifié pour
RFC5424
. -
msgID : Le MSGID est une chaîne de texte libre qui identifie le type de message. Doit être spécifié pour
RFC5424
. -
procID : Le PROCID est une chaîne de texte libre. Un changement de valeur indique une discontinuité dans les rapports syslog. Doit être spécifié pour
RFC5424
.