创建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的日志。