目录
3.5.2 编辑文件 vim /etc/yum.repos.d/fb.repo
3.5.5 修改配 vim /etc/filebeat/filebeat.yml
一、项目环境:
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 ###########