elk + filebeat + kafka实验和RSync同步

elk + filebeat + kafka实验和RSync同步

elk + filebeat + kafka实验

filebeat+kafka+ELK实验的操作步骤:

复制代码
#在装有nginx的主机上解压filebeat压缩包
[root@test4 opt]# tar -xf filebeat-6.7.2-linux-x86_64.tar.gz 
#将解压后的压缩包更改名字
[root@test4 opt]# mv filebeat-6.7.2-linux-x86_64 filebeat
#进入filebeat目录下,将filebeat.yml配置文件备份
[root@test4 opt]# cd filebeat/
[root@test4 filebeat]# cp filebeat.yml filebeat.yml.bak
#进入filebeat.yml配置文件并更改
[root@test4 filebeat]# vim filebeat.yml
filebeat.prospectors:
- type: log
  enabled: true
  paths:
    - /usr/local/nginx/logs/access.log
  tags: ["access"]
- type: log
  enabled: true
  paths:
    - /usr/local/nginx/logs/error.log
  tags: ["error"]
#将下面两行注释
144 #output.elasticsearch:
146 #  hosts: ["localhost:9200"]
#将157行,160行取消注释并修改
157 output.kafka:
158   enabled: true
159   # The Logstash hosts
160   hosts: ["192.168.60.91:9092","192.168.60.92:9092","192.168.60.93:9092"]           #指定kafka集群配置
161   topic: "nginx"        #指定kafka的topic
#启动filebeat
[root@test4 filebeat]# ./filebeat -e -c filebeat.yml
复制代码
#在ELK的主上配置
[root@apache ~]# cd /etc/logstash/conf.d/
[root@apache conf.d]# vim kafka.conf
input {
        kafka {
                bootstrap_servers => "192.168.60.91:9092,192.168.60.92:9092,192.168.60.93:9092"
                topics => "nginx"
                type => "nginx_kafka"
                codec => "json"
                auto_offset_reset => "latest"
                #拉取最近数据,earliest为从头开始拉取
                decorate_events => true
                #传递给elasticsearch的数据额外增加kafka的属性数据
        }
}
output {
        if "access" in [tags] {
                elasticsearch {
                        hosts => ["192.168.60.82:9200","192.168.60.83:9200"]
                        index => "nginx_access-%{+YYYY.MM.dd}"
                }
        }
        if "error" in [tags] {
                elasticsearch {
                        hosts => ["192.168.60.82:9200","192.168.60.83:9200"]
                        index => "nginx_error-%{+YYYY.MM.dd}"
                }
        }
}
#启动logstash
[root@apache conf.d]# logstash -f kafka.conf

RSYNC:远程同步

上行 客户端同步到服务端

下行 服务端同步到客户端

开源的快速备份的工具,一般是系统自带的。

可以在不同主机之间同步整个目录树(目录)

在远程同步的任务中,负责发起rsync的叫做发起端,也就是服务端,负责响应的同步请求的,就是客户端。

rsync的特点:

1、支持拷贝文件,链接文件等等

2、可以同步整个目录

3、可以支持保留源文件或者目录的权限等等

4、可以实现增量同步

rsync的同步方式:

1、完整备份

2、增量备份

常用的选项:

1、-a 归档模式(保留权限)

2、-v 显示同步的详细过程

3、-z 压缩,在传输的过程中对文件进行压缩。

4、-H 同步硬连接

5、--delete 同步删除文件

6、-l 同步连接文件

7、-r 递归(所有)

192.168.60.80 服务端

192.168.60.90 客户端

客户端同步服务端的目录操作步骤:

服务端的配置文件

复制代码
[root@test8 ~]# vim /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
​
# See rsyncd.conf man page for more options.
​
# configuration example:
​
 uid = root
 gid = root
 use chroot = yes
