设为首页 收藏本站
查看: 3366|回复: 0

[经验分享] 在CentOS7下实现Elastic Stack 数据分析系统的部署

[复制链接]

尚未签到

发表于 2019-1-29 12:31:22 | 显示全部楼层 |阅读模式
  本文介绍关于关于搭建elasticsearch+logstash(beats)+kibana实现搭建可视化的日志分析系统。
这几款软件也都是免费开源的,其官方站点为:https://www.elastic.co/cn/products
一、关于这几款软件的介绍
  Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个开源的用于收集,分析和存储日志的工具。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以汇总、分析和搜索重要数据日志。
Beats是elasticsearch公司开源的一款采集系统监控数据的代理agent,是在被监控服务器上以客户端形式运行的数据收集器的统称,可以直接把数据发送给Elasticsearch或者通过Logstash发送给Elasticsearch,然后进行后续的数据分析活动。Beats由如下组成:
①Packetbeat:是一个网络数据包分析器,用于监控、收集网络流量信息,Packetbeat嗅探服务器之间的流量,解析应用层协议,并关联到消息的处理,其支 持ICMP (v4 and v6)、DNS、HTTP、Mysql、PostgreSQL、Redis、MongoDB、Memcache等协议;
②Filebeat:用于监控、收集服务器日志文件,其已取代 logstash forwarder;
③Metricbeat:可定期获取外部系统的监控指标信息,其可以监控、收集 Apache、HAProxy、MongoDB、MySQL、Nginx、PostgreSQL、Redis、System、Zookeeper等服务;
④Winlogbeat:用于监控、收集Windows系统的日志信息;
⑤Create your own Beat:自定义beat ,如果上面的指标不能满足需求,elasticsarch鼓励开发者 使用go语言,扩展实现自定义的beats,只需要按照模板,实现监控的输入,日志,输出等即可。
Beats 将搜集到的数据发送到 Logstash,经 Logstash 解析、过滤后,将其发送到 Elasticsearch 存储,并由 Kibana 呈现给用户。
Beats 作为日志搜集器没有Logstash 作为日志搜集器消耗资源,解决了 Logstash 在各服务器节点上占用系统资源高的问题。
二、实现elasticsearch+logstash+kibana的部署
  (1)大概网络拓扑图

说明:
蓝线的线路图:文件---->logstash server------>elasticsearch
Logstash自己做过滤(input plugin)、转换(filter plugin)、输出(output plugin)机制然后直接传送到elasticsearch集群
红线的路线图说明:logstash agent 将数据传输到logstash server端,在servlet端进行统一的输出格式。此刻agent端输入是文件,输出到server;在logstash server 端,输入端是logstash agent ,输出端是elasticsearch集群。
墨色的线路图:加个redis做队列缓冲,为了减轻logstash server的压力,这也是主流的配置。
以上三种情况,就模拟第三种主流的配置,第一、二有兴趣的可以自己做一下。
(2)主机配置说明

主机名ip运行的服务master172.16.5.4elasticsearch 、filebeatserver1172.16.5.3logstash agent、redisserver2172.17.5.2logstash server、kibana  由于本实验测试吃很大内存,就不搭建集群了,都是用一台服务器测试。
  (3)部署elastic stach
①环境部署。
关闭iptables、selinux,同时时间同步、hosts文件进行解析。
命令:iptables -F  情况防火墙策略
setenforce 0   临时关闭selinux,如果想要永久关闭,修改配置文件,不多说。
②安装java环境,解决依赖关系,所有服务器上都安装。
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
③安装elasticsearch安装包。
可以官网下载:https://www.elastic.co/cn/products/elasticsearch
我使用已经下载好的安装包
rpm -ivh elasticsearch-5.4.2.rpm

④修改配置文件
vim /etc/elasticsearch/jvm.options
修改内存:
-Xms1g
-Xmx1g        【建议生产环境32g,发挥最好的性能】
vim /etc/elasticsearch.yml
cluster.name: myels           【集群名字】
node.name: node1          【节点名字,主机名】
path.data: /data/els/data     【索引存放路径】
path.logs: /data/els/logs     【日志路径】
network.host: 0.0.0.0     【加入集群时使用的地址,本机地址】
http.port: 9200               【监听端口】
discovery.zen.ping.unicast.hosts: ["node1", "node2", "node3"]     【判断是否在同一个集群里,也就是是否都是监听同一端口】
discovery.zen.minimum_master_nodes: 2                     【有几个节点,大于半数的最小值】


  ⑤创建elasticsearch使用的index和logs目录
