美文网首页
基于Elasticsearch+Fluentd+Kibana的日

基于Elasticsearch+Fluentd+Kibana的日

作者: 阿杰Alex | 来源:发表于2019-06-23 12:22 被阅读0次

    一个完整的日志系统,需要包含以下几个主要特点:`

    收集-能够采集多种来源的日志数据

    传输-能够稳定的把日志数据传输到中央系统

    存储-如何存储日志数据

    分析-可以支持 UI 分析

    警告-能够提供错误报告,监控机制

    为了提供分布式的实时日志搜集和分析的监控系统,我们采用了业界通用的日志数据管理解决方案 - 它主要包括 Elasticsearch 、 Logstash 和 Kibana 三个系统。通常,业界把这套方案简称为ELK,取三个系统的首字母,但是我们实践之后将其进一步优化为EFK,F代表Filebeat,用以解决Logstash导致的问题。其实Logstash 包含多种替代方案(Filebeat、Fluentd、rsyslog、syslog-ng 以及 Logagent。而EFK中的F究竟指Filebeat还是Fluentd,也有不同的说法。

    Fluentd是一个消息采集,转化,抓发工具,目的是提供中心化的日志服务。基于CRuby实现,并对性能表现关键的一些组件用C语言重新实现,整体性能不错。支持所有主流日志类型,插件支持较多,性能表现较好。

    Logstash支持所有主流日志类型,插件支持最丰富,可以灵活DIY,但性能较差,JVM容易导致内存使用量高。

    Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能

    Kibana 也是一个开源和免费的工具,Kibana可以为 td-agent和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

    Elasticsearch

    一个节点(node)就是一个Elasticsearch实例,一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数据和负载。当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据。

    集群中一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更,例如新建或删除索引、增加或移除节点等。主节点不参与文档级别的变更或搜索,这意味着在流量增长的时候,该主节点不会成为集群的瓶颈。

    做为用户,我们能够与集群中的任何节点通信,包括主节点。每一个节点都知道文档存在于哪个节点上,它们可以转发请求到相应的节点上。我们访问的节点负责收集各节点返回的数据,最后一起返回给客户端。这一切都由Elasticsearch处理。

    node-1

    #yum -y install java //下载java

    #java -version //检测版本号

    openjdk version "1.8.0_171"

    OpenJDK Runtime Environment (build 1.8.0_171-b10)

    OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)

    #wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.rpm

    # rpm -ivh elasticsearch-6.3.1.rpm //安装

    # vim /etc/elasticsearch/elasticsearch.yml //修改配置文件

    cluster.name: my-application

    node.name: node-1

    node.master: true

    network.host: 172.21.0.9

    http.port: 9200

    /etc/init.d/elasticsearch start //启动

    curl http://192.168.124.173:9200/_cat/ //尝试链接 如果链接失败,关闭防火墙,查看配置文件

    #curl http://192.168.124.173:9200/_cat/health

    # curlhttp://192.168.124.173:9200/_cat/nodes

    node-2

    # yum install java

    # java -version

    #wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.rpm

    # rpm -ivh elasticsearch-6.3.1.rpm

    # vim /etc/elasticsearch/elasticsearch.yml //更改配置

    cluster.name: my-application

    node.name: node-2

    node.master: false

    network.host: 192.168.124.251

    http.port: 9200

    discovery.zen.ping.unicast.hosts: ["host1", "192.168.124.173"]

    # /etc/init.d/elasticsearch start //启动服务

    # /etc/init.d/elasticsearch status //查看状态

    # curlhttp://192.168.124.251:9200/_cat

    node-1

    Fluentd(tdagent)

    wget http://packages.treasuredata.com.s3.amazonaws.com/3/redhat/7/x86_64/td-agent-3.2.0-0.el7.x86_64.rpm

    rpm -ivh td-agent-3.2.0-0.el7.x86_64.rpm --force --nodeps

    yum install -y libcurl-devel

    opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch

    #cd /etc/td-agent/

    #cat td-agent.conf

    <source>

    @type forward

    port 24224

    </source>

    ####################################

    <source>

    @type tail

    path /var/log/httpd/access_log

    pos_file /var/log/td-agent/httpd-access.log.pos

    tag apache.access

    <parse>

    @type apache2

    </parse>

    </source>

    ####################################

    <match debug.**>

    @type stdout

    </match>

    ####################################

    <match *.**>

    @type copy

    <store>

    @type elasticsearch

    host 10.0.0.9

    port 9200

    logstash_format true

    logstash_prefix fluentd-${tag}

    logstash_dateformat %Y%m%d

    include_tag_key true

    type_name access_log

    tag_key @log_name

    flush_interval 1s

    </store>

    <store>

    @type stdout

    </store>

    </match>

    # /etc/init.d/td-agent restart

    # yum -y install http

    # systemctl start httpd

    # chmod 777 /var/log/httpd/

    # curl 'http://192.168.124.173:9200/_cat/indices?v'

    # systemctl stop firewalld

    # wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.1-x86_64.rpm

    # rpm -ivh kibana-6.3.1-x86_64.rpm

    # vim /etc/kibana/kibana.yml

    server.port: 5601

    server.host: “192.168.124.173"

    elasticsearch.url: "http://192.168.124.173:9200

    kibana.index: ".kibana”

    # /etc/init.d/kibana restart

    #tail -f /var/log/kibana/kibana.stderr

    访问kibana web界面

    http://192.168.124.173:5601/

    相关文章

      网友评论

          本文标题:基于Elasticsearch+Fluentd+Kibana的日

          本文链接:https://www.haomeiwen.com/subject/qbyiqctx.html