le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Riferimento per la costruzione e l'interpretazione di Filebeat+ELK
Collegamento:Apprendimento k8s: processo dettagliato di raccolta dei registri ELK basato su k8s
Questo capitolo non ripeterà la descrizione
macchina virtuale
Io sono | Nome della CPU | processore | Memoria | disco rigido |
---|---|---|---|---|
192.168.10.11 | maestro01 | Dualcore da 2 CPU | 4G | 100 GRAMMI |
192.168.10.12 | lavoratore01 | Dualcore da 2 CPU | 4G | 100 GRAMMI |
192.168.10.13 | lavoratore02 | Dualcore da 2 CPU | 4G | 100 GRAMMI |
192.168.10.17 | ALCE | Dual core da 1 CPU | 4G | 100 GRAMMI |
Versione centos7.9
Distribuito k8s-1.27
Il server ELK ha distribuito Filebeat+ELK
Viene implementato eseguendo filebeat (sidecar) nell'applicazione Pod. Questa volta, Tomcat verrà utilizzato come esempio per illustrare.
Per impostazione predefinita, nel contenitore Tomcat non è presente alcun file della home page del sito Web. La mancata aggiunta del contenitore impedirà il normale funzionamento del contenitore nel pod.
operazione host work01
mkdir /opt/tomcatwebroot
echo "tomcat is running" > /opt/tomcatwebroot/index.html
operazione dell'host principale
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']
Questo yaml definisce i file di distribuzione Tomcat e Filebeat e di configurazione Filebeat.
Sezione di distribuzione
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
metadati: definisce il nome e lo spazio dei nomi del Deployment.
spec: contiene le specifiche dettagliate del Deployment.
repliche: specifica il numero di repliche, ovvero l'esecuzione di due istanze Tomcat.
selettore: definisce un selettore per la corrispondenza delle etichette dei pod.
modello: descrive il modello del pod, inclusi metadati e specifiche.
nodeName: specifica il nome del nodo (worker01) su cui è in esecuzione il pod.
contenitori: sono definiti due contenitori: Tomcat e Filebeat.
Contenitore Tomcat:
immagine: utilizza Tomcat: immagine più recente.
porte: esporre la porta 8080.
risorse: definisce le richieste e i limiti delle risorse.
livenessProbe e readinessProbe: utilizzati per i controlli di integrità.
volumeMounts: vengono montati due volumi.
Contenitore Filebeat:
immagine: usa filebeat:7.17.2 immagine.
args: specifica i parametri di avvio.
risorse: definisce le richieste e i limiti delle risorse.
securityContext: esegui come utente root.
volumeMounts: vengono montati due volumi.
volumi:
Tomcat-logs: utilizza volumi emptyDir.
tomcatwebroot: utilizza il volume hostPath.
filebeat-config: utilizza i volumi ConfigMap.
Sezione del file di configurazione (ConfigMap).
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
spiegare
metadati: definisce il nome di ConfigMap.
dati: dovrebbe contenere il contenuto della configurazione di Filebeat (omesso qui).
configurazione dell'host Elk
Scrivi file di configurazione logstash senza influenzare i file di configurazione precedenti
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}"
}
}
correre
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/tomcat-logstash-to-elastic.conf --path.data /usr/share/logstash/data3 &
Verificare che la porta sia attiva
ss -anput | grep ":5056"
operazione dell'host principale
kubectl apply -f tomcat-logs.yaml
Aspetta un po' perché devi scaricare l'immagine
Quindi controlla il pod
Nota: è richiesta una VPN
kubectl get deployment.apps
kubectl get pods
Visualizza i log generati da Tomcat (-c: contenitore)
Visualizza i registri della raccolta filebeat
kubectl logs tomcat-demo-664584f857-k8whd -c filebeat
Accesso al browser host
192.168.10.17:5601
Puoi vedere che hai visto il registro
Fine
Se ti è d'aiuto clicca e segui