本文分三个部分:第一部分CentOS安装Docker及更细镜像源,第二部分基于Docker安装部署ELK,第三部分基于Docker搭建kafka,logstash配置从kafka读取数据输入到 es。
本实验环境(单机):
系统:centos7
A主机IP:192.168.3.200
B主机IP:192.168.3.201
第一部分:CentOS安装Docker及更细镜像源
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看CentOS 版本是否支持 Docker.
通过 uname -r 命令查看你当前的内核版本
更新yum库
sudo yum update
卸载旧版本(如果安装过旧版本的话)
sudo yum remove docker docker-common docker-selinux docker-engine
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
查看所有的docker版本
sudo yum list docker-ce --showduplicates | sort -r
使用yum下载安装docker 默认最新版本即可
sudo yum install docker-ce
启动和停止,开机自启
sudo systemctl start docker sudo systemctl stop docker sudo systemctl enable docker
查看docker版本验证安装是否成功
sudo docekr version
设置阿里镜像源
sudo vim /etc/docker/daemon.json
写入
{ "registry-mirrors": ["https://br10hqrl.mirror.aliyuncs.com"] }
如果没有该文件,新建并写入:
sudo mkdir /etc/docker sudo touch /etc/docker/daemon.json sudo vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://br10hqrl.mirror.aliyuncs.com"] }
检查是否配置成功
sudo docker info
出现 Registry Mirrors: https://br10hqrl.mirror.aliyuncs.com/ 说明配置成功
刷新配置并启动docker
sudo systemctl daemon-reload sudo systemctl restart docker
第二部分:基于Docker安装部署ELK
本文基于自建的Docker平台速搭建一套完整的ELK系统,可以快速实现日志的采集和分析检索。
废话不多说开干……
1、A主机部署Rancher(课外题方便管理Docker)
#建库
CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8'; GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle'; GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle';
#外接数据库(本文使用局域网已安装好的数据库)
sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server \ --db-host 192.168.3.107 --db-port 3306 --db-user root --db-pass 123456 --db-name cattle
2、B主机部署elasticsearch
docker pull elasticsearch:7.7.0
docker run --name elasticsearch -v /ELK/esconfig:/usr/share/elasticsearch/config -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.7.0
配置跨域(config/elasticsearch.yml)
# 开启跨域
http.cors.enabled: true
# 允许所有
http.cors.allow-origin: "*"
3、B主机部署ES插件head
docker pull mobz/elasticsearch-head:5
docker run --name elasticsearch-head --link elasticsearch:elasticsearch -p 9100:9100 -d mobz/elasticsearch-head:5
4、B主机部署kibana
docker pull kibana:7.7.0
docker run --name kibana --link elasticsearch:elasticsearch -p 5601:5601 -d kibana:7.7.0
5、B主机部署logstash
docker run --name logstash \ -v /ELK/logstash/config-dir:/config-dir \ --link elasticsearch:elasticsearch \ -p 5044:5044 \ -p 9600:9600 \ -d logstash:7.7.0 \ logstash -f /config-dir/logstash.conf
第三部分:Docker部署kafka
docker pull wurstmeister/zookeeper:latest
docker pull wurstmeister/kafka:latest
docker run -d --name zookeeper -p 2181:2181 -itd wurstmeister/zookeeper:latest
docker run -d --name kafka -p 9092:9092 -e KAFKA_ZOOKEEPER_CONNECT=192.168.3.200:2181 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.3.200:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka:latest
#kafka一些常用命令
/opt/kafka/bin/kafka-topics.sh --zookeeper zookeeper:2181 --list
/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic laoqiao
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic laoqiao --from-beginning
docker exec zookeeper bin/zkCli.sh ls /brokers/topics
#logstash配置从kafka读取数据输入到 eselasticsearch。(已测试调通)
input { kafka { bootstrap_servers => ["192.168.3.200:9092"] client_id => "test" group_id => "test" auto_offset_reset => "latest" consumer_threads => 5 decorate_events => true topics => ["laoqiao"] type => "bhy" codec => "json" } } filter { grok { match => {"message"=>"%{COMBINEDAPACHELOG}"} } } output { elasticsearch { hosts => ["192.168.3.200:9200"] index => "yl_test-%{+YYYY.MM.dd}" } }
#kafka生产
#logstash消费(格式错误会有报错日志)
#eselasticsearch查看
发表评论