温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ELK+filebeat+redis日志分析平台搭建

发布时间:2020-02-27 11:02:15 来源:网络 阅读:869 作者:哆先生 栏目:大数据

平台拓扑图
ELK+filebeat+redis日志分析平台搭建
软件版本:

  • elasticsearch-6.6.0
  • logstash-6.6.0
  • kibana-6.6.0
  • redis-3.2.12
  • java-1.8.0

1. 基础环境的准备

配置elasticsearch集群的基础环境,关闭其防火墙、selinux、配置主机名等

systemctl stop firewalld systemctl disable firewalld vim /etc/selinux/config SELINUX=disabled hostnamectl set-hostname node1 其它两台设备做相应的配置 在集群的三台设备的/etc/hosts文件中写入对应的主机名解析 172.20.128.39 node1 172.20.128.40 node2 172.20.128.41 node3 配置logstash主机的基础环境,这里logstash与kibana部署在一台设备上 systemctl stop firewalld systemctl disable firewalld vim /etc/selinux/config SELINUX=disabled hostnamectl set-hostname master 在/etc/hosts文件中写入elk集群的主机名解析 172.20.128.39 node1 172.20.128.40 node2 172.20.128.41 node3

2. 安装部署elasticsearch集群

首先安装java-1.8.0环境 yum install -y java-1.8.0 rpm -ivh elasticsearch-6.6.0.rpm systemctl enable elasticsearch.service 编辑其配置文件 vim /etc/elasticsearch/elasticsearch.yml cluster.name: myels //所属集群名称 node.name: node1 //当前节点名称 path.data: /els/data //数据存放路径 path.logs: /els/logs //日志存放路径 network.host: 172.20.128.39 //监听地址,向客户端提供服务地址 http.port: 9200 discovery.zen.ping.unicast.hosts: ["host1", "host2","host3"] //集群成员判定 discovery.zen.minimum_master_nodes: 3 //内部集群成员关系判定最小主节点数 修改服务启动时内存所需大小 vim /etc/elasticsearch/jvm.options -Xms1g //初始化内存空间大小 -Xmx1g //堆内存空间大小

安装部署其它两个节点
同上先安装java环境,然后安装elasticsearch
将节点1的配置文件复制到节点2跟节点3并作相应的修改
为每个节点创建存储目录

