一、前言
1.需要准备一台linux服务器(最好是CentOS7),内存至少4g以上(三个组件都比较占用内存)
2.需要有docker使用经验
3. 三个软件的版本要一致
二、安装ElasticSearch
这里先创建一个网络:因为我们还需要部署kibana容器、logstash容器,需要让这些容器互联,也可以让ELK环境于其他容器的在网络上隔离。
1.创建一个自定义网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 my_elk_net
![](https://i-blog.csdnimg.cn/blog_migrate/906f122c493c91213384c32eaa3b9600.png)
2.创建ES 容器
#搜索镜像
docker search elasticsearch
#下载镜像
docker pull elasticsearch:7.12.1
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v /soft/es/data:/usr/share/elasticsearch/data \
-v /soft/es/plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network my_elk_net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
3 验证es容器
curl localhost:9200
三 docker安装kibana
1.安装kibana
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
-e "I18N_LOCALE=zh-CN" \
--network=my_elk_net \
-p 5601:5601 \
kibana:7.12.1
四 docker安装 logstash
docker run -d -p 5044:5044 -p 9600:9600 --name logstash --network=my_elk_net logstash:7.12.1
三个容器创建完成
查看在自定一网络下三个容器的ip地址
1 设置ES的地址
#进入容器
docker exec -it logstash /bin/bash
1.1 进入 /usr/share/logstash/config 配置目录 修改 logstash.yml 文件
cd /usr/share/logstash/config
1.2 注意此处是ES 容器的ip地址
http.host: "0.0.0.0"
#设置跟es的服务地址
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.0.2:9200" ]
(2) 设置logstash收集日志的输入和输出
2.1 进入到 目录 /usr/share/logstash/pipeline 下面 修改 logstash.conf
input {
tcp {
mode => "server"
host => "0.0.0.0" # 允许任意主机发送日志
port => 5044
codec => json_lines # 数据格式
}
}
output {
elasticsearch {
# ElasticSearch 的地址和端口
hosts => ["http://192.168.0.2:9200"]
# 指定索引名,可以根据自己的需求指定命名
index => "log-%{+YYYY.MM.dd}"
codec => "json"
}
stdout {
codec => rubydebug
}
}
2.2 修改完所有的配置后,需要重启logstash容器
docker restart logstash
五 应用系统对接logstash
1 进入logstash jar包
<dependency>
<groupId>biz.paluch.logging</groupId>
<artifactId>logstash-gelf</artifactId>
<version>1.12.0</version>
</dependency>
2 在log4j的xml配置文件中 加入logstash的配置
</DefaultRolloverStrategy>
</RollingFile>
<Socket name="logstash" remoteHost="115.29.200.225" port="5044" protocol="TCP">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</Socket>
</Appenders>
3 然后打包项目部署 然后打开kibana
点击索引模式
创建索引
按照索引搜索
日志集成成功