minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Referência de construção e interpretação do Filebeat+ELK
Link:Aprendizagem k8s – processo detalhado de coleta de log ELK baseado em k8s
Este capítulo não repetirá a descrição
máquina virtual
IP-Importante | Nome da CPU | CPU | Memória | disco rígido |
---|---|---|---|---|
192.168.10.11 | mestre01 | 2 CPUs dual core | 4G | 100G |
192.168.10.12 | trabalhador01 | 2 CPUs dual core | 4G | 100G |
192.168.10.13 | trabalhador02 | 2 CPUs dual core | 4G | 100G |
192.168.10.17 | Alce | 1 CPU dual core | 4G | 100G |
Versão centos7.9
Implantado k8s-1.27
O servidor ELK implementou o Filebeat+ELK
Ele é implementado executando filebeat (sidecar) no pod do aplicativo. Desta vez, o Tomcat será usado como exemplo para ilustrar.
Por padrão, não há arquivo de página inicial do site no contêiner do Tomcat. Se não for adicionado, o contêiner no pod não funcionará normalmente.
operação de host work01
mkdir /opt/tomcatwebroot
echo "tomcat is running" > /opt/tomcatwebroot/index.html
operação de host mestre
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']
Este yaml define uma implantação do Tomcat e do Filebeat e arquivos de configuração do Filebeat. Vamos explicá-los separadamente.
Seção de implantação
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
metadados: define o nome e o namespace da implantação.
spec: Contém a especificação detalhada da implantação.
réplicas: especifica o número de réplicas, ou seja, executando duas instâncias do Tomcat.
seletor: define um seletor para rótulos de pod correspondentes.
template: descreve o modelo do pod, incluindo metadados e especificações.
nodeName: especifica o nome do nó (worker01) onde o pod está sendo executado.
containers: Dois containers são definidos: Tomcat e Filebeat.
Contêiner Tomcat:
imagem: Use tomcat: imagem mais recente.
portas: exponha a porta 8080.
recursos: define solicitações e limites de recursos.
livenessProbe e readinessProbe: usados para verificações de integridade.
volumeMounts: Dois volumes são montados.
Contêiner Filebeat:
imagem: Use a imagem filebeat:7.17.2.
args: especifica parâmetros de inicialização.
recursos: define solicitações e limites de recursos.
securityContext: execute como usuário root.
volumeMounts: Dois volumes são montados.
volumes:
tomcat-logs: Use volumes vaziosDir.
tomcatwebroot: Use o volume hostPath.
filebeat-config: Use volumes ConfigMap.
Seção do arquivo de configuração (ConfigMap)
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
explicar
metadados: define o nome do ConfigMap.
data: deve conter o conteúdo de configuração do Filebeat (omitido aqui).
configuração do host elk
Grave arquivos de configuração logstash sem afetar os arquivos de configuração anteriores
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}"
}
}
correr
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/tomcat-logstash-to-elastic.conf --path.data /usr/share/logstash/data3 &
Verifique se a porta está ativa
ss -anput | grep ":5056"
operação de host mestre
kubectl apply -f tomcat-logs.yaml
Espere um pouco porque você precisa baixar a imagem
Então verifique o pod
Nota: VPN necessária
kubectl get deployment.apps
kubectl get pods
Ver logs gerados pelo Tomcat (-c: container)
Ver logs de coleta do filebeat
kubectl logs tomcat-demo-664584f857-k8whd -c filebeat
Acesso ao navegador host
192.168.10.17:5601
Você pode ver que viu o log
Terminar
Se isso te ajudar, por favor clique e siga