docker 19.03.13
EleasticSearch7.2.0 (如果你需要推送数据到ES,请先部署她)
-- 拉取镜像
docker pull logstash:7.2.0
--创建挂载目录
mkdir -p /home/jamel/docker/software/logstash/conf.d
cat <<EOF > /home/jamel/docker/software/logstash/logstash.yml
node.name: logstash
http.host: "0.0.0.0"
# 192.168.1.168:9200 填写自己的ES服务地址,支持集群
xpack.monitoring.elasticsearch.hosts: ["192.168.1.168:9200"]
xpack.monitoring.enabled: true
path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /var/log/logstash
EOF
cat <<EOF > /home/jamel/docker/software/logstash/conf.d/log.conf
input {
# 这块基于需求配置。我这边是SpringBoot项目日志直接推送至logstash
tcp {
mode => "server"
host => "0.0.0.0"
port => 5044
codec => json_lines
}
# 可以配置 filebeat推送
# beats {
# port => 5044
# }
# 可以配置 自动读取文件地址
# file{
# path=> "/home/jamel/docker/logs/*.log"
# }
}
output {
# 表示推送到es服务器上
elasticsearch {
# es服务器地址列表
hosts => ["192.168.1.168:9201"]
# 每个一个log
index => "log-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
docker run -it -d \
-p 5044:5044 \
-p 5045:5045 \
--name Logstash \
-e TZ=Asia/Shanghai \
-v /home/jamel/docker/software/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml \
-v /home/jamel/docker/software/logstash/conf.d/:/usr/share/logstash/config/ \
-v /home/jamel/docker/software/logstash/conf.d/template/:/usr/share/logstash/config/template/ \
--restart=always \
-m 1024m \
logstash:7.2.0
# 查看启动日志
docker logs --tail=10 -f Logstash
Docker推荐参数介绍
名称 | 描述 |
---|---|
-p ServerPort:DockerPort | 指定docker容器内部端口和服务器端口的的映射,最好配置成一样 |
–name | 设置启动的docker容器名称,不填默认为镜像名称 |
-e TZ=Asia/Shanghai | 指定docker容器时间为上海时间,否则会出现八小时数据时差问题 |
–restart=always | 自动重启 |
-m 1024m | 限制docker的运行内存 |
1.相关建议,启动后没有数据进入,请确认防火墙是否开启。
# 防火墙端口开放命令
firewall-cmd --zone=public --add-port=5044/tcp --permanent
firewall-cmd --zone=public --add-port=5045/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports