моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Справочник по построению и интерпретации Filebeat+ELK
Связь:Обучение k8s — подробный процесс сбора журналов ELK на основе k8s
В этой главе не будет повторяться описание
виртуальная машина
ИП | Имя процессора | Процессор | Память | жесткий диск |
---|---|---|---|---|
192.168.10.11 | мастер01 | 2 процессора, двухъядерный | 4G | 100г |
192.168.10.12 | работник01 | 2 процессора, двухъядерный | 4G | 100г |
192.168.10.13 | работник02 | 2 процессора, двухъядерный | 4G | 100г |
192.168.10.17 | ЛОСЬ | 1 процессор, двухъядерный | 4G | 100г |
Версия центос7.9
Развернут к8с-1.27
Сервер ELK развернул Filebeat+ELK.
Это реализуется путем запуска filebeat (sidecar) в приложении Pod. На этот раз в качестве примера будет использоваться Tomcat.
По умолчанию в контейнере tomcat нет файла домашней страницы веб-сайта. Если его не добавить, контейнер в модуле не сможет работать нормально.
работа хоста work01
mkdir /opt/tomcatwebroot
echo "tomcat is running" > /opt/tomcatwebroot/index.html
операция главного хоста
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']
Этот yaml определяет файлы конфигурации Tomcat и Filebeat Deployment и Filebeat. Давайте объясним их по очереди.
Раздел развертывания
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
метаданные: определяют имя и пространство имен развертывания.
spec: Содержит подробную спецификацию развертывания.
реплики: указывает количество реплик, то есть запуск двух экземпляров Tomcat.
селектор: определяет селектор для сопоставления меток пода.
шаблон: описывает шаблон Pod, включая метаданные и спецификации.
nodeName: указывает имя узла (worker01), на котором работает модуль.
контейнеры: определены два контейнера: Tomcat и Filebeat.
Контейнер Tomcat:
изображение: используйте tomcat:latest image.
порты: откройте порт 8080.
ресурсы: определяет запросы и ограничения ресурсов.
livenessProbe и readinessProbe: используются для проверки работоспособности.
VolumeMounts: монтируются два тома.
Контейнер Filebeat:
изображение: используйте filebeat:7.17.2 image.
args: определяет параметры запуска.
ресурсы: определяет запросы и ограничения ресурсов.
SecurityContext: Запуск от имени пользователя root.
VolumeMounts: монтируются два тома.
Объемы:
tomcat-logs: используйте тома пустого каталога.
tomcatwebroot: используйте том hostPath.
filebeat-config: использовать тома ConfigMap.
Раздел файла конфигурации (ConfigMap)
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
объяснять
метаданные: определяет имя ConfigMap.
data: должен содержать содержимое конфигурации Filebeat (здесь опущено).
конфигурация хоста Elk
Запись файлов конфигурации logstash, не затрагивая предыдущие файлы конфигурации.
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}"
}
}
бегать
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/tomcat-logstash-to-elastic.conf --path.data /usr/share/logstash/data3 &
Убедитесь, что порт работает
ss -anput | grep ":5056"
операция главного хоста
kubectl apply -f tomcat-logs.yaml
Подождите немного, потому что вам нужно скачать изображение
Затем проверьте модуль
Примечание. Требуется VPN.
kubectl get deployment.apps
kubectl get pods
Просмотр журналов, созданных Tomcat (-c: контейнер)
Просмотр журналов сбора файлов filebeat
kubectl logs tomcat-demo-664584f857-k8whd -c filebeat
Доступ через хост-браузер
192.168.10.17:5601
Вы можете видеть, что вы видели журнал
Заканчивать
Если это вам помогло, пожалуйста, нажмите и следуйте