一、ELK服务架构解析
(1)收集记录日志流程思考
//备注:思考如果我们自己搭建一个日志收集平台应该如何操作和搭建?具体会有哪些动作?
(1)目的:将线上的服务器日志不断的收集到一个统一的平台,并且提供一个可视化的界面能对所有的日志进行索引查询
(2)架构拆解之需要哪些步骤:
线上服务器日志收集工具----> 统一的日志存储平台----> 日志分析工具 ----> 可视化界面
(3)以上步骤,对应ELK就是:
「L代表」logstash[或者filebeat]:日志收集工具,部署在线上服务器中,对相关的yml配置文件进行配置可以对日志进行收集并传输到统一的日志存储平台,其中filebeat更轻量,一般使用filebeat
「E代表」Elasticsearch:日志分析工具,用来对所有的日志创建各种索引进行搜索等,也是我们常说的搜索引擎
「K代表」Kibana:可视化界面,用来对日志进行可视化展示和搜索,相当于一个管理界面
(2)ELK架构需要安装的服务
-
工具
工具名称 作用 部署位置 配置文件 备注 filebeat 收集日志 产生日志的线上服务器,比如线上有两台web服务器,那么需要在两台web服务器都部署filebeat filebeat.yml 轻量,推荐 Logstash 收集日志 产生日志的服务器上 pipelines.yml
logstash.yml和filebeat比较更重,线上服务器本身运行web服务,部署logstash更耗费线上资源,不推荐 elasticsearch 日志分析工具,搜索引擎 filebeat或者logstash的输出服务器 elasticsearch.yml 能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能 Kibana 日志可视化平台 配合elasticsearch使用 kibana.yml 通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示 - 各配置文件解析
如果想要查看如何配置ELK,还可以查看另一篇笔记:https://segmentfault.com/a/11...
(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"
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。