2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Référence de construction et d'interprétation Filebeat+ELK
Lien:Apprentissage k8s - processus détaillé de collecte de journaux ELK basé sur k8s
Ce chapitre ne répétera pas la description
machine virtuelle
Ip | Nom du processeur | CPU | Mémoire | disque dur |
---|---|---|---|---|
192.168.10.11 | maître01 | 2 processeurs double cœur | 4G | 100G |
192.168.10.12 | travailleur01 | 2 processeurs double cœur | 4G | 100G |
192.168.10.13 | travailleur02 | 2 processeurs double cœur | 4G | 100G |
192.168.10.17 | WAPITI | 1 processeur double cœur | 4G | 100G |
Version centos7.9
K8s-1.27 déployé
Le serveur ELK a déployé Filebeat+ELK
Il est implémenté en exécutant filebeat (sidecar) dans le Pod de l'application. Cette fois, Tomcat sera utilisé comme exemple pour illustrer.
Par défaut, il n'y a pas de fichier de page d'accueil du site Web dans le conteneur Tomcat. Si vous ne l'ajoutez pas, le conteneur dans le pod ne fonctionnera pas normalement.
opération de l'hôte work01
mkdir /opt/tomcatwebroot
echo "tomcat is running" > /opt/tomcatwebroot/index.html
fonctionnement de l'hôte maître
vim tomcat-logs.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-demo
namespace: default
spec:
replicas: 2
selector:
matchLabels:
project: www
app: tomcat-demo
template:
metadata:
labels:
project: www
app: tomcat-demo
spec:
nodeName: worker01
containers:
- name: tomcat
image: tomcat:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: web
protocol: TCP
resources:
requests:
cpu: 0.5
memory: 500Mi
limits:
cpu: 1
memory: 1Gi
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 20
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 20
volumeMounts:
- name: tomcat-logs
mountPath: /usr/local/tomcat/logs
- name: tomcatwebroot
mountPath: /usr/local/tomcat/webapps/ROOT
- name: filebeat
image: docker.io/elastic/filebeat:7.17.2
imagePullPolicy: IfNotPresent
args: [
"-c", "/etc/filebeat.yml",
"-e",
]
resources:
limits:
memory: 500Mi
requests:
cpu: 100m
memory: 100Mi
securityContext:
runAsUser: 0
volumeMounts:
- name: filebeat-config
mountPath: /etc/filebeat.yml
subPath: filebeat.yml
- name: tomcat-logs
mountPath: /usr/local/tomcat/logs
volumes:
- name: tomcat-logs
emptyDir: {}
- name: tomcatwebroot
hostPath:
path: /opt/tomcatwebroot
type: Directory
- name: filebeat-config
configMap:
name: filebeat-config
---
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
namespace: default
data:
filebeat.yml: |-
filebeat.inputs:
- type: log
paths:
- /usr/local/tomcat/logs/catalina.*
fields:
app: www
type: tomcat-catalina
fields_under_root: true
multiline:
pattern: '^['
negate: true
match: after
setup.ilm.enabled: false
setup.template.name: "tomcat-catalina"
setup.template.pattern: "tomcat-catalina-*"
output.logstash:
hosts: ['192.168.10.17:5056']
Ce yaml définit un fichier de configuration Tomcat et Filebeat Deployment et Filebeat. Expliquons-les tour à tour.
Section Déploiement
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-demo
namespace: default
spec:
replicas: 2
selector:
matchLabels:
project: www
app: tomcat-demo
template:
metadata:
labels:
project: www
app: tomcat-demo
spec:
nodeName: worker01
containers:
- name: tomcat
image: tomcat:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: web
protocol: TCP
resources:
requests:
cpu: 0.5
memory: 500Mi
limits:
cpu: 1
memory: 1Gi
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 20
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 20
volumeMounts:
- name: tomcat-logs
mountPath: /usr/local/tomcat/logs
- name: tomcatwebroot
mountPath: /usr/local/tomcat/webapps/ROOT
- name: filebeat
image: docker.io/elastic/filebeat:7.17.2
imagePullPolicy: IfNotPresent
args: [
"-c", "/etc/filebeat.yml",
"-e",
]
resources:
limits:
memory: 500Mi
requests:
cpu: 100m
memory: 100Mi
securityContext:
runAsUser: 0
volumeMounts:
- name: filebeat-config
mountPath: /etc/filebeat.yml
subPath: filebeat.yml
- name: tomcat-logs
mountPath: /usr/local/tomcat/logs
volumes:
- name: tomcat-logs
emptyDir: {}
- name: tomcatwebroot
hostPath:
path: /opt/tomcatwebroot
type: Directory
- name: filebeat-config
configMap:
name: filebeat-config
métadonnées : définit le nom et l'espace de noms du déploiement.
spec : contient la spécification détaillée du déploiement.
répliques : spécifie le nombre de répliques, c'est-à-dire exécutant deux instances Tomcat.
sélecteur : définit un sélecteur pour faire correspondre les étiquettes de pod.
modèle : décrit le modèle de pod, y compris les métadonnées et les spécifications.
nodeName : spécifie le nom du nœud (worker01) sur lequel le Pod est exécuté.
conteneurs : Deux conteneurs sont définis : Tomcat et Filebeat.
Conteneur Tomcat :
image : utilisez Tomcat : dernière image.
ports : exposez le port 8080.
ressources : définit les demandes et les limites de ressources.
livenessProbe et readinessProbe : utilisés pour les contrôles de santé.
volumeMounts : deux volumes sont montés.
Conteneur Filebeat :
image : utilisez filebeat:7.17.2 image.
args : spécifie les paramètres de démarrage.
ressources : définit les demandes et les limites de ressources.
securityContext : exécuter en tant qu'utilisateur root.
volumeMounts : deux volumes sont montés.
tomes:
tomcat-logs : utilisez les volumes emptyDir.
tomcatwebroot : utilisez le volume hostPath.
filebeat-config : utilisez les volumes ConfigMap.
Section Fichier de configuration (ConfigMap)
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
expliquer
métadonnées : définit le nom de ConfigMap.
data : doit contenir le contenu de configuration de Filebeat (omis ici).
configuration de l'hôte wapiti
Écrire des fichiers de configuration logstash sans affecter les fichiers de configuration précédents
vim /etc/logstash/conf.d/tomcat-logstash-to-elastic.conf
input {
beats {
host => "0.0.0.0"
port => "5056"
}
}
filter {
}
output {
elasticsearch {
hosts => "192.168.10.17:9200"
index => "tomcat-catalina-%{+yyyy.MM.dd}"
}
}
courir
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/tomcat-logstash-to-elastic.conf --path.data /usr/share/logstash/data3 &
Vérifiez que le port est actif
ss -anput | grep ":5056"
fonctionnement de l'hôte maître
kubectl apply -f tomcat-logs.yaml
Attendez un peu car vous devez télécharger l'image
Ensuite, vérifiez le pod
Remarque : VPN requis
kubectl get deployment.apps
kubectl get pods
Afficher les journaux générés par Tomcat (-c : conteneur)
Afficher les journaux de collecte filebeat
kubectl logs tomcat-demo-664584f857-k8whd -c filebeat
Accès au navigateur hôte
192.168.10.17:5601
Vous pouvez voir que vous avez vu le journal
Finition
Si cela vous aide, veuillez cliquer et suivre