mkdir -p /els/{data,logs} chown elasticsearch.elasticsearch /els/* 启动服务 systemctl start elasticsearch

当三个节点服务全部安装完成后可以使用curl查看节点运行状态是否正常
ELK+filebeat+redis日志分析平台搭建

3.安装配置Logstash

首先安装java环境 yum install java-1.8.0-openjdk -y rpm -ivh logstash-6.6.0.rpm 编辑配置文件/etc/logstash/logstash.yml path.config: /etc/logstash/conf.d //加载配置文件,此路径为logstash插件默认执行位置,包括输入插件配置文件,输出插件等配置文件 配置logstash环境变量 vim /etc/profile.d/logstash.sh export PATH=$PATH:/usr/share/logstash/bin/

实例:定义一个标准输入输出插件,并logstash服务进行测试
input {
stdin {}
}
output {
stdout {}
}
进入交互式界面进行测试
logstash -f stdin-stdout.conf
输入hello logstash
得到标准输出
ELK+filebeat+redis日志分析平台搭建

4.安装部署filebeat插件及redis缓存池

在172.20.128.43主机上上传filebeat的rpm包并安装 rpm -ivh filebeat-6.6.0-x86_64.rpm 配置 Filebeat inputs数据读取路径 #=========================== Filebeat inputs ============================= - type: log paths: - /var/log/httpd/access_log //日志获取的路径 filebeat文件的获取数据格式,默认为log #================================ Redis Outputs ===================================== output.redis: enable: true hosts: ["172.20.128.43"] port: 6379 key: filebeat password: test.com db: 0 datatype: list systemctl start filebeat systemctl enable filebeat 添加redis服务作为缓存池 yum install -y redis //使用epel源安装 配置redis服务,编辑配置文件 vim /etc/redis.conf 监听0.0.0.0地址 bind 0.0.0.0 requirepass test.com systemctl start redis systemctl enable redis

5.安装httpd服务,并使用具体实例对日志分析流水线进行测试

yum install -y httpd 创建测试页面 for i in {1..20};do echo "Test Page $i" > ./test$i.html;done 使用curl命令进行测试 curl http://172.20.128.42/test1.html 修改httpd的配置文件 LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined //此配置可以将客户端的IP地址记录在日志中 systemctl start httpd systemctl enable httpd 在客户端模拟多个不同的客户端对logstash进行访问 while true;do curl -H "X-Forwarded-For:$[$RANDOM%223+1].$[$RANDOM%225].1.1" http://172.20.128.43/test$[$RANDOM%25+1].html; sleep 1; done

在logstash配置文件的conf.d目录下编写配置文件接受redis服务器存储的数据,在本地对日志数据进行加工处理,添加属性信息等,然后输出给elasticsearch。
为了在kibana中有更精确的数据展示,在logstash服务器中添加GeoLite2-City数据库,用于获取客户端IP地址的经纬度信息
geoip插件会根据请求自动读取到所期望读取的ip,例如cilentip
然后将cilentip跟地址库中信息做比对,如果能查找到则解析为当中所记录的归属者或者拥有者信息,否则返回错误。

配置使用geoip插件
展开GeoLite2-City_20191203压缩包,将文件复制到/etc/logstash/maxmind
进入到/etc/logstash/maxmind目录创建符号链接
ln -sv GeoLite2-City_20191203/GeoLite2-City.mmdb ./
接下来配置logstash用户接受处理数据的配置文件

vim /etc/logstash/conf.d/redis-els.conf input { //input用于定义接受从redis获取数据 redis { host => "172.20.128.43" port => 6379 password => "test.com" db => 0 key => "filebeat" data_type => "list" } } filter { //过滤插件对获取的日志数据进行切割同时添加属性信息 grok { //调用logstash内置函数对日志数据进行切割 match => {"message" => "%{HTTPD_COMBINEDLOG}"} remove_field => ["message","beat"] } date { match => ["timestamp","dd/MMM/YYY:H:m:s Z"] } geoip { //调用经纬度信息 source => "clientip" target => "geoip" database => "/etc/logstash/maxmind/GeoLite2-City.mmdb" } mutate { //去除数据切割后相同字段属性 rename => {"[host][name]" => "host"} } } output { //处理后的数据输出到elsaticsearch中 elasticsearch { hosts => ["http://node1:9200/","http://node2:9200/","http://node3:9200/"] index => "logstash-%{+YYYY.MM.dd}" document_type => "httpd_access_logs" } stdout {codec => rubydebug} //在输出到elasticsearch的同时,将数据数据到桌面,如果有错误信息同时输出的桌面 }

在客户端发起请求的同时,执行此配置文件
logstash -f redis-els.conf
此时可以看到桌面的数据输出
ELK+filebeat+redis日志分析平台搭建
在elasticsearch验证是否有索引生成
ELK+filebeat+redis日志分析平台搭建

6.安装kibana图形展示界面

将rpm包上传到172.20.128.42并安装 rpm -ivh kibana-6.6.0-x86_64.rpm 编辑配置文件 /etc/kibana/kibana.yml server.port: 5601 server.host: "0.0.0.0" server.name: "master" //安装kinaba服务的主机名 elasticsearch.hosts: ["http://node1:9200"] //生产环境中此处可以使用VIP进行高可用访问,此处选取任意一个elastic作为数据输入源 elasticsearch.preserveHost: true //是否保留原来的主机host kibana.index: ".kibana" //kibana启动后将自身索引信息保存在elasticsearch, 启动服务 systemctl start kibana systemctl enable kibana

在浏览器输入172.20.128.42:5601
在management生成配置一个index pattern,名称以logstash-“date”为基准
ELK+filebeat+redis日志分析平台搭建
在Discover选项可以是创建的索引进行搜索
ELK+filebeat+redis日志分析平台搭建
还可以在Visualize选项进行客户端请求IP地址来源的仪表盘展示,选择
ELK+filebeat+redis日志分析平台搭建
此时一个elk的测试环境搭建完成

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI