[项目]01、基于kafka和zookeeper的日志收集平台

项目名称:基于kafka和zookeeper的日志收集平台

项目环境:CentOS7.9、zookeeper3.6.3、filebeat7.17.5、python3.6.8、kafka2.12、mariadb-server-5.5.68

项目描述:实现对nginx日志的收集和分析,通过URL接口解析日志中IP所属的省份、运营商、带宽等数据,并将其整理到数据库中。通过设置不同的阈值,达到每分钟监控告警的作用。

项目步骤:

  1. 规划好整个项目的框架和拓扑结构
  2. 用两台nginx 服务器做反向代理,使用keepalived双vip互为主备做高可用。用户通过反向代理访问nginx web服务产生日志数据。
  3. 搭建nginx集群,利用filebeat(作为生产者)向kafka发送收集到的nginx日志数据。
  4. 搭建zookeeper和kafka集群(作为中间件),用zookeerper集群来管理kafka集群并且保存kafka集群的元信息。kafka将收集到的日志按归属的topic存放到partition的消息队列中。
  5. 编写Python脚本(作为消费者),从kafka的partition中拿取消息,并进行数据清洗,再将需要的数据(时间、省份、运营商、带宽)保存到数据库,方便为后续的监控作对比。
  6. 编写一个监控脚本,使用celery定时任务,用redis做为中间件,实现每分钟都监控报警。如果某省某运营商流量超过设定的阈值,就通过邮件发送进行报警。

项目心得:

  1. 明白了事先规划好项目框架和拓扑图的重要性
  2. 提高了自己的python编程和理解数据走向的能力
  3. 加深了对redis和kafka这类中间件的理解
  4. 做项目一定要仔细认真,不然就会出现失之毫厘差之千里

第一步:规划好整个项目的框架和拓扑结构

nginx-kafka01:192.168.29.137

nginx-kafka02:192.168.29.155

nginx-kafka03:192.168.29.128

lb1:192.168.29.99

lb2:192.168.29.100

第二步:用两台nginx 服务器做反向代理,使用keepalived双vip互为主备做高可用。用户通过反向代理访问nginx web服务产生日志数据。

1、用两台虚拟机执行下面这个脚本

[root@load-balancer ~]# cat onekey_install_shediao_v9.sh 
#!/bin/bash

#解决软件的依赖关系,需要安装的软件包
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim wget
#新建luogan用户和组
id  FMY || useradd FMY -s /sbin/nologin

#下载nginx软件
mkdir  /FMY99 -p
cd /FMY99
wget  http://nginx.org/download/nginx-1.21.1.tar.gz

#解压软件
tar xf nginx-1.21.1.tar.gz 
#进入解压后的文件夹
cd nginx-1.21.1

#编译前的配置
./configure --prefix=/usr/local/FMY99  --user=FMY --group=FMY  --with-http_ssl_module   --with-threads  --with-http_v2_module  --with-http_stub_status_module  --with-stream 
#如果上面的编译前的配置失败,直接退出脚本
if (( $? != 0));then
	exit
fi
#编译
make -j 2
#编译安装
make  install

#修改PATH变量
echo  "PATH=$PATH:/usr/local/FMY99/sbin" >>/root/.bashrc
#执行修改了环境变量的脚本
source /root/.bashrc


#firewalld and selinux

#stop firewall和设置下次开机不启动firewalld
service firewalld stop
systemctl disable firewalld

#临时停止selinux和永久停止selinux
setenforce 0
sed  -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config

#开机启动
chmod +x /etc/rc.d/rc.local
echo  "/usr/local/FMY99/sbin/nginx" >>/etc/rc.local

安装完之后,我们需要重启一下。可以退出一下xshell,然后再次连接。那么就会重新加载环境变量

[root@load-balancer ~]# ps aux|grep nginx
root       1552  0.0  0.0 112824   988 pts/1    S+   22:29   0:00 grep --color=auto nginx
[root@load-balancer ~]# nginx  # 启动nginx
[root@load-balancer ~]# ps aux|grep nginx
root       1554  0.0  0.0  46220  1164 ?        Ss   22:29   0:00 nginx: master process nginx
FMY        1555  0.0  0.1  46680  1920 ?        S    22:29   0:00 nginx: worker process
root       1558  0.0  0.0 112824   988 pts/1    S+   22:29   0:00 grep --color=auto nginx
[root@load-balancer ~]# ss -anplut|grep nginx  # 查看nginx的端口
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=1555,fd=6),("nginx",pid=1554,fd=6))


2、修改nginx配置文件

[root@localhost ~]# cd /usr/local/FMY99
[root@localhost FMY99]# cd conf/
[root@localhost conf]# vim nginx.conf


# 配置完之后,使用命令重新加载一下nfs服务
[root@load-balancer ~]# nginx -s reload

3、安装keepalived软件并且配置keepalived文件设置双vip

[root@load-balancer ~]# yum install keepalived -y
# 192.168.29.99
[root@load-balancer ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
 
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict   # 这个配置要注释掉
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
# 实例1
vrrp_instance VI_1 { # 启动一个vrrp的实例  VI_1实例名字,可以自定义
    state BACKUP    # 填MASTER或者BACKUP,建议配置为BACKUP,因为MASTER会抢占VIP
    interface ens33  # 在哪个接口监听vrrp协议,同时绑定VIP到哪个接口
    virtual_router_id 51 # 虚拟路由id   0~255
    priority 200   #优先级  0~255
    advert_int 1   # advert interval 宣告消息  时间间隔为1秒
    authentication {   # 认证
        auth_type PASS   #认证的类型是密码认证
        auth_pass 1111   # 具体的密码,可以自己修改
    }
    virtual_ipaddress {  # VIP的配置,vip可以是多个IP
        192.168.29.199   # 这个IP地址要没人使用的IP地址
    }
}
 
 
# 实例2
vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.29.200
    }
}
 
# 192.168.29.100
[root@load-balancer-2 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
 
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.29.199
    }
}
 
vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 200
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.29.200
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FanMY_71

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值