ELK日志系统架构解析笔记

8次阅读

共计 2642 个字符,预计需要花费 7 分钟才能阅读完成。

一、ELK 服务架构解析

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

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

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

  1. 工具

    工具名称 作用 部署位置 配置文件 备注
    filebeat 收集日志 产生日志的线上服务器,比如线上有两台 web 服务器,那么需要在两台 web 服务器都部署 filebeat filebeat.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/52318243
input {   //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 配置文件解析

# 设置监听端口为 5601
server.port: 5601

#设置可访问的主机地址
server.host: "0.0.0.0"

#设置 elasticsearch 主机地址
elasticsearch.hosts: ["http://localhost:9200"]

#如果 elasticsearch 设置了用户名密码, 那么需要配置该两项, 如果没配置, 那就不用管
#elasticsearch.username: "user"
#elasticsearch.password: "pass"

二、参考链接

参考链接

正文完
 0