文章目录

  • 一、安装docker
  • 1.1修改docker镜像源
  • 二、安装mysql
  • 2.1、mysql执行docker外的.sql文件
  • 三、安装redis
  • 四、安装Rabbitmq
  • 五、安装ElasticSearch
  • 六、安装Kibana
  • 七、安装logstash
  • 八、安装filebeat


一、安装docker

1.apt-get安装

sudo apt-get update
sudo apt-get install docker-io

2.安装完成可以看到docker版本信息

docker -v

docker windows版下载 docker 下载软件_docker

1.1修改docker镜像源

国内镜像源:

Docker 官方中国区:https://registry.docker-cn.com
网易:http://hub-mirror.c.163.com
中国科技大学:https://docker.mirrors.ustc.edu.cn
阿里云:https://y0qd3iq.mirror.aliyuncs.com
  1. 新建 /etc/docker/daemon.json文件,增加以下内容
{
 "registry-mirrors": ["镜像地址"]
}
  1. 重启docker服务
service docker restart
  1. 查看镜像源是否修改成功
docker info

docker windows版下载 docker 下载软件_rabbitmq_02

二、安装mysql

1.拉取mysql镜像

docker pull mysql:8.0.18

2.根据此镜像建立容器并且设置mysql密码

docker run --name mysql --privileged=true -v /opt/mysql/data:/var/lib/mysql -v /opt/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf  -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.18

3.查看容器是否启动成功

docker ps

docker windows版下载 docker 下载软件_docker_03


4.进入容器内部

docker exec -it mysql /bin/bash

进入容器内部后就可以进入mysql了.

mysql -u root -p

2.1、mysql执行docker外的.sql文件

方法就是先将docker外的.sql文件copy进docker mysql容器内,再执行sql文件。

1.将/opt/下的test.sql放到docker mysql容器下的/opt

docker cp /opt/test.sql mysql:/opt/test.sql

2.进入容器内部的mysql执行sql文件

source /opt/test.sql

三、安装redis

1.拉取redis镜像

docker pull redis

2.启动redis容器

docker run -itd --name redis -p 6379:6379 redis --requirepass "123456"

四、安装Rabbitmq

1.拉取rabbitmq镜像

#该版本包含了web管理界面
docker pull rabbitmq:management

2.启动rabbitmq容器

docker run --hostname rabbitmq01 -itd --name rabbitmq01 -e RABBITMQ_DEFAULT_USER='用户名' -e RABBITMQ_DEFAULT_PASS='密码' -v /opt/rabbitmq/rabbitmq01:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' rabbitmq:management

3.访问http://localhost:15672/或者curl http://localhost:15672/

docker windows版下载 docker 下载软件_rabbitmq_04

五、安装ElasticSearch

1.拉取elasticsearch镜像

docker pull elasticsearch:5.6.9

2.启动elasticsearch容器

docker run --name es -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:5.6.9

3.查看容器是否启动

docker ps

一般的容器已经启动了,但是我并没有启动成功。

4.查看容器日志

docker logs 容器ID

得到如下日志:

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid1.log

原来elasticsearch5.0需要给jvm分配2G内存,内存不够,所以启动不起来,只要指定启动的JVM内存就行了

5.指定启动elasticsearch容器并指定jvm内存

docker run --name es -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms256m -Xmx256m" elasticsearch:5.6.9

6.查看容器是否启动成功

docker ps

或者

curl 'http://localhost:9200/?pretty'

docker windows版下载 docker 下载软件_kibana_05


注意:

es容器启动后经常一段时间后自动退出,log显示max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144],原因是因为由于容器虚拟内存空间不够。

解决方法:

#宿主机上修改配置文件 
vim /etc/sysctl.conf
#在最后一行上加上
vm.max_map_count=262144
#加载参数
sysctl -p
#重启容器
docker restart es

六、安装Kibana

1.拉取kibana镜像

docker pull kibana:5.6.9

2.启动kibana容器

docker run --name kibana -e ELASTICSEARCH_URL=http://172.25.78.44:9200 -p 5601:5601 -d kibana:5.6.9

3.启动成功

