Docker安装Elasticsearch,Kibana,Logstash

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的索引处查看是否有索引即可


已发布

分类

,

来自

标签: