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

 51工具盒子
51工具盒子 
                 
                             
                         
                        