Κοινή χρήση τεχνολογίας

Συλλογή αρχείων καταγραφής ELK--Συλλέξτε αρχεία καταγραφής εφαρμογών που εκτελούνται σε λειτουργία pod στο σύμπλεγμα k8s

2024-07-12

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


Πρόλογος

Αναφορά κατασκευής και ερμηνείας Filebeat+ELK
Σύνδεσμος:Εκμάθηση k8s – λεπτομερής διαδικασία συλλογής αρχείων καταγραφής ELK με βάση τα k8s
Αυτό το κεφάλαιο δεν θα επαναλάβει την περιγραφή

περιβάλλον

εικονική μηχανή

IpΌνομα CPUΕΠΕΞΕΡΓΑΣΤΗΣΜνήμησκληρός δίσκος
192.168.10.11master012cpu διπλού πυρήνα4G100 γρ
192.168.10.12εργάτης012cpu διπλού πυρήνα4G100 γρ
192.168.10.13εργάτης022cpu διπλού πυρήνα4G100 γρ
192.168.10.17ΜΕΓΑΛΗ ΕΛΑΦΟΣ1cpu διπλού πυρήνα4G100 γρ

Έκδοση centos7.9
Αναπτύχθηκε k8s-1.27
Ο διακομιστής ELK έχει αναπτύξει το Filebeat+ELK

Υλοποιείται εκτελώντας το filebeat (sidecar) στην εφαρμογή Pod Αυτή τη φορά, το Tomcat θα χρησιμοποιηθεί ως παράδειγμα.

1. Προετοιμάστε τον κατάλογο δεδομένων tomcat

Από προεπιλογή, δεν υπάρχει αρχείο αρχικής σελίδας ιστότοπου στο κοντέινερ Tomcat Εάν δεν το προσθέσετε, το κοντέινερ στο pod δεν θα λειτουργήσει κανονικά.

λειτουργία κεντρικού υπολογιστή work01

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

2. Γράψτε το αρχείο λίστας πόρων εφαρμογής Tomcat

κύρια λειτουργία κεντρικού υπολογιστή

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

μεταδεδομένα: ορίζει το όνομα και τον χώρο ονομάτων της Ανάπτυξης.
spec: Περιέχει τις λεπτομερείς προδιαγραφές της Ανάπτυξης.
replicas: καθορίζει τον αριθμό των αντιγράφων, δηλαδή την εκτέλεση δύο παρουσιών Tomcat.
επιλογέας: ορίζει έναν επιλογέα για αντιστοίχιση ετικετών Pod.
πρότυπο: περιγράφει το πρότυπο Pod, συμπεριλαμβανομένων των μεταδεδομένων και των προδιαγραφών.
nodeName: καθορίζει το όνομα του κόμβου (worker01) όπου εκτελείται το Pod.
κοντέινερ: Ορίζονται δύο κοντέινερ: Tomcat και Filebeat.

Δοχείο Tomcat:
εικόνα: Χρησιμοποιήστε το tomcat:πιο πρόσφατη εικόνα.
θύρες: Εκθέστε τη θύρα 8080.
πόροι: Καθορίζει τα αιτήματα και τα όρια πόρων.
livenessProbe και ReadinessProbe: χρησιμοποιείται για υγειονομικούς ελέγχους.
volumeMounts: Έχουν τοποθετηθεί δύο τόμοι.

Κοντέινερ Filebeat:
image: Χρησιμοποιήστε filebeat:7.17.2 image.
args: Καθορίζει τις παραμέτρους εκκίνησης.
πόροι: Καθορίζει τα αιτήματα και τα όρια πόρων.
SecurityContext: Εκτελείται ως χρήστης root.
volumeMounts: Έχουν τοποθετηθεί δύο τόμοι.

τόμοι:
tomcat-logs: Χρησιμοποιήστε κενούς τόμουςDir.
tomcatwebroot: Χρησιμοποιήστε τον τόμο hostPath.
filebeat-config: Χρησιμοποιήστε τόμους ConfigMap.


Ενότητα αρχείου διαμόρφωσης (ConfigMap).

apiVersion: v1
kind: ConfigMap
metadata:
  name: filebeat-config
  • 1
  • 2
  • 3
  • 4

εξηγώ
μεταδεδομένα: ορίζει το όνομα του ConfigMap.
δεδομένα: πρέπει να περιέχει το περιεχόμενο διαμόρφωσης του Filebeat (παραλείπεται εδώ).

3. Γράψτε το αρχείο διαμόρφωσης logstash

διαμόρφωση κεντρικού υπολογιστή elk
Γράψτε αρχεία διαμόρφωσης 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

κύρια λειτουργία κεντρικού υπολογιστή

kubectl apply -f tomcat-logs.yaml
  • 1

Περιμένετε λίγο γιατί πρέπει να κάνετε λήψη της εικόνας
Στη συνέχεια, ελέγξτε το λοβό
Σημείωση: Απαιτείται VPN

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

Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ

5. Βεβαιωθείτε ότι το tomcat και το filebeat στο Pod είναι φυσιολογικά

Προβολή αρχείων καταγραφής που δημιουργήθηκαν από tomcat (-c: κοντέινερ)
Εισαγάγετε την περιγραφή της εικόνας εδώ
Προβολή αρχείων καταγραφής συλλογής αρχείου

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

Εισαγάγετε την περιγραφή της εικόνας εδώ

6. Προσθήκη ευρετηρίου στη σελίδα kiana

Πρόσβαση στο πρόγραμμα περιήγησης κεντρικού υπολογιστή

192.168.10.17:5601
  • 1

Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ
Μπορείτε να δείτε ότι έχετε δει το αρχείο καταγραφής
Εισαγάγετε την περιγραφή της εικόνας εδώ
Φινίρισμα
Εάν σας βοηθά, κάντε κλικ και ακολουθήστε