//備註:思考若是咱們本身搭建一個日誌收集平臺應該如何操做和搭建?具體會有哪些動做? (1)目的:將線上的服務器日誌不斷的收集到一個統一的平臺,而且提供一個可視化的界面能對全部的日誌進行索引查詢 (2)架構拆解之須要哪些步驟: 線上服務器日誌收集工具----> 統一的日誌存儲平臺----> 日誌分析工具 ----> 可視化界面 (3)以上步驟,對應ELK就是: 「L表明」logstash[或者filebeat]:日誌收集工具,部署在線上服務器中,對相關的yml配置文件進行配置能夠對日誌進行收集並傳輸到統一的日誌存儲平臺,其中filebeat更輕量,通常使用filebeat 「E表明」Elasticsearch:日誌分析工具,用來對全部的日誌建立各類索引進行搜索等,也是咱們常說的搜索引擎 「K表明」Kibana:可視化界面,用來對日誌進行可視化展現和搜索,至關於一個管理界面
工具php
工具名稱 | 做用 | 部署位置 | 配置文件 | 備註 |
---|---|---|---|---|
filebeat | 收集日誌 | 產生日誌的線上服務器,好比線上有兩臺web服務器,那麼須要在兩臺web服務器都部署filebeat | filebeat.yml | 輕量,推薦 |
Logstash | 收集日誌 | 產生日誌的服務器上 | pipelines.yml logstash.yml |
和filebeat比較更重,線上服務器自己運行web服務,部署logstash更耗費線上資源,不推薦 |
elasticsearch | 日誌分析工具,搜索引擎 | filebeat或者logstash的輸出服務器 | elasticsearch.yml | 能對大容量的數據進行接近實時的存儲、搜索和分析操做。一般被用做某些應用的基礎搜索引擎,使其具備複雜的搜索功能 |
Kibana | 日誌可視化平臺 | 配合elasticsearch使用 | kibana.yml | 一般與 Elasticsearch 配合使用,對其中數據進行搜索、分析和以統計圖表的方式展現 |
(1)Filebeat配置文件主要配置解析node
//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。】nginx
備註: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配置文件解析git
#設置集羣名 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配置文件解析github
#設置監聽端口爲5601 server.port: 5601 #設置可訪問的主機地址 server.host: "0.0.0.0" #設置elasticsearch主機地址 elasticsearch.hosts: ["http://localhost:9200"] #若是elasticsearch設置了用戶名密碼,那麼須要配置該兩項,若是沒配置,那就不用管 #elasticsearch.username: "user" #elasticsearch.password: "pass"
參考連接web