本文分三个部分:第一部分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查看