51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

基于Docker快速搭建ELK、Kafka

基于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张

赞(3)
未经允许不得转载:工具盒子 » 基于Docker快速搭建ELK、Kafka