基于Docker快速搭建ELK、Kafka

 Docker君   2020-05-26 11:22   7367 人阅读  0 条评论

基于Docker快速搭建ELK、Kafka  第1张

本文分三个部分:第一部分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系统,可以快速实现日志的采集和分析检索。


废话不多说开干……

基于Docker快速搭建ELK、Kafka  第2张


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: "*"


基于Docker快速搭建ELK、Kafka  第3张


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

基于Docker快速搭建ELK、Kafka  第4张


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快速搭建ELK、Kafka  第5张



第三部分: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生产

基于Docker快速搭建ELK、Kafka  第6张

#logstash消费(格式错误会有报错日志)


基于Docker快速搭建ELK、Kafka  第7张

#eselasticsearch查看

基于Docker快速搭建ELK、Kafka  第8张

本文地址:https://dockerworld.cn/?id=64
版权声明:本文为原创文章,版权归 Docker君 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?