kubernetes日志采集ELK(二)

2023-05-04 11:24:52 浏览数 (1)

创建Deployment和Service

创建一个Deployment和一个Service,用于部署Logstash。以下是一个示例Deployment和Service文件::

代码语言:javascript复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: logstash
  labels:
    app: logstash
spec:
  replicas: 1
  selector:
    matchLabels:
      app: logstash
  template:
    metadata:
      labels:
        app: logstash
    spec:
      containers:
        - name: logstash
          image: docker.elastic.co/logstash/logstash:7.12.0
          volumeMounts:
            - name: config-volume
              mountPath: /usr/share/logstash/pipeline/logstash.conf
              subPath: logstash.conf
      volumes:
        - name: config-volume
          configMap:
            name: logstash-config
---
apiVersion: v1
kind: Service
metadata:
  name: logstash
spec:
  selector:
    app: logstash
  ports:
    - name: tcp
      protocol: TCP
      port: 5000
      targetPort: 5000

在此文件中,Deployment指定了要运行的Logstash容器的镜像和配置文件,Service指定了Logstash容器的TCP端口。在配置文件中,/usr/share/logstash/pipeline/logstash.conf是Logstash容器中的默认配置文件位置。

部署日志生成器

为了测试ELK的日志采集功能,需要创建一个简单的日志生成器。以下是一个示例Pod文件,用于生成日志:

代码语言:javascript复制
apiVersion: v1
kind: Pod
metadata:
  name: log-generator
spec:
  containers:
    - name: log-generator
      image: busybox
      command: ['sh', '-c', 'while true; do echo "{"message":"Hello, world!"}"; sleep 1; done | nc -w 1 logstash 5000;']

在此文件中,busybox镜像用于生成JSON格式的日志,并将其发送到Logstash的TCP端口。需要注意的是,在此示例中,Logstash的Service名称为logstash。

使用Kibana查看日志

现在可以使用Kibana查看日志了。使用以下命令,将Kibana服务绑定到本地端口:

代码语言:javascript复制
kubectl port-forward service/kibana-kibana 5601:5601

然后,使用浏览器访问http://localhost:5601,打开Kibana控制台。在控制台中,选择Discover选项卡,可以看到来自Logstash的日志。

0 人点赞