mkdir -pv /els/{date,logs} && chown -R elasticsearch:elasticsearch /els/*       【创建索引和日志目录】

⑥启动服务
systemctl start elasticsearch.service

测试。

出现以上就是成功了
(4)在server1上部署logstash agent和redis
①安装logstash和redis包。

②查看logstash的配置文件
/etc/logstash/jvm.options       【运行环境,即配置内存等信息;server端建议大,agent默认就行】
/etc/logstash/conf.d            【配置插件使用的文件】
/etc/logstash/logstash.yml  【主配置文件,配置怎么运行】
config.reload.automatic:   ture       【文件是否立即生效,默认false需要手动重启】
config.reload.devel:3         【配置文件多久重新加载一次】
配置文件不用修改。
③添加到path路径
vim /etc/profied.d/logstash.sh
export PATH=$PATH:/usr/share/logstash/bin
④启动服务
systemctl start logstash

⑤修改redis配置文件
建议修改该行,提高安全性,本实验就不修改了
requirepass ilinux.io
⑥启动redis服务
systemctl start redis
(5)实现server2服务器的logstash server和kibana的部署
①安装logstash、kibana安装包

②修改kibana配置文件
vim /etc/kibana/kibana.yml
server.host: "0.0.0.0"
server.name: "主机名“
elasticsearch.uri: "http://server:9200"
③启动logstash和kibana服务
systemctl start logstash.service
systemctl start redis.service
④浏览器输入http://localhost:5601,配置filebeat的索引(只需输入filebeat-即可)。

(6)模拟各服务的输入和输出指向的服务。
①模拟logstash agent端把日志文件输入给redis。
设置logstash的转换机制。
规则转换机制都放在 /etc/logstash/conf.d/
  下面。
vim /etc/logstash/conf.d/redis.conf

补充:logstash内带自变量函数
rpm -ql logstash | grep patternt

为了更好的模拟生产环境,我们在此安装httpd服务。
yum install httpd
启动httpd服务
systemctl start httpd.service
建立20个页面
for i in {1..20};do echo "test${i}" > /var/www/html/test${i};done
访问20次生产日志
for i in {1..20};do j=$[$RANDOM%20+1];curl http://172.16.5.3/test${j}.html;done
②模拟logstash server端的输入端是redis,输出端是elasticsearch集群。
vim /etc/logstash/conf.d/redis.conf

③把els集群里面的内容发送给kibana
在第一个框里输入filebeat-*后稍等片刻,kibana会自动识别,OK后下面的按钮会由灰色变为可操控的按钮"Create",如上图所示。点击该按钮后,最后就会呈现如下图所示:

再回过头新建logstash的索引,浏览器输入http://server2:5601,点击左边栏的”Management” ===>   然后点击“index Patterns” ===>

然后点击“Add New”

点击“Crete”按钮创建logstash索引,创建完成后即会展现如下图所示:

三、实现beats的轻量级数据采集器
官方站点:https://www.elastic.co/cn/products/beats

工作模式:
beats——>redis——>logstash server——>els集群
说明:
此时使用beats代替了logstash agent,logstash 和filebeat都具有日志收集功能,filebeat更轻量,占用资源更少,但logstash 具有filter功能,能过滤分析日志。一般结构都是filebeat采集日志,然后发送到消息队列,redis,kafaka。然后logstash去获取,利用filter功能过滤分析,然后存储到elasticsearch中。
本实验在上个实验中基本都做完了,这个实验只做filebeat部分。
①安装包
yum install httpd filebeat -y
②修改配置文件
cd /etc/filebeat
vim filebeat.yml
filebeat.prospectors:     【从哪加载文件,默认即可】
input_type: log               【文件类型,日志,默认即可】
paths:

  • /var/log/httpd/access_log
  •   /var/log/httpd/error_log
    hosts:                    【存放路径】
    ③添加数据
    for i in {1..20};do echo "test $i" > /var/www/html/test${i}.html;done
    启动httpd服务和filebeat服务
    systemctl start httpd
    随意找个主机进行访问,为了得到日志
    for i in {1..20};do j=$[$RANDOM%20+1];curl http://172.16.0.4/test${j}.html
    ④输出给elasticsearch
    vim /etc/filebeat.yml
    output.elasticsearch :
    hosts: ["server1:9200“,“server2:9200”,“server3:9200”]
    直接输出给els不用输出插件了
      ⑤输出给logstash
    vim /etc/filebeat.yml
    output.logstash :
    hosts: ["172.16.0.4:5044]
    vim /etc/logstash/conf.d/Apachelog.conf
    input {
    beats {
    port => 5044
    }
    filter {
    grok {
    match => {
    "message" => "%{HTTPD_COMBINEDLOG}"
    }
    }
    date {
    match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
    }
    mutate {
    rename => {
    "agent" => "user_agent"
    }
    }
    geoip {
    source => "clientip"
    target => "geoip"
    database => "/etc/logstash/maxmind/GeoLite2-City.mmdb"
    }
    output {
    elasticsearsh {
    hosts => ["http://server1:9200","http://server2:9200","http://master:9200"]
    index => "logstash-%{+YYYY.MM.DD}
    document_type => "http_access_logs"
    }
    }
    启动:logstash -f apachelog.conf
    ⑥输出给redis
    编辑filebeat配置文件
    vim /etc/filebeat.yml
    添加:
    output.redis:
    hosts: ["redis服务器"]
    password: "iliunx.io"
    key: "httplog"
    db: 0
    timeout: 5
    重启filebeat
    systemctl restart filebeat
    进入redis查看数据
    redis-cli -a ilinux.io
    查看有多少数据
    LLEN httplogs
    在els server端配置输入机制
    vim /etc/elasticsearch/conf.d/redis2.conf
    input {
    redis {
    batch_count => 1
    data_type => "list"
    key => "httpdlogs"
    host => "192.168.0.2"
    port => 6379
    threads => 5
    password => "ilinux.io"
    }
    }
  filter {
grok {
match => {
"message" => "%{HTTPD_COMBINEDLOG}"
}
}
date {
match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
}
mutate {
rename => {
"agent" => "user_agent"
}
}
geoip {
source => "clientip"
target => "geoip"
database => "/etc/logstash/maxmind/GeoLite2-City.mmdb"
}
output {
elasticsearsh {
hosts => ["http://server1:9200","http://server2:9200","http://server3:9200"]
index => "logstash-%{+YYYY.MM.DD}
document_type => "http_access_logs"
}
}




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-669174-1-1.html 上篇帖子: 详解Linux运维工程师高级篇(大数据安全方向) 下篇帖子: elastic ik中文分词测试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表