访问http://172.25.78.44:5601可以看到kibana画面

docker windows版下载 docker 下载软件_elasticsearch_06


4.启动成功但是显示kibana未连接elasticsearch

开启9200端口(centos):

firewall-cmd --zone=public --add-port=9200/tcp --permanent
#重启防火墙
systemctl restart firewalld.service

七、安装logstash

1.拉取logstash镜像

docker pull logstash:5.6.9

2.创建一个log文件,随便写点什么

/data/logs/test.log

Hello
Wolrd
Docker
nb

3.创建logstash配置文件

/data/elk/logstash/config/logstash.yml

input{
  file{
    # 注意这里一定要是绝对路径,不能是相对路径
    path => "/data/logs/test.log"
    start_position => "beginning"
  }
}

output{
   stdout{ codec=> rubydebug}
   elasticsearch{
       hosts => ["172.25.78.44:9200"]
       index => "logs"
   }
}

4.启动logstash容器

docker run -itd --name logstash -p 5044:5044  --link es -v  /data/logs/test.log:/data/logs/test.log -v /data/elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml logstash:5.6.9 -f /usr/share/logstash/config/logstash.yml

注意:

巨坑:
之前看别人的博客,不是创建的logstash.yml,而是创建的logstash.conf
启动成功,但是过一会儿,容器自动停止。

docker logs logstash 查看log报错:

INFO  logstash.agent - No config files found in path {:path=>"/usr/share/logstash/config/logstash.conf/*"}
13:27:12.121 [LogStash::Runner] ERROR logstash.agent - failed to fetch pipeline configuration {:message=>"No config files found: /usr/share/logstash/config/logstash.conf. Can you make sure this path is a logstash config file?"}

后来看logstash:5.6.9的官方文档,创建的是logstash.yml,并不是logstash.conf,应该是版本区别吧。

5.在es中查看logstash发送给es的log内容

GET /logs/_search

docker windows版下载 docker 下载软件_rabbitmq_07

八、安装filebeat

1.拉取filebeat镜像

docker pull docker.elastic.co/beats/filebeat:5.6.9

2.将上面的logstash配置文件的输入方式由文件输入改为beats输入(建议新建logstash容器)

/data/elk/logstash/config/logstash.yml

input{
  beats{
    port => 5044
  }
}

output{
   stdout{ codec=> rubydebug}
   elasticsearch{
       hosts => ["172.25.78.44:9200"]
       index => "logs"
   }
}

3.创建filebeat配置文件

/data/elk/filebeat/filebeat.yml

filebeat.prospectors:
- input_type: log
  paths:
    - /data/logs/*.log  #这里指容器内的目录
output.logstash:
  hosts: ["172.25.78.44:5044"]

4.启动filebeat容器

docker run -itd   --name filebeat -v /data/elk/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml -v /data/logs/test.log:/data/logs/test.log  docker.elastic.co/beats/filebeat:5.6.9

5.在es中查看filebeat发送给logstash,logstash再发送给es中的log数据

GET /logs/_search

巨坑:

查看filebeat启动log发现报错:

filebeat dial tcp 172.25.78.44:5044: getsockopt: connection refused

解决方法:
5044是logstash的启动端口,可我的logstash已经启动了。后来发现我在启动logstash的时候没有指定端口映射,只要在启动logstash的时候加上-p 5044:5044就解决了.

查看filbeat启动log发现报错:

CRIT Exiting: error loading config file: config file ("filebeat.yml") can only be writable by the owner but the permissions are "-rw-rw-r--" (to fix the permissions use: 'chmod go-w /usr/share/filebeat/filebeat.yml')
Exiting: error loading config file: config file ("filebeat.yml") can only be writable by the owner but the permissions are "-rw-rw-r--" (to fix the permissions use: 'chmod go-w /usr/share/filebeat/filebeat.yml')

解决方法:
宿主机和docker容器内filebeat.yml文件权限不一致,在宿主机内执行 chmod go-w /data/elk/filebeat/filebeat.yml.

ELK搭建完成

docker windows版下载 docker 下载软件_docker windows版下载_08