1、安装Docker
这一步可参考https://lib.kimsor.top/?p=264这篇文章
2、创建kibana和ES的docker专用网络
docker network create es-net
3、安装ES
这里我使用的是7.17.27版本,如果需要其他版本可前往dockerhub查看
docker pull elasticsearch:7.17.27
运行ES容器
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d --name elastic --network es-net [镜像哈希]
检测是否有返回结果代表成功
curl http://localhost:9200/_cluster/health?pretty
4、安装Kibana
安装Kibana要注意和es版本一致
docker pull kibana:7.17.27
运行Kibana容器
docker run --name kibana --network es-net -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://elastic:9200 -d [镜像哈希]
访问5601端口,有ui界面即可

5、安装Logstash
安装和es和kibana版本一致
docker pull logstash:7.17.27
创建logstash.conf并写入
vim logstash.conf
conf内容:
input {
file {
path => "/usr/share/logstash/logs/test.log"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level}\s+%{GREEDYDATA:msg}" }
}
date {
match => ["timestamp", "yyyy-MM-dd HH:mm:ss"]
target => "@timestamp"
}
mutate {
remove_field => ["timestamp"]
}
}
output {
elasticsearch {
hosts => ["http://172.18.0.2:9200"]
index => "logs-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug } # 可选:调试输出
}
创建logstash.yml并写入
vim logstash.yml
内容:
xpack.monitoring.enabled: false
运行logstash
docker run -p 5044:5044 -p 5000:5000 -v [logstash.conf绝对路径]:/usr/share/logstash/pipeline/logstash.conf -v [logstash.yml绝对路径]:/usr/share/logstash/config/logstash.yml --name logstash --network es-net -d [镜像哈希]
运行成功后进入容器创建logs目录,因为我们在配置文件里面使用的是file

进入容器
docker exec -it [logstash容器哈希] /bin/bash
在以下目录添加logs

mkdir logs
进入logs添加test.log文件测试
mkdir logs
cd logs
touch test.log
cat > test.log << EOF
2025-07-31 10:00:00 INFO User login succeeded
2025-07-31 10:05:00 ERROR File access denied
EOF
添加之后可在Kibana的索引处查看是否有索引即可

