2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Filebeat+ELK निर्माणं व्याख्या च सन्दर्भः
सम्बन्ध:k8s learning – k8s इत्यस्य आधारेण ELK log संग्रहणस्य विस्तृतप्रक्रिया
अस्मिन् अध्याये वर्णनं पुनः न भविष्यति
आभासी यन्त्र
इप | CPU नाम | cpu | स्मृति | हार्डडिस्क |
---|---|---|---|---|
192.168.10.11 | master01 | २cpu द्वयकोर | ४ग | १००जी |
192.168.10.12 | कार्यकर्ता01 | २cpu द्वयकोर | ४ग | १००जी |
192.168.10.13 | कार्यकर्ता02 | २cpu द्वयकोर | ४ग | १००जी |
192.168.10.17 | ELK | १cpu द्वयकोर | ४ग | १००जी |
संस्करणं centos7.9
नियोजितः k8s-1.27
ELK सर्वरेण Filebeat+ELK परिनियोजितम् अस्ति
एतत् अनुप्रयोगे Pod मध्ये filebeat (sidecar) चालयित्वा कार्यान्वितं भवति अस्मिन् समये, Tomcat इत्यस्य उपयोगः उदाहरणरूपेण भविष्यति ।
पूर्वनिर्धारितरूपेण, tomcat पात्रे वेबसाइट् मुखपृष्ठसञ्चिका नास्ति तत् योजयितुं असफलता pod मध्ये पात्रं सामान्यतया चालयितुं असफलं भविष्यति ।
work01 होस्ट ऑपरेशन
mkdir /opt/tomcatwebroot
echo "tomcat is running" > /opt/tomcatwebroot/index.html
master host operation
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
metadata: Deployment इत्यस्य नाम नामस्थानं च परिभाषयति ।
spec: Deployment इत्यस्य विस्तृतं विनिर्देशं समाविष्टम् अस्ति ।
replicas: प्रतिकृतीनां संख्यां निर्दिशति, अर्थात् Tomcat दृष्टान्तद्वयं चालयति ।
selector: Pod लेबल् मेलयितुम् एकं चयनकर्ता परिभाषयति ।
template: Pod टेम्पलेट् इत्यस्य वर्णनं करोति, यत्र मेटाडाटा तथा spec च सन्ति ।
nodeName: नोड् नाम (worker01) निर्दिशति यत्र Pod चाल्यते ।
containers: द्वौ पात्रौ परिभाषितौ स्तः: Tomcat तथा Filebeat ।
टॉमकैट् पात्रम् : १.
image: tomcat:latest इमेज इत्यस्य उपयोगं कुर्वन्तु।
पोर्ट्स्: पोर्ट् 8080 उजागरयन्तु।
resources: संसाधनानाम् अनुरोधं सीमां च परिभाषयति।
livenessProbe and readinessProbe: स्वास्थ्यपरीक्षायै उपयुज्यते।
volumeMounts: द्वौ खण्डौ माउण्ट् भवतः ।
सञ्चिकाबीट् पात्रम् : १.
चित्रम्: filebeat:7.17.2 चित्रस्य उपयोगं कुर्वन्तु ।
args: आरम्भमापदण्डान् निर्दिशति ।
resources: संसाधनानाम् अनुरोधं सीमां च परिभाषयति।
securityContext: मूलप्रयोक्तृरूपेण चालयन्तु।
volumeMounts: द्वौ खण्डौ माउण्ट् भवतः ।
खण्डाः : १.
tomcat-logs: emptyDir खण्डानां उपयोगं कुर्वन्तु ।
tomcatwebroot: hostPath आयतनस्य उपयोगं कुर्वन्तु।
filebeat-config: ConfigMap खण्डानां उपयोगं कुर्वन्तु ।
विन्याससञ्चिका (ConfigMap) विभागः
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
व्याख्याति
metadata: ConfigMap इत्यस्य नाम परिभाषयति ।
data: इत्यत्र Filebeat इत्यस्य विन्याससामग्री (अत्र लोपिता) भवितुमर्हति ।
elk host विन्यासः
पूर्वविन्याससञ्चिकाः प्रभावितं विना 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"
master host operation
kubectl apply -f tomcat-logs.yaml
किञ्चित्कालं प्रतीक्ष्यताम् यतः भवद्भिः चित्रं डाउनलोड् कर्तव्यम्
ततः फलीम् अवलोकयन्तु
नोटः- VPN आवश्यकम्
kubectl get deployment.apps
kubectl get pods
tomcat उत्पन्नं लॉग्स् (-c: container) पश्यन्तु
filebeat संग्रहस्य लॉग्स् पश्यन्तु
kubectl logs tomcat-demo-664584f857-k8whd -c filebeat
होस्ट ब्राउजर् अभिगमः
192.168.10.17:5601
भवन्तः लॉगं दृष्टवन्तः इति द्रष्टुं शक्नुवन्ति
समापन
यदि भवतः सहायकं भवति तर्हि कृपया क्लिक् कृत्वा अनुसरणं कुर्वन्तु