ELKF搭建及使用全程序(7.8版本)
- 前言
- ELKF框架
- ELKF成員介紹
- 運行流程
- ---------------------------------------------------------------------------------------
- FileBeat搭建
- LogStash搭建
- Elasticsearch搭建
- Kibana搭建
- 測驗
前言
講真的現在互聯網的技術更新換代實在是太快,ELK還沒出幾天,就又出了ELKF,好不容易找到幾個6.x的版本教程,然而7.x的版本配置又和6.x天差地別,所以最好的辦法真的是去看官方檔案!本文僅適用于以7.8版本!
ELKF框架

先說一下個人對ELKF的理解,只是看搭建和使用的可以跳過這個環節,
ELKF成員介紹
E:簡稱是Es(elasticsearch),搜索引擎,至于為什么要用ES,第一、他能存資料,第二、對于日志這些大量的資料,搜索引擎能快速定位到記錄,要詳細了解ES的話,網上一搜大把資料,也可以看看我歷史博文講ES原理的,
L:全稱是LogStash,用于收集日志以及處理日志后丟給ES存盤和檢索,
K:全稱是Kibana,可以理解成資料展示系統即可(因為我現在還沒好好研究這玩意,,)
F:全稱是FileBeat,對ELK中LogStash的中收集日志功能優化后的結果輸出,LogStash直接來收集日志的話,是通過TCP連接,存在掉包的可能,并且logStash記憶體開銷也比較大,
運行流程
例如有A,B,C三個系統和他們的日志檔案,
1、首先FileBeat會讀取日志檔案,并且把獲取到的日志發送給LogStash;
2、LogStash獲取到FileBeat發來的增量日志后,進行各種匹配過濾取,存入ES;
3、Kibana從Es中查詢資料進行展示;
---------------------------------------------------------------------------------------
FileBeat搭建
FileBeat的配置是最簡單的,解壓后,編輯 filebeat.yml檔案,(注:# 標記的是重要且需要修改自定義的地方)
filebeat:
inputs:
-
paths:
- C:/Users/DELL/Desktop/ELK7.2/logs/*.log # 日志檔案所在實際路徑
fields:
service: project_name
output:
logstash:
hosts: ["127.0.0.1:4567"] # LogStash的地址
保存后命令啟動
./filebeat.exe -e -c filebeat.yml
LogStash搭建
解壓后在Bin檔案夾新建 logstash.conf,輸入以下配置
input {
beats {
# 占用埠
port => 4567
}
}
filter {
#定義資料的格式
grok {
match => { "message" => "%{DATA:timestamp}\|%{IP:serverIp}\|%{IP:clientIp}\|%{DATA:logSource}\|%{DATA:userId}\|%{DATA:reqUrl}\|%{DATA:reqUri}\|%{DATA:refer}\|%{DATA:device}\|%{DATA:textDuring}\|%{DATA:duringTime:int}\|\|"}
}
#定義時間戳的格式
date {
match => [ "timestamp", "yyyy-MM-dd-HH:mm:ss" ]
locale => "cn"
}
#定義客戶端的IP是哪個欄位(上面定義的資料格式)
geoip {
source => "clientIp"
}
}
output {
# 輸出到控制臺,方便測驗,線上環境可以刪掉
stdout { codec => rubydebug }
elasticsearch {
# ES地址
hosts => "http://127.0.0.1:9200"
# ES索引
index => "log_test"
}
}
啟動命令:
./logstash -f logstash.conf
Elasticsearch搭建
在conf/elasticsearch.yml加入以下配置,這個檔案是最重要的,問題也是最多的,其他可能還會出一些問題,網上搜一下即可解決,
http.port: 9200
network.host: 0.0.0.0 # 這個改為服務器IP,本地測驗的話不用管
node.name: node-1
discovery.type: single-node # 集群的話,用另外一個配置,二者取一即可
http.cors.enabled: true
http.cors.allow-origin: '*' # 這個一定要是單引號!!!這句話看完記得刪掉
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
ES啟動這里有個基本都會踩的通坑,就是ROOT權限不能啟動,需要新建一個用戶,授予權限即可;
啟動命令:進入bin目錄,
elasticsearch #后臺啟動命令 elasticsearch -d
Kibana搭建
暫定
測驗
引入測驗包
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
測驗配置 log4j.properties
log4j.rootLogger=INFO,R,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
# 輸出日志的路徑,跟FileBeat獲取日志的路徑匹配即可
log4j.appender.R.File=C:\\Users\\DELL\\Desktop\\ELK7.2\\logs\\test.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
log4j.logger.java.sql.Connection=INFO
log4j.logger.java.sql.Statement=INFO
log4j.logger.java.sql.PreparedStatement=INFO
log4j.logger.java.sql.ResultSet=INFO
撰寫測驗類:
public class Test {
private static final Logger logger = Logger.getLogger(Test.class);
public static void main(String[] args) throws Exception {
for (int i = 0; i < 20; i++) {
logger.error("hello world ,hello YHR"+i);
}
}
}
進ES看資料即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/248064.html
標籤:其他
上一篇:2021-01-12
