一、ELK服务架构解析

(1)收集记录日志流程思考

//备注:思考如果我们自己搭建一个日志收集平台应该如何操作和搭建?具体会有哪些动作?(1)目的:将线上的服务器日志不断的收集到一个统一的平台,并且提供一个可视化的界面能对所有的日志进行索引查询(2)架构拆解之需要哪些步骤:        线上服务器日志收集工具----> 统一的日志存储平台----> 日志分析工具 ----> 可视化界面(3)以上步骤,对应ELK就是:        「L代表」logstash[或者filebeat]:日志收集工具,部署在线上服务器中,对相关的yml配置文件进行配置可以对日志进行收集并传输到统一的日志存储平台,其中filebeat更轻量,一般使用filebeat        「E代表」Elasticsearch:日志分析工具,用来对所有的日志创建各种索引进行搜索等,也是我们常说的搜索引擎        「K代表」Kibana:可视化界面,用来对日志进行可视化展示和搜索,相当于一个管理界面 

(2)ELK架构需要安装的服务

  1. 工具

    工具名称作用部署位置配置文件备注
    filebeat收集日志产生日志的线上服务器,比如线上有两台web服务器,那么需要在两台web服务器都部署filebeatfilebeat.yml轻量,推荐
    Logstash收集日志产生日志的服务器上pipelines.yml
    logstash.yml
    和filebeat比较更重,线上服务器本身运行web服务,部署logstash更耗费线上资源,不推荐
    elasticsearch日志分析工具,搜索引擎filebeat或者logstash的输出服务器elasticsearch.yml能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能
    Kibana日志可视化平台配合elasticsearch使用kibana.yml通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示
  2. 各配置文件解析

    (1)Filebeat配置文件主要配置解析

//filebeat配置文件filebeat.yml解析   filebeat.inputs:   - type: log      # Change to true to enable this input configuration.     enabled: true        # Paths that should be crawled and fetched. Glob based paths.     paths:      //这一项配置,代表要收集日志的目录       - /opt/nginx-1.14.0/logs/stars/star.access.log       output.logstash:     # The Logstash hosts     hosts: ["10.3.0.115:5401"]   //该项是日志收集以后到一个统一平台,作为输出的IP地址      # Configure processors to enhance or manipulate events generated by the beat.   processors:     - add_host_metadata: ~     - add_cloud_metadata: ~     - add_docker_metadata: ~     - add_kubernetes_metadata: ~

(2)logstash配置文件主要配置解析【主要四种插件,inputs,codecs,filters,outputs。】

备注:logstash插件查询:https://github.com/logstash-p...
//logstash配置文件解析,主要是grok插件的正则表达式,可以网上参考需要的例子http://blog.csdn.net/liukuan73/article/details/52318243input {   //input插件,输入    beats {        host => "0.0.0.0"        port => 5401    }}filter {   //filter插件,过滤   grok {  //grok插件,匹配一切数据,通过正则表达式来识别日志中的相关数据块      match => { "message" => "%{IPORHOST:remote_ip} - %{IPORHOST:host} - \[%{HTTPDATE:access_time}\] \"%{WORD:http_method} %{DATA:url} HTTP/%{NUMBER:http_version}\" - %{DATA:request_body} - %{INT:http_status} %{INT:body_bytes_sent} \"%{DATA:refer}\" \"%{DATA:user_agnet}\" \"%{DATA:x_forwarded_for}\" \"%{DATA:upstream_addr}\" \"response_location:%{DATA:response_location}\"" }        }}output {   //output插件,输出,logstash输出到elasticsearch elasticsearch {   hosts => ["10.3.1.15:9200"]   index => "star_nginx_access_index_pattern-%{+YYYY.MM.dd}"   user => "elastic"   password => "!@#j3kjdfkXC" }}

(3)elasticsearch配置文件解析

#设置集群名cluster.name: my-cluster #设置节点名     node.name: node-1  #设置数据保存文件path.data: /usr/local/elk/data#设置日志保存文件path.logs: /usr/local/elk/logs#设置监听主机地址,允许任意主机均可访问network.host: 0.0.0.0#默认使用9200端口http.port: 9200

(4)klbana配置文件解析

#设置监听端口为5601server.port: 5601#设置可访问的主机地址server.host: "0.0.0.0"#设置elasticsearch主机地址elasticsearch.hosts: ["http://localhost:9200"]#如果elasticsearch设置了用户名密码,那么需要配置该两项,如果没配置,那就不用管#elasticsearch.username: "user"#elasticsearch.password: "pass"

二、参考链接

参考链接