Teknologian jakaminen

ELK-lokikokoelma – Kerää pod-tilassa k8s-klusterissa käynnissä olevia sovelluslokeja

2024-07-12

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


Esipuhe

Filebeat+ELK rakenne- ja tulkintaviite
Linkki:k8s-oppiminen – yksityiskohtainen ELK-lokinkeruuprosessi k8s-pohjaisena
Tämä luku ei toista kuvausta

ympäristöön

virtuaalikone

IpCPU:n nimiprosessoriMuistikiintolevy
192.168.10.11mestari012 cpu kaksiytiminen4G100G
192.168.10.12työntekijä012 cpu kaksiytiminen4G100G
192.168.10.13työntekijä022 cpu kaksiytiminen4G100G
192.168.10.17HIRVI1 cpu kaksiytiminen4G100G

Versio centos7.9
K8s-1.27 käytössä
ELK-palvelin on ottanut käyttöön Filebeat+ELK:n

Se on toteutettu suorittamalla filebeat (sivuvaunu) sovelluksessa Pod Tällä kertaa havainnollistamiseen käytetään Tomcatia.

1. Valmistele tomcat-tietohakemisto

Oletuksena tomcat-säilössä ei ole verkkosivuston kotisivutiedostoa. Jos sitä ei lisätä, kotelossa oleva säilö ei toimi normaalisti.

work01 isäntätoiminto

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

2. Kirjoita tomcat-sovelluksen resurssiluettelotiedosto

pääisäntätoiminto

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

Tämä yaml määrittelee Tomcat- ja Filebeat-käyttöönotto- ja Filebeat-määritystiedostot. Selitämme ne vuorotellen.
Käyttöönotto-osio

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

metatiedot: määrittää käyttöönoton nimen ja nimitilan.
spec: Sisältää käyttöönoton yksityiskohtaiset tiedot.
replikat: määrittää replikoiden määrän, toisin sanoen ajettaessa kahta Tomcat-instanssia.
valitsin: määrittää valitsimen pod-etikettien yhteensovittamista varten.
malli: kuvaa Pod-mallia, mukaan lukien metatiedot ja tekniset tiedot.
nodeName: määrittää solmun nimen (työntekijä01), jossa Pod on käynnissä.
kontit: Kaksi säilöä on määritelty: Tomcat ja Filebeat.

Tomcat-säiliö:
kuva: Käytä tomcat:uusinta kuvaa.
portit: Näytä portti 8080.
resurssit: Määrittää resurssipyynnöt ja -rajat.
elävyysProbe ja valmiusProbe: käytetään terveystarkastuksiin.
volumeMounts: Kaksi taltiota on asennettu.

Filebeat-säilö:
kuva: Käytä filebeat:7.17.2-kuvaa.
args: Määrittää käynnistysparametrit.
resurssit: Määrittää resurssipyynnöt ja -rajat.
securityContext: Suorita pääkäyttäjänä.
volumeMounts: Kaksi taltiota on asennettu.

määrät:
tomcat-logs: Käytä emptyDir-taltioita.
tomcatwebroot: Käytä hostPath-taltiota.
filebeat-config: Käytä ConfigMap-taltioita.


Asetustiedosto (ConfigMap) -osio

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

selittää
metatiedot: määrittää ConfigMapin nimen.
data: pitäisi sisältää Filebeatin määrityssisällön (jätetty pois tästä).

3. Kirjoita logstash-määritystiedosto

hirvi-isäntäkokoonpano
Kirjoita logstash-määritystiedostoja vaikuttamatta aiempiin asetustiedostoihin

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

juosta

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

Varmista, että portti on päällä

ss -anput | grep ":5056"
  • 1

Lisää kuvan kuvaus tähän

4. Käytä tomcat-resurssiluettelotiedostoa

pääisäntätoiminto

kubectl apply -f tomcat-logs.yaml
  • 1

Odota hetki, koska sinun on ladattava kuva
Tarkista sitten kotelo
Huomautus: VPN vaaditaan

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

Lisää kuvan kuvaus tähän
Lisää kuvan kuvaus tähän

5. Tarkista, ovatko tomcat ja filebeat Podissa normaaleja

Näytä tomcatin luomat lokit (-c: kontti)
Lisää kuvan kuvaus tähän
Näytä filebeat-kokoelmalokit

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

Lisää kuvan kuvaus tähän

6. Lisää hakemisto kiana-sivulle

Isäntäselaimen käyttöoikeus

192.168.10.17:5601
  • 1

Lisää kuvan kuvaus tähän
Lisää kuvan kuvaus tähän
Lisää kuvan kuvaus tähän
Lisää kuvan kuvaus tähän
Lisää kuvan kuvaus tähän
Lisää kuvan kuvaus tähän
Lisää kuvan kuvaus tähän
Voit nähdä, että olet nähnyt lokin
Lisää kuvan kuvaus tähän
Suorittaa loppuun
Jos se auttaa sinua, napsauta ja seuraa