• 搭建ELK收集PHP的日志


    架构:

    filebeat --> redis -->logstash --> es --> kibana

    • 每个客户端需要安装filebeat收集PHP日志
    • filebeat把收集到的日志传到redis
    • logstash从redis读取日志,读取一条日志就从redis里删除一条日志
    • logstash把日志发送到es
    • 最后kibana可视化查询日志

    es数据安全建议

    • es设置为三个节点为一个集群,集群中的一个节点会被选为主节点,它将临时管理集群级别的一些变更,例如新建和删除索引,增加或移除节点.主节点不参与文档级别的变更或搜索,这意味着流量增长的时候,该节点不会成为集群的瓶颈.

    作为用户,我们能与集群中的任何一个节点通信,包括主节点.每一个节点都知道文档存在哪个节点上(因为做了分片,所以一个文档是分散到集群中所有节点上的),他们可以转发请求到相应的节点上.我们访问的节点负责收集各节点返回的数据,最后一起返回给客户端

    • es配置文件里设置分片数量和副本数量,分片数量就是把一个文档拆分开来存到集群的机器上,副本就是把数据备份一份
    • es配置文件开始恢复备份设置为2,意思是只要有两个节点启动就开始恢复数据,

     ELK stack搭建

    环境说明

    172.16.1.225  es,logstash,redis,kibana(服务器端)

    172.16.1.224  filebeat(每个客户端必装收集php)

    安装filebeat

    172.16.1.224# rpm -ivh filebeat-5.2.1-x86_64.rpm

    配置filebeat收集日志

    filebeat.prospectors:
    
    - input_type: log
      paths:
        - /alidata1/www/timecash22/api3/application/logs/api3/2017/*/*.php
      document_type: api3_json
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
    
    - input_type: log
      paths:
        - /alidata1/www/timecash22/api3/application/logs/2017/*/*.php
      document_type: api3_error_log
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
    
    - input_type: log
      paths:
        - /alidata1/www/timecash22/wx/application/logs/2017/*/*.php
      document_type: wx_error_log         #这是的key是什么,到redis里就是什么
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
    
    
    output.redis:
        hosts: ["10.45.40.112"]
        password: "timecash2016"
        #key: "api3_json"
        keys:
          - key: "%{[type]}"

    安装elasticsearch

    172.16.1.225# rpm -ivh elasticsearch-2.4.3.rpm

    配置elasticsearch

     cluster.name: ELK
     node.name: node-1
     path.data: /data/elasticsearch
     path.logs: /var/log/elasticsearch
     network.host: 0.0.0.0

    安装logstash

    172.16.1.225# tar -zxvf logstash-2.4.0.tar.gz
    172.16.1.225# cd logstash-2.4.0
    172.16.1.225# mkdir  conf  #创建配置文件存放目录

    配置logstash从redis读取数据,然后输出到es

    input {
        redis {
            host => "redis的iP"
            password => "redis的密码"
            port => 6379
            key => "api3_json"
            type => "api3_json"
            data_type => "list"
        }
        }
    filter {
        date {
            match => [ "timestamp" , "YYYY-MM-dd HH:mm:ss" ]  #时间,从kibana上显示每条日志的时间
    }
    }
    output {
            elasticsearch {
                    hosts => "elasticsearch的IP"
                    #protocol =>"http"
                    index=>"api3_json_%{+YYYY.MM.dd}"  #存到es里索引的名称
                    document_type=>"api3_json"
            }
            stdout{
    
               codec => rubydebug
    
    }
    }

    安装kibana

    172.16.1.225# tar -zxvf kibana-4.6.0-linux-x86_64.tar.gz

    配置kibana

    172.16.1.225# grep -Ev "^$|#" kibana-4.6.0-linux-x86_64/config/kibana.yml
     server.host: "0.0.0.0"
     elasticsearch.url: "http://localhost:9200"#elasticsearch的地址

    启动kibana

    172.16.1.225# ./bin/kibana -c config/kibana.yml

    测试es是否有数据

    打开X.X.X.X:9200/_plugin/head

    测试kibana是否能查看数据

    打开x.x.x.x:5601

     

  • 相关阅读:
    PTA(Advanced Level)1009.Product of Polynomials
    PTA(Advanced Level)1002.A+B for Polynomials
    PTA(Advanced Level)1065.A+B and C
    PTA(Advanced Level)1046.Shortest Distance
    PTA(Advanced Level)1042.Shuffling Machine
    PTA(Basic Level)1046.划拳
    PTA(Basic Level)1060.爱丁顿数
    PTA(Basic Level)1053.住房空置率
    PTA(Basic Level)1023.组个最小数
    DOM4J熟知
  • 原文地址:https://www.cnblogs.com/chadiandianwenrou/p/6639553.html
Copyright © 2020-2023  润新知