基于kfaka和zookeeper的nginx日志收集平台,项目详细步骤

本项目通过filebeat收集nginx日志,借助kafka和zookeeper实现日志统一处理。首先,搭建8台虚拟机,分别用于kafka、zookeeper、nginx和MySQL数据库。然后,部署并配置nginx、kafka和zookeeper,测试数据传输。最后,编写python消费程序处理日志并存储至数据库,确保高可用性和数据可靠性。
摘要由CSDN通过智能技术生成

目录

一、项目环境:

二、项目介绍:

三、项目步骤

       3.1  环境准备

       3.1.1 准备好虚拟机

       3.1.2  配置好静态ip

       3.1.3  修改主机名以及写好域名映射关系

       3.1.4  安装基本软件

       3.1.5  关闭防火墙

       3.2  nginx的部署

       3.2.1  安装相关软件

       3.2.2  修改相关配置文件

       3.3  kafka的部署

        3.3.1  相关软件安装

        3.3.2  配置kafka

        3.3.3  zookeeper的部署

      3.4  测试 

        3.4.1  创建一个topic

        3.4.2  创建生产者和消费者

       3.5  filebeat的部署 

        3.5.1  安装

        3.5.2  编辑文件 vim /etc/yum.repos.d/fb.repo

        3.5.3  安装

        3.5.4  设置开机自启 

        3.5.5  修改配 vim /etc/filebeat/filebeat.yml

        3.5.6  创建主题 

        3.5.7  启动服务

      3.6  数据库 

      3.7  编写python消费程序

四、项目详解

        4.1  项目总流程

        4.2  keepalived

        4.2.1 keepalived的作用

        4.2.2 keepalived的工作原理

        4.3  kafak

        4.3.1 什么是kafka

        4.3.2 kafka的专业术语

        4.3.3 kafka里的数据可靠性和数据一致性问题

        4.3.4 kafka内leader的选举

        4.4  zookeeper

        4.1.1 什么是zookeeper

        4.4.2 zookeeper内leader的选举

        4.4.3 zookeeper在kafka内的作用

        4.5  filebeat

        4.5.1 什么是filebeat

        4.5.2.filebeat的构成


一、项目环境:

        CentOS Linux release 7.9.2009 (Core)、mariadb 5.5.68、Python 3.6、nginx 1.20.1、 filebeat 7.17.5、zookeeper 3.6.3、kafka 2.12

二、项目介绍:

        本项目使用filebeat收集前端 nginx 集群访问日志,统一荐入 kafka 平台,对 nginx 日志做清洗,获取流量信息存 入数据库。

三、项目步骤

        3.1  环境准备

          3.1.1 准备好虚拟机

            准备好8台虚拟机,三台用来搭建kafak+zookeeper集群,三台台用来搭建nginx集群,两台用来搭建MySQL数据库。

            3.1.2  配置好静态ip

             每台虚拟机最好都配置好静态的ip地址,便于后续的使用,如何配置请参考:(1条消息) Linux如何固定ip地址,及ifcfg-ens33文件参数_忙碌且充实的博客-CSDN博客_linux固定ip

             3.1.3  修改主机名以及写好域名映射关系

1.修改主机名
[root@localhost network-scripts]# hostnamectl set-hostname nginx-kafka03


2.域名映射关系
[root@nginx-kafka03 nginx]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.178.263.150 nginx-kafka01
192.178.263.137 nginx-kafka02
192.178.263.134 nginx-kafka03

        每台机器上都要在/etc/hosts文件内设置好域名映射, 主机与ip一一对应,方便的操作。

       3.1.4  安装基本软件

        yum install wget lsof vim -y

        yum -y install chrony

        systemctl enable chronyd  设置开机自启 disable 关闭开机自启,systemctl start chronyd 启动chronnyd。

        设置时区

       cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

        3.1.5  关闭防火墙

     systemctl stop firewalld
     systemctl disable firewalld

        并且关闭 selinux,编辑文件 /etc/selinux/config,修改成SELINUX=disabled。想要查看是否关闭成功使用 getenforce。selinux关闭 需要重启机器,selinux是一个linux系统内核里的一个跟安全相关的子系统,规则非常繁琐,一般日常工作里都是关闭的。

       3.2  nginx的部署

        3.2.1  安装相关软件

        yum install epel-release -y
        yum install  nginx -y                

        启动:systemctl start nginx,设置开机自启:systemctl enable nginx 。

       3.2.2  修改相关配置文件

[root@nginx-kafka01 ~]# vim /etc/nginx/nginx.conf
文件内大概是这样的结构
#根据核数自动生成进程数
worker_processes auto;
...              #全局块

events {         #events块、事件块
    #最大支持多少连接
    worker_connections 1024;
}

http      #http块
{
#日志格式	
log_format  main  '$remote_addr(远程ip) - $remote_user(远程用户) [$time_local] "$request" '
                      '$status(状态) $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
#虚拟主机块,一个网站一个server,需要写在http块内
    server
    {
      ...
    }
       #这下面的文件也会加载进来
        include /etc/nginx/default.d/*.conf;
    ...     #http全局块
}

        修改:将 listen       80 default_server;修改成:listen       80;。

        相关模块:

        1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

        2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

        3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

        4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

        5、location块:配置请求的路由,以及各种页面的处理情况。

        ##注: nginx 的 default_server 指令可以定义默认的 server 出处理一些没有成功匹配 server_name 的请求,如果没有显式定义,则会选取第一个定义的 server 作为 default_server。
在了解到如上规则后,我们可以捕获未做绑定的域名访问或直接IP访问,做重定向到403页面等处理

        新建一个sc.conf文件

        vim  /etc/nginx/conf.d/sc.conf

        并写入以下内容:

server {
    listen 80 default_server;
    server_name  www.sc.com;

    # html文本存放的位置,访问根目录直接访问index.html
    root         /usr/share/nginx/html;

    access_log  /var/log/nginx/sc/access.log main;

    location  / {

    }
}

        检查nginx是否搭建成功,语法检测。

[root@nginx-kafka01 html]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] open() "/var/log/nginx/sc/access.log" failed (2: No such file or directory)
nginx: configuration file /etc/nginx/nginx.conf test failed

[root@nginx-kafka01 html]# mkdir /var/log/nginx/sc

[root@nginx-kafka01 html]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

        重新加载nginx。 

        nginx -s  reload

       3.3  kafka的部署

        3.3.1  相关软件安装

        yum install java wget  -y       安装java

         安装kafka:kafka_2.12-2.8.1版本需要 apache-zookeeper,最新的版本不需要脱离了apache-zookeeper。

        wget   https://mirrors.bfsu.edu.cn/apache/kafka/2.8.1/kafka_2.12-2.8.1.tgz  

        安装zookeeper

        wget   https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

         tar  xf  kafka_2.12-2.8.1.tgz             解包

        3.3.2  配置kafka

        修改   vim  /opt/kafka_2.12-2.8.1/config/server.properties  文件,配置如下:

        修改broker.id

        ② 修改listeners=PLAINTEXT

        修改zookeeper.connec

############################# Server Basics #############################

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
############################# Socket Server Settings ###########
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值