傻瓜式部署,只需替換IP與用戶
導讀:
現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化)
下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會快一點點
注意:“如若后續用到sentinl(開源監控警報插件,可webhook接釘釘等),ELK的組件版本應選擇與sentinl版本一致,sentinl版本比ELK組件更新慢”
我的杯具:Plugin sentinl [7.6.1] is incompatible with Kibana [7.9.0]
零、環境
linux mint19
自帶open jdk 11 ( 不能低于1.8 )
一、配置
主目錄創建itcast,然后分配權限,本機使用user0
chown -R user0:user0 /itcast
本機配置:tar包全解壓至 /itcast/ 修改以下組態檔(注意Tab距離以默認檔案為主)
1、elasticsearch相關:
/itcast/(elasticsearch解壓目錄)/config/elasticsearch.yml
# 集群名稱,默認是elasticsearch cluster.name: my-application # 節點名稱 node.name:node-1 # 配置IP埠 network.host:0.0.0.0 http.port: 9200 # 可以指定es的資料存盤目錄,默認存盤在es_home/data目錄下 # path.data: /path/to/data # 可以指定es的日志存盤目錄,默認存盤在es_home/logs目錄下 # path.logs: /path/to/logs # 子集群節點,用的上述節點設定的名稱 discovery.seed_hosts:[node-1] # !!通過配置這個引數來防止集群腦裂現象 (集群總節點數量/2)+1 discovery.zen.minimum_master_nodes= ( master候選節點數量/2+1 ) # 處理跨域的相關引數 http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE http.cors.allow-headers: "X-Reqested-With, Content-Type, Content-Length, X-User"
2、kibana相關:
/itcast/(kibana解壓目錄)/config/kibana.yml
server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://192.168.199.224:9200"] kibana.index: ".kibana" # 自定義安全引數 xpack.encryptedSavedObjects.encryptionKey:encryptedSavedObjects12345678909876543210123 xpack.security.encryptionKey: encryptionKeysecurity12345678909876543210123 xpack.reporting.encryptionKey: encryptionKeyreporting12345678909876543210123 elasticsearch.requestTimeout: 90000 i18n.locale: "zh-CN"
3、logstash相關:
/itcast/(logstash解壓目錄)/config/logstash-sample.conf
input { beats { port => 5044 } } filter { # 重要功能,對日志處理均在此步,自行按需搜索 mutate { split => {"message" => "|"} } mutate { add_field => { "Date" => "%{[message][0]}" # 坑點!!!新版本中%{}里欄位如message需要加上中括號[]作為識別 "Level" => "%{[message][1]}" "result" => "%{[message][2]}" } } mutate { convert => { "Date" => "string" "Leverl" => "string" "result" => "string" } } } output { elasticsearch { hosts => ["http://192.168.199.224:9200"] index => "logstash-%{+YYYY.MM.dd}" } }
4、filebeat相關:( 實際中 filebeat 部署在業務運行的主機上 )
/itcast/(filebeat解壓目錄)/filebeat.yml
filebeat.inputs: - type: log enabled: true paths: #目標檔案,自行匹配 - /var/log/*.log #- /itcast/elasticsearch/logs/* tags: ["spider"] #不需要logstash處理可直接傳ela本身 #output.elasticsearch: # hosts: ["192.168.199.224:9200"] out.logstash: hosts: ["192.168.199.224:5044"] filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 1 setup.kibana: host: "192.168.199.224:5601"
5、其他:
sentinl插件安裝(按需)
(kibana目錄)/bin/kibana-plugin install file:~/sentinl-v7.6.1.zip # zip包自行github尋找
/etc/security/limits.conf 尾部加上欄位
* soft nproc 65536 * hard nproc 65536 * soft nofile 65536 * hard nofile 65536
# 執行命令 su - user0 ulimit -n # 回傳65536即設定成功
二、運行
用 ufw 開啟有關埠:es、kibana、logstash ( 實際看業務執行的主機的 filebeat 配置會用到什么埠)
sudo ufw allow 9200 sudo ufw allow 5601 sudo ufw allow 5044 sudo ufe enable
運行elasticsearch,此需要切換到user0
su - user0
cd /itcast/(elasticsearch解壓目錄) ./bin/elasticsearch
運行另外的組件( 實際 filebeat 在業務運行的主機上運行)
cd /itcast/(kibana解壓目錄) ./bin/kibana
cd /itcast/(logstash解壓目錄) ./bin/logstash -f ./config/logstash-sample.conf
cd /itcast/(filebeat解壓目錄) ./filebeat -e -c filebeat.yml
三、測驗
新建控制臺,cd至 filebeat 監控日志目錄,此處為 /var/log
重復執行以下命令
echo "2020-09-01 | DEBUG | create a logmsg demo" >> demo.log
打開kibana(此處為192.168.199.224:5601)>>
選單打開Stack Management( 管理中心 )>>
kibana索引模式創建索引( logstash 的配置輸出中 index => "logstash-%{+YYYY.MM.dd}" ),此處輸入 logstash-* 即可 >>
選單打開 discover,創建新條目,選擇上一步的索引,調整時間段即可回傳相關資料
選單打開日志,選擇索引 logstash-* 亦可回傳流式資料
kibana簡易食用方法: 創建索引 (視為資料源,操作的根本) >> 創建表格( discover ) >> 創建可視化(Visualize 餅圖,柱形圖等……) >> 創建儀表盤(dashboard 把可視化組合起來) ==========================分界線========================== 持續更新,當筆記用 1、logstash插件multiline,用于報錯而產生的多行時能匹配成一條日志資料( 默認日志多少行就有多少條資料囧)# 安裝插件
./bin/logstash-plugin install logstash-filter-multiline
# logstash-simple.conf中的filter里加入
multiline {
pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}"
negate => true
what => "previous"
}
# multiline {
# charset=>... #可選 字符編碼
# max_bytes=>... #可選 bytes型別 設定最大的位元組數
# max_lines=>... #可選 number型別 設定最大的行數,默認是500行
# multiline_tag... #可選 string型別 設定一個事件標簽,默認是multiline
# pattern=>... #必選 string型別 設定匹配的正則運算式
# patterns_dir=>... #可選 array型別 可以設定多個正則運算式
# negate=>... #可選 boolean型別 默認false不顯示,可設定ture
# what=>... #必選 向前previous , 向后 next
#
# }
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/1089.html
標籤:大數據
上一篇:es~通過ElasticsearchTemplate進行聚合~嵌套聚合
下一篇:實時數倉在滴滴的實踐和落地