基于docker-compose的ELK环境搭建
因为最近学习到了需要利用到ELK的环境,因为昨天自己不小心踩了坑,在这里跟大家分享一下快速搭建的方法。简单易上手。也是记录自己的学习过程,以后也可以用到。
1、安装Docker
具体可参照 https://docs.docker.com/engine/install/centos/ 官方文档,linux下的docker安装
我这里做简单介绍
1、安装Docker所需要的包:
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
2、设置稳定的仓库:
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3、安装最新版的Docker引擎:
yum install docker-ce docker-ce-cli containerd.io
4、启动Docker:
systemctl start docker
5、在控制台上输入 docker -v 查看版本,有输出则成功了
2、 安装Docker-Compose
安装好Docker,我们来安装它的一键管理化工具docker-compose
1、获取Docker Compose的最新稳定版本:
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2、对二进制文件授予可执行权限:
chmod +x /usr/local/bin/docker-compose
3、创建Link
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4、输入docker-compose -v 查看是否安装成功
3、Docker Compose搭建ELK
在安装ELK前,必要的准备工作是不可以缺少的,因为难免会因为没有做好准备工作,而导致后续的错误。所以提前做好,就不会去犯那些错误。
官方文档 https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html
Elasticsearch默认使用mmapfs目录来存储索引。操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存:
sysctl -w vm.max_map_count=262144
创建Elasticsearch数据挂载路径:
mkdir -p /home/elasticsearch/data
对该路径授予777权限:
chmod 777 /home/elasticsearch/data
创建Elasticsearch插件挂载路径:
mkdir -p /home/elasticsearch/plugins
创建Logstash配置文件存储路径:
mkdir -p /home/logstash
在该路径下创建logstash-febs.conf配置文件(没有安装vim的话可以使用yum install vim命令安装):
vim /home/logstash/logstash.conf
内容如下所示:
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "es:9200"
index => "logstash-%{+YYYY.MM.dd}"
}
}
创建ELK Docker Compose文件存储路径:
mkdir -p /home/elk
在该目录下创建docker-compose.yml文件:
vim /home/elk/docker-compose.yml
内容如下所示:
version: '3'
services:
elasticsearch:
image: elasticsearch:6.4.1
container_name: elasticsearch
environment:
- "cluster.name=elasticsearch" #集群名称为elasticsearch
- "discovery.type=single-node" #单节点启动
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" #jvm内存分配为512MB
volumes:
- /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins
- /home/elasticsearch/data:/usr/share/elasticsearch/data
ports:
- 9200:9200
kibana:
image: kibana:6.4.1
container_name: kibana
links:
- elasticsearch:es #配置elasticsearch域名为es
depends_on:
- elasticsearch
environment:
- "elasticsearch.hosts=http://es:9200" #因为上面配置了域名,所以这里可以简写为http://es:9200
ports:
- 5601:5601
logstash:
image: logstash:6.4.1
container_name: logstash
volumes:
- /home/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
depends_on:
- elasticsearch
links:
- elasticsearch:es
ports:
- 4560:4560
切换到/home/elk目录下,使用如下命令启动:
docker-compose up -d
接下来就是漫长的下载过程(如果你够快,下面可以略过),假如你的速度因为镜像太慢的话,建议去换一个镜像,可以在阿里云上自己注册然后搜索docker镜像,按照上面的步骤就行
如果你懒得注册我这里有一个方法
修改该文件 /etc/docker/daemon.json
将下面内容全部添加进去
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
国内加速地址有:
Docker中国区官方镜像
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
ustc
https://docker.mirrors.ustc.edu.cn
中国科技大学
https://docker.mirrors.ustc.edu.cn
然后重启docker 服务
Systemctl restart docker
(假如这里报错,八成是daemon.json的问题)
去目录下/etc/docker/
输入命令 mv daemon.json daemon.conf
即可
这时候,大家都安装完了
我们输入 docker ps 查看容器运行状态
可以看到三个都在运行了
(错误情况:假如你ps没看到Elaticsearch没在运行,请记得按照上文配置对应内存,如果配置了,请去及时查看docker日志,或者查看elaticsearch日志,八成是因为root权限问题,有时候会遇到,修改权限启动即可。当然具体还是去看日志才会知道。小问题
需要查看镜像日志可使用 docker logs xx命令, 如:
docker logs -f -t --since="2019-08-09" --tail=50 gitlab(容器名称,即NAMES)
自己输入对应时间都可以)
在Logstash中安装json_lines插件
使用如下命令进入到Logstash容器中:
docker exec -it logstash /bin/bash
切换到/bin目录,
输入 logstash-plugin install logstash-codec-json_lines
安装json_lines插件,然后退出exit:
最后使用浏览器访问http://虚拟机IP地址:5601便可以看到Kibana管理界面:
接下来大家就可以根据自己的业务逻辑去完成了对应的需求了。
大家有要补充的或者博主哪里说错了可以补充。
觉得不错的可以点个赞~