logstash是一個數據分析軟件,主要目的是分析log日誌。整一套軟件能夠看成一個MVC模型,logstash是controller層,Elasticsearch是一個model層,kibana是view層。首先將數據傳給logstash,它將數據進行過濾和格式化(轉成JSON格式),而後傳給Elasticsearch進行存儲、建搜索的索引,kibana提供前端的頁面再進行搜索和圖表可視化,它是調用Elasticsearch的接口返回的數據進行可視化。logstash和Elasticsearch是用Java寫的,kibana使用node.js框架。前端
logstash架構java
ogstash工做時,主要設置3個部分的工做屬性。
input:設置數據來源
filter:能夠對數據進行必定的加工處理過濾,可是不建議作複雜的處理邏輯。這個步驟不是必須的
output:設置輸出目標 node
Elasticsearch 是一個分佈式、高擴展、高實時的搜索與數據分析引擎。它能很方便的使大量數據具備搜索、分析和探索的能力。充分利用Elasticsearch的水平伸縮性,能使數據在生產環境變得更有價值。Elasticsearch 的實現原理主要分爲如下幾個步驟,首先用戶將數據提交到Elasticsearch 數據庫中,再經過分詞控制器去將對應的語句分詞,將其權重和分詞結果一併存入數據,當用戶搜索數據時候,再根據權重將結果排名,打分,再將返回結果呈現給用戶。 linux
三、kibana數據庫
Kibana是一個針對Elasticsearch的開源分析及可視化平臺,用來搜索、查看交互存儲在Elasticsearch索引中的數據。使用Kibana,能夠經過各類圖表進行高級數據分析及展現。bootstrap
Kibana讓海量數據更容易理解。它操做簡單,基於瀏覽器的用戶界面能夠快速建立儀表板(dashboard)實時顯示Elasticsearch查詢動態。vim
應用 | 版本 | 節點 |
---|---|---|
logstash | 7.3 | 192.168.11.11 |
elasticsearch | 7.3 | 192.168.11.十一、192.168.11.十二、192.168.11.13 |
kibana | 7.3 | 192.168.11.13 |
安裝包下載地址:連接:https://pan.baidu.com/s/17BeXEOIAWCTcr-qCI_1cpA 提取碼:9uk4跨域
vi /etc/security/limits.conf 增長的內容 root soft nofile 65535 root hard nofile 65535 * soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 * soft memlock unlimited * hard memlock unlimited
vi /etc/security/limits.d/20-nproc.conf 調整成如下配置 * soft nproc 65535 root soft nproc unlimited
vi /etc/sysctl.conf 增長的內容 vm.max_map_count=655360 fs.file-max=655360
reboot
firewall-cmd --add-port=9200/tcp --permanent firewall-cmd --add-port=9300/tcp --permanent 從新加載防火牆規則 firewall-cmd --reload 或 systemctl stop firewalld systemctl enable firewalld
mkdir /data01/elk/
yum -y install jdk-8u162-linux-x64.rpm #查看java版本 java -version
#一、rpm包安裝 yum -y install logstash-7.3.0.rpm #二、修改配置文件 cp logstash.yml{,.bak} #改後 logstash.yml path.data: /data01/elk/logstash/data pipeline.workers: 4 pipeline.batch.size: 1024 path.config: /data01/elk/logstash/config/conf.d path.logs: /data01/elk/logstash/logs http.host: "0.0.0.0" http.port: 9600 #改後 startup.options文件 可選擇不改 LS_PIDFILE=/data01/elk/logstash/logstash.pid LS_GC_LOG_FILE=/data01/elk/logstash/logs/gc.log #、可根據主機內存大小,適當調整一下參數 vim jvm.options -Xms1g -Xmx1g
建立對應的路徑瀏覽器
mkidr -pv /data01/elk/logstash/{data,logs,config} chown -R 1000:1000 /data01/elk/logstash
啓動logstash架構
systemctl start logstash systemctl enable logstash
本次是3master3節點的部署
安裝elasticsearch
yum -y install elasticsearch
配置elasticsearch
#elasticsearch.yml cluster.name: elk node.name: elk02 # 自定義屬性添加到節點上 node.attr.rack: r1 node.master: true #node.voting_only: true node.data: true #node.ingest: true #node.ml: false #開啓監控xpack xpack.monitoring.enabled: true #機器學習關閉 xpack.ml.enabled: false # 是否使用http協議對外提供服務,默認爲true,開啓 #http.enabled: true cluster.remote.connect: false path.data: /data01/elasticsearch/lib,/data02/elasticsearch/lib path.logs: /data01/elasticsearch/logs #鎖定物理內存地址,防止es內存被交換出去,也就是避免es使用swap交換分區,頻繁的交換,會致使IOPS變高 bootstrap.memory_lock: true network.host: 192.168.11.12 http.port: 9200 ##discovery.zen.ping.unicast.hosts舊版配置 discovery.seed_hosts: ["192.168.11.11","192.168.11.12","192.168.11.13"] #Elasticsearch7新增參數,寫入候選主節點的設備地址,來開啓服務時就能夠被選爲主節點 cluster.initial_master_nodes: ["192.168.11.11","192.168.11.12","192.168.11.13"] # 設置集羣中N個節點啓動時進行數據恢復,默認爲1。 gateway.recover_after_nodes: 2 #設置是否能夠經過正則或者_all刪除或者關閉索引 action.destructive_requires_name: true network.tcp.no_delay: true network.tcp.keep_alive: true network.tcp.reuse_address: true network.tcp.send_buffer_size: 128mb network.tcp.receive_buffer_size: 128mb #transport.tcp.port: 9301 transport.tcp.compress: true http.max_content_length: 200mb #開啓跨域訪問 http.cors.enabled: true http.cors.allow-origin: "*" cluster.fault_detection.leader_check.interval: 15s discovery.cluster_formation_warning_timeout: 30s cluster.join.timeout: 120s cluster.publish.timeout: 90s cluster.routing.allocation.cluster_concurrent_rebalance: 16 cluster.routing.allocation.node_concurrent_recoveries: 16 cluster.routing.allocation.node_initial_primaries_recoveries: 16
另外兩個只須要修改node.name
,network.host
爲相應的節點
讓init啓動的程序解除限制,和系統limit一致
sed -i 39c\LimitMEMLOCK=infinity /usr/lib/systemd/system/elasticsearch.service
建立相應目錄
mkdir -pv /data01/elk/elasticsearch/{lib,logs} chown -R elasticsearch:elasticsearch /data01/elk/elasticsearch
啓動elasticsearch服務
#重載系統服務 systemctl daemon-reload systemctl start elasticsearch systemctl enable elasticsearch
安裝kibana
yum -y install kibana-7.3.0-x86_64.rpm
配置kibana
注:修改配置最好先備份後修改
#vim kibana.yml server.port: 5601 server.host: "192.168.11.13" elasticsearch.hosts: ["http://192.168.11.12:9200"] i18n.locale: "zh-CN"
啓動kibana
systemctl start kibana systemctl enable kibana
排錯可經過如下方式排查
journalctl -u elasticsearch -f tail -500f /data01/elk/elasticsearch/logs/elk.log