प्रौद्योगिकी साझेदारी

ELK log collection--k8s क्लस्टर् मध्ये pod मोड् मध्ये चलन्तः अनुप्रयोगलॉग्स् संग्रहयन्तु

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


प्रस्तावना

Filebeat+ELK निर्माणं व्याख्या च सन्दर्भः
सम्बन्ध:k8s learning – k8s इत्यस्य आधारेण ELK log संग्रहणस्य विस्तृतप्रक्रिया
अस्मिन् अध्याये वर्णनं पुनः न भविष्यति

पर्यावरणम्‌

आभासी यन्त्र

इपCPU नामcpuस्मृतिहार्डडिस्क
192.168.10.11master01२cpu द्वयकोर४ग१००जी
192.168.10.12कार्यकर्ता01२cpu द्वयकोर४ग१००जी
192.168.10.13कार्यकर्ता02२cpu द्वयकोर४ग१००जी
192.168.10.17ELK१cpu द्वयकोर४ग१००जी

संस्करणं centos7.9
नियोजितः k8s-1.27
ELK सर्वरेण Filebeat+ELK परिनियोजितम् अस्ति

एतत् अनुप्रयोगे Pod मध्ये filebeat (sidecar) चालयित्वा कार्यान्वितं भवति अस्मिन् समये, Tomcat इत्यस्य उपयोगः उदाहरणरूपेण भविष्यति ।

1. tomcat data directory सज्जीकरोतु

पूर्वनिर्धारितरूपेण, tomcat पात्रे वेबसाइट् मुखपृष्ठसञ्चिका नास्ति तत् योजयितुं असफलता pod मध्ये पात्रं सामान्यतया चालयितुं असफलं भविष्यति ।

work01 होस्ट ऑपरेशन

mkdir /opt/tomcatwebroot
echo "tomcat is running" > /opt/tomcatwebroot/index.html
  • 1
  • 2

2. tomcat अनुप्रयोगसंसाधनसूचीसञ्चिकां लिखन्तु

master host operation

vim tomcat-logs.yaml
  • 1
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']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111

इदं 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82

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
  • 1
  • 2
  • 3
  • 4

व्याख्याति
metadata: ConfigMap इत्यस्य नाम परिभाषयति ।
data: इत्यत्र Filebeat इत्यस्य विन्याससामग्री (अत्र लोपिता) भवितुमर्हति ।

3. logstash विन्याससञ्चिकां लिखन्तु

elk host विन्यासः
पूर्वविन्याससञ्चिकाः प्रभावितं विना logstash विन्याससञ्चिकाः लिखन्तु

vim /etc/logstash/conf.d/tomcat-logstash-to-elastic.conf
  • 1
input {
  beats {
    host => "0.0.0.0"
    port => "5056"
  }
}

filter {

}


output {
    elasticsearch {
      hosts => "192.168.10.17:9200"
      index => "tomcat-catalina-%{+yyyy.MM.dd}"
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

धावनं करोतु

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/tomcat-logstash-to-elastic.conf --path.data /usr/share/logstash/data3 &
  • 1

पोर्ट् उपरि अस्ति इति सत्यापयन्तु

ss -anput | grep ":5056"
  • 1

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

4. tomcat संसाधनसूचीसञ्चिकां प्रयोजयन्तु

master host operation

kubectl apply -f tomcat-logs.yaml
  • 1

किञ्चित्कालं प्रतीक्ष्यताम् यतः भवद्भिः चित्रं डाउनलोड् कर्तव्यम्
ततः फलीम् अवलोकयन्तु
नोटः- VPN आवश्यकम्

kubectl get deployment.apps
kubectl get pods
  • 1
  • 2

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

5. Pod मध्ये tomcat तथा ​​filebeat सामान्यम् अस्ति वा इति सत्यापयन्तु

tomcat उत्पन्नं लॉग्स् (-c: container) पश्यन्तु
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
filebeat संग्रहस्य लॉग्स् पश्यन्तु

 kubectl logs tomcat-demo-664584f857-k8whd -c filebeat
  • 1

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

6. kiana पृष्ठे अनुक्रमणिका योजयन्तु

होस्ट ब्राउजर् अभिगमः

192.168.10.17:5601
  • 1

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
भवन्तः लॉगं दृष्टवन्तः इति द्रष्टुं शक्नुवन्ति
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
समापन
यदि भवतः सहायकं भवति तर्हि कृपया क्लिक् कृत्वा अनुसरणं कुर्वन्तु