• Elasticsearch12-ELK


    ELK

    1.Elasticsearch 做数据存储
    2.Logstash 采集日志
    3.Kibana 可视化

    采集日志增加filebeat组件

    1.beat体积小、简单、占用客户端资源少。
    2.Logstash功能全,占用资源多,启动占用大量jvm资源。
    
    
    #beat +logstash使用
    1.beat放在客户端采集日志
    2.beat 输出到logstash集群进行过滤
    3.logstash 进行input filter output

    架构图

    logstash输出到elasticsearch

    # vim logstash-sample.conf
    input {
      beats {
        port => 5044
      }
    }
    
    output {
    
     if "ke-nginx" in [tags] {
            elasticsearch {
                    hosts => ["http://192.168.244.191:9201"] #输出到es
                    index => "logstash-es-%{+YYYY.MM.dd}"    #索引格式
            }
     }
    stdout { codec => rubydebug} #输出到控制台,用来调试
    
    }
    
    启动:
    ./bin/logstash -f config/logstash-sample.conf

    filebeat采集nginx日志,发送给logstash

    #vim filebeat.yml
    
    #1. 修改采集数据配置
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /usr/local/nginx/logs/access.log
      tags: ["ke-nginx"]
    
    #2.修改输出配置
    output.logstash:
      hosts: ["192.168.244.195:5044"]
    
    #output.console: 用来调试,输出到控制台
    # pretty: true
    
    启动:
     ./filebeat -e -c filebeat.yml

    结果: nginx日志增加、成功写入filebeat、成功写入logstash、最终写入es,创建索引的格式如下如

    ---------- logstash可以解决json格式化问题,因nginx自带json格式化,所以使用nginx_json-----------

    nginx增加json格式化

    # vim nginx.conf
    
            log_format log_json '{ "@timestamp": "$time_local", '
                    '"remote_addr": "$remote_addr", '
                    '"referer": "$http_referer", '
                    '"request": "$request", '
                    '"status": $status, '
                    '"bytes": $body_bytes_sent, '
                    '"agent": "$http_user_agent", '
                    '"x_forwarded": "$http_x_forwarded_for", '
                    '"up_addr": "$upstream_addr",'
                    '"up_host": "$upstream_http_host",'
                    '"up_resp_time": "$upstream_response_time",'
                    '"request_time": "$request_time"'
                    ' }';
            access_log  logs/access.log log_json;
    # 使用nginx自带json格式插入filebeat,在写入logstash 在写入elasticsearch

    filebeat修改为json格式接收

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /usr/local/nginx/logs/access.log
      tags: ["ke-nginx"]
      json.keys_under_root: true
      json.add_error_key: true
      json.message_key: log
    
    
    # 配置来源es官网: https://www.elastic.co/guide/en/beats/filebeat/7.6/filebeat-input-log.html

    结果: 可以看到nginx配置的字段变成了elasticsearch的文档字段

    filebeat和flume区别

    flume是运行在jvm上的,占用客户端资源,所以不建议使用

    kibana查看日志

    监控

    1.起一套新的配置
    2.packetbeat + logstash + elasticsearch
    3.监控功能
        a.用来监控业务集群
        b.用来统计各个索引访问次数、
        c.当主节点挂掉 或者维护,采集的日志会丢失,监控日志可以进行保存

    packetbeat.yml配置

    #监控的es
    - type: http
      ports: [9200]
      send_request: true
      include_body_for: ["application/json", "x-www-form-urlencoded"]
    
    # 输出到logstash, 可以配置多个,这样logstash可以在这里做负载均衡
    output.logstash:
      hosts: ["192.168.244.191:5044"]

    logstash配置

    output {
        
      if "search" in [request] {
          elasticsearch {
            hosts => ["http://192.168.244.191:9200"]
            index => "monitor-es-%{+YYYY.MM.dd}"  
        }
      }  
    }    

    启动

    ./packetbeat -e -c packetbeat.yml

    结果: 监控索引创建

    es和mongodb

    1.mongo没有倒排索引
    2.mongo主要做大数据量查询
    3.mongo没有es这么多的聚合查询、分析、 集群自我识别
    4.两者不能相互替代
  • 相关阅读:
    常用python机器学习库总结
    链接器link.exe 编译器cl.exe 资源编译器rc.exe
    LRESULT与wParam和lParam的问题
    CreateDialog和DialogBox
    如何通俗易懂地解释卷积?
    深度学习在graph上的使用
    一文弄懂神经网络中的反向传播法——BackPropagation
    WM_COMMAND消息
    win32编程中消息循环和WndProc()窗口过程函数
    使用UEditor 的时候,ajax注意使用同步的方法
  • 原文地址:https://www.cnblogs.com/bigdata-familyMeals/p/15291677.html
Copyright © 2020-2023  润新知