#是否禁锢在源目录
address = 192.168.60.80
#监听地址
port 873
# max connections = 4
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
hosts allow = 192.168.60.0/24
#允许访问的客户端IP地址
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z
#在传输过程中不再进行压缩的文件类型
​
[test]
#共享模块的名称,后续通过模块的名称来进行同步
path = /opt/test
#源目录,就是同步的目录
#comment = test
#备注信息,可以不加
read only = no
#源目录,客户端可以读,也可以写 
auth users = backuper
#授权登录的账户名称
secrets file = /etc/rsyncd_users.db
#授权登录用户的密码文件
~  
​
[root@test8 ~]# chmod 600 /etc/rsyncd_users.db 
[root@test8 ~]# mkdir /opt/test
mkdir: 无法创建目录"/opt/test": 文件已存在
[root@test8 ~]# chmod 777 /opt/test/
[root@test8 ~]# netstat -antp | grep 873
[root@test8 ~]# systemctl restart rsyncd
[root@test8 ~]# netstat -antp | grep 873
tcp        0      0 192.168.60.80:873       0.0.0.0:*               LISTEN      10611/rsync         
复制代码
#设置用户登录的密码
[root@test8 test]# vim /etc/rsyncd_users.db
backuper:123456
​
[root@test8 ~]# chmod 600 /etc/rsyncd_users.db 
[root@test8 ~]# mkdir /opt/test
[root@test8 ~]# chmod 777 /opt/test/
[root@test8 ~]# netstat -antp | grep 873
[root@test8 ~]# systemctl restart rsyncd
[root@test8 ~]# netstat -antp | grep 873
tcp        0      0 192.168.60.80:873       0.0.0.0:*               LISTEN      10611/rsync
复制代码
#在客户端的主机上将服务端的模块名称为test复制到客户端的opt目录下
[root@test9 opt]# rsync -avz backuper@192.168.60.80::test /opt
#写一个密码的文件
[root@test9 xy102]# vim /etc/server.pass 
123456
​
#下面的代码是实现免密登录
[root@test9 opt]# rsync -avz --password-file=/etc/server.pass backuper@192.168.60.80::test /opt

客户端监控文件系统的变化:

inotify-tools

inotify 实现监控

inotify watch 监控文件系统的变化

inotify wait 监控修改,创建,移动,删除,属性修改(权限修改、所有者、所在组)如果发生变动,立即输出结果。

复制代码
inotifywait -mrq -e modify,create,move,delete /opt/xy102

m 持续监控

r 递归整个目录,只要有变化包含子目录的变化全部记录

q 简化输出的信息

e 指定监控的时间

复制代码
attrib  属性修改
inotifywait -mrq -e modify,create,move,delete,attrib /opt/xy102

将客户端的变化同步到服务端中去(下行同步):

复制代码
#在客户端上写一个脚本文件
[root@test9 opt]# vim inotify.sh
#!/bin/bash
inotify_cmd="inotifywait -mrq -e modify,create,move,delete,attrib /opt/xy102"
rsync_cmd="rsync -azH --delete --password-file=/etc/server.pass /opt/xy102 backuper@192.168.60.80::test/"
$inotify_cmd | while read DIRECTORY EVENT FILE
do
  if [ $(pgrep rsync | wc -l ) -le 0 ]
  then
     $rsync_cmd
  fi
done
#给脚本文件赋权并执行脚本文件
[root@test9 opt]# chmod 777 inotify.sh 
[root@test9 opt]# ./inotify.sh

attrib 属性修改

--delete

A

/opt/test 1 2 3

B

/opt/xy102 4 5 6

--delete 全同步(两边的内容完全一致)

相关推荐
予枫的编程笔记4 分钟前
【Kafka进阶篇】Canal+Kafka+ES实战:内容平台数据同步难题,这样解最优雅
redis·mysql·elasticsearch·kafka·canal·数据同步·异步解耦
西***634710 分钟前
多领域落地验证:分布式 KVM 如何成为指挥中心的 “协同核心引擎”
分布式
安科瑞解决方案一站通13 分钟前
分布式光储监控系统的四个实战样本:从分散走向聚合的技术路径
分布式·微电网·电力·配电·零碳园区·用电安全
知识即是力量ol22 分钟前
深入理解 Snowflake 雪花算法:原理、本质、趋势递增问题与分布式顺序困境全解析
java·分布式·算法·雪花算法·snowflake·全局唯一id·分布式id生成器
步步为营DotNet26 分钟前
深度解析.NET中LINQ的延迟执行:提升性能与资源管理的关键
.net·solr·linq
gs8014026 分钟前
从零到一:构建高可用分布式 Server-Sent Events (SSE) 实时推送系统
分布式·sse
m5655bj28 分钟前
通过 C# 将 PPT 文档转换为 HTML 格式
c#·html·powerpoint
未来之窗软件服务29 分钟前
AI人工智能(十五)C# AI的智障行为http服务—东方仙盟练气期
开发语言·http·c#
缺点内向29 分钟前
C#中如何创建目录(TOC):使用Spire.Doc for .NET实现Word TOC自动化
c#·自动化·word·.net
2301_7757630230 分钟前
从零到一:用 openYuanrong 训练分布式强化学习 Agent(完整实操指南)
分布式