filebeat

#filebeat官網下載地址

https://www.elastic.co/downloads/past-releases/filebeat-5-3-2

#-----Filebeat的架構分析、配置解釋與示例 -----

#reference from: http://blog.csdn.net/gamer_gyt/article/details/52688636

在看filebeat之前先來看下Beats,Beats 平臺是 Elastic.co 從 packetbeat 發展出來的數據收集器系統。beat 收集器可以直接寫入 Elasticsearch,也可以傳輸給 Logstash。其中抽象出來的 libbeat,提供了統一的數據發送方法,輸入配置解析,日志記錄框架等功能。也就是說,所有的 beat 工具,在配置上,除了 input 以外,在output、filter、shipper、logging、run-options 上的配置規則都是完全一致的

而這里的filebeat就是beats 的一員,目前beat可以發送數據給Elasticsearch,Logstash,File,Console四個目的地址。filebeat 是基于原先 logstash-forwarder 的源碼改造出來的。換句話說:filebeat 就是新版的 logstash-forwarder,也會是 ELK Stack 在 shipper 端的第一選擇

整體架構理解:

上邊我們也說了filebeat是用來收集日志的,那么在filebeat.yml中會配置指定的監聽文件,也就是上圖中的一個個log,這個log的目錄是在prospectors中設? 置,在看配置文件的時候便可以很明白的看出來,對于prospectors定位每個日志文件,Filebeat啟動harvester。每個harvester讀取新的內容一個日志文件,新的日志數據發送到spooler(后臺處理程序),它匯集的事件和聚合數據發送到你已經配置了Filebeat輸出。

安裝步驟略了,在啟動filebeat服務之前,需要先修改配置文件.

#reference from: https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html

#ELK 不是一款軟件,而是 Elasticsearch、Logstash 和 Kibana 三種軟件產品的首字母縮寫。這三者都是開源軟件,通常配合使用,而且又先后歸于 Elastic.co 公司名下,所以被簡稱為 ELK Stack。根據 Google Trend 的信息顯示,ELK Stack 已經成為目前最流行的集中式日志解決方案。

#Beats 作為日志搜集器

這種架構引入 Beats 作為日志搜集器。目前 Beats 包括四種:

Packetbeat(搜集網絡流量數據);

Topbeat(搜集系統、進程和文件系統級別的 CPU 和內存使用情況等數據);

Filebeat(搜集文件數據);

Winlogbeat(搜集 Windows 事件日志數據)。

#Filebeat 實現 log rotation

通俗的說,log rotation 是指當日志文件達到指定大小后,把隨后的日志寫到新的日志文件中,原來的日志文件重命名,加上日志的起止時間,以實現日志歸檔的目的。

Filebeat 默認支持 log rotation,但需要注意的是,Filebeat 不支持使用 NAS 或掛載磁盤保存日志的情況。因為在 Linux 系列的操作系統中,Filebeat使用文件的inode信息會變化,導致 Filebeat 無法完整讀取 log。

雖然 Filebeat 默認支持 log rotation,但是有三個參數的設置需要留意。

registry_file:這個文件記錄了當前打開的所有 log 文件,以及每個文件的 inode、當前讀取位置等信息。當 Filebeat 拿到一個 log 文件,首先查找 registry_file,如果是舊文件,就從記錄的當前讀取位置處開始讀取;如果是新文件,則從開始位置讀取;

close_older:如果某個日志文件經過 close_older 時間后沒有修改操作,Filebeat 就關閉該文件的 handler。如果該值過長,則隨著時間推移,Filebeat 打開的文件數量很多,耗費系統內存;

scan_frequency:Filebeat 每隔 scan_frequency 時間讀取一次文件內容。對于關閉的文件,如果后續有更新,則經過 scan_frequency 時間后,Filebeat 將重新打開該文件,讀取新增加的內容。

#Elasticsearch 集群:

#Elasticsearch 啟動時會根據配置文件中設置的集群名字(cluster.name)自動查找并加入集群。Elasctisearch 節點默認使用 9300 端口尋找集群,所以必須開啟這個端口。

#一個 Elasticsearch 集群中一般擁有三種角色的節點,master、data 和 client。

master:master 節點負責一些輕量級的集群操作,比如創建、刪除數據索引、跟蹤記錄集群中節點的狀態、決定數據分片(shards)在 data 節點之間的分布;

data:data 節點上保存了數據分片。它負責數據相關操作,比如分片的 CRUD,以及搜索和整合操作。這些操作都比較消耗 CPU、內存和 I/O 資源;

client:client 節點起到路由請求的作用,實際上可以看做負載均衡器。

#配置文件中有兩個與集群相關的配置:

node.master:默認 true。True 表示該節點是 master 節點;

node.data:默認 true。True 表示該節點時 data 節點。如果兩個值都為 false,表示是 client 節點。

#一個集群中不一定有 client 節點,但是肯定有 master 和 data 節點。默認第一個啟動的節點是 master。Master 節點也能起到路由請求和搜索結果整合的作用,所以在小規模的集群中,無需 client 節點。但是如果集群規模很大,則有必要設置專門的 client。

#Logstash 使用 grok 過濾

#日志數據一般都是非結構化數據,而且包含很多不必要的信息,所以需要在 Logstash 中添加過濾插件對 Filebeat 發送的數據進行結構化處理。

使用 grok 正則匹配把那些看似毫無意義、非結構化的日志數據解析成可查詢的結構化數據,是目前 Logstash 解析過濾的最好方式。

Grok 的用戶不需要從頭開始寫正則。ELK github 上已經寫好了很多有用的模式,比如日期、郵箱地址、IP4/6、URL 等。具體查看這里(https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns)

#問題:Filebeat 如何讀取多個日志目錄?

解決方案:通過配置多個 prospector 就能達到要求。在配置文件的 prospectors 下,每個"-"表示一個 prospector,每個 prospector 包含一些配置項,指明這個 prospector 所要讀取的日志信息。如下所示:

prospectors:

-

paths:

- /home/WLPLog/*.log

# 其他配置項,具體參考 Elastic 官網

-

paths:

- /home/ApacheLog/*.log

# 其他配置項,具體參考 Elastic 官網

#問題:Filebeat 如何區分不同日志來源?

#Filebeat 雖然能讀取不同的日志目錄,但是在 Logstash 這邊,或者是 Elasticsearch 這邊,怎么區分不同 application server 的日志數據呢?

#解決方案:Filebeat 的配置項 fields 可以實現不同日志來源的區分。用法如下:

prospectors:

-

paths:

- /home/WLPLog/*.log

fields:

log_source: WLP

-

paths:

- /home/ApacheLog/*.log

fields:

log_source: Apache

#解析:在 fields 配置項中,用戶可以自定義域來標識不同的 log。比如上例中的"log_source"就是自己自定義的。如此,從 Filebeat 輸出的 log 就有一個叫做 log_source 的域表明該 log 的實際來源。

#問題:如何配置 Logstash 與 Elasticsearch 集群通信?

我們知道 Logstash 使用 Elasticsearch 輸出插件就能把數據發送到 Elasticsearch 進行存儲和搜索。Elasticsearch 插件中有個 hosts 配置項說明 Elasticsearch 信息。但是假如是一個 Elasticsearch 集群,應該怎么配置 hosts?

#解決方案:最簡單的做法是把集群中所有的 Elasticsearch 節點的 IP 或者是 hostname 信息都在 hosts 中配上(它支持數組)。但是如果集群比較大,或者是集群節點變動頻繁的話,還需要維護這個 hosts 值,不太方便。比較推薦的做法是只配集群中某個節點的信息,可以是 client 節點,也可以是 master 節點或者是 data 節點。因為不管是哪個節點,都知道該它所在集群的信息(集群規模,各節點角色)。這樣,Logstash 與任意節點通信時都會先拿到集群信息,然后再決定應該給哪個節點發送數據輸出請求。

#參考資料:

#參考使用 Nginx 實現 Kibana 登陸認證博客,學習如何配置 Nginx 作為 Kibana 的反向代理,且實現登陸認證;

#reference from: http://www.cnblogs.com/yjmyzz/p/filebeat-turorial-and-kibana-login-setting-with-nginx.html

1修改filebeat下的filebeat.yml文件模板:

filebeat:

prospectors:

-

paths:

- "/var/log/nginx/*.log"

input_type: log

document_type: nginx-access

-

paths:

- "/data/log/order/*.log"

input_type: log

document_type: order-service

-

paths:

- "/opt/service/zhifu/logs/*.log"

input_type: log

document_type: zhifu-service

output:

elasticsearch:

hosts: ["localhost:9200"]

logging:

files:

rotateeverybytes: 10485760

2設置elasticsearch的filebeat模板:

#curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@/etc/filebeat/filebeat.template.json

#注:上面localhost:9200改成實際的elasticsearch的地址,后面的一串為filebeat根目錄下的filebeat.template.json的完整路徑,順利的話,會返回:

{

"acknowledged" : true

}

#表示模板已被接收。

3啟動:

#./filebeat -e -c filebeat.yml -d "Publish"

#如果能看到一堆東西輸出,表示正在向elastic search發送日志。

#測試正常后,Ctrl+C結束,然后用

#nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &

#轉入后臺運行,最后到kibana里,創建一個索引,注意pattern為:filebeat-*

#kibana的登錄認證問題:

#kibana是nodejs開發的,本身并沒有任何安全限制,直接瀏覽url就能訪問,如果公網環境非常不安全,可以通過nginx請求轉發增加認證,方法如下:

#tips:kibana沒有重啟命令,要重啟,只能ps -ef|grep node 查找nodejs進程,干掉重來。

1#參考以下內容,修改配置文件:

server {

listen? ? ? 80;

server_name syste1.example.com;

location / {

auth_basic "secret";

auth_basic_user_file /data/nginx/db/passwd.db;

proxy_pass http://localhost:5601;

proxy_set_header Host $host:5601;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Via "nginx";

}

access_log off;

}

#上面的配置表示將syste1.example.com的請求,轉發到服務器的5601端口,同時使用最基本的用戶名、密碼來認證。

#2、配置登錄用戶名,密碼

#htpasswd -c /data/nginx/db/passwd.db user1

#注意passwd.db的路徑要跟nginx配置中的一致,最后的user1為用戶名,可以隨便改,輸入完該命令后,系統會提示輸入密碼,搞定后passwd.db中就有加密后的密碼了,有興趣的可以cat看下。提示:htpasswd是apache自帶的小工具,如果找不到該命令,嘗試用yum install httpd安裝

#3、關掉kibana端口的外網訪問

#用nginx轉發后,一定要記得配置iptables之類的防火墻,禁止外部直接訪問5601端口,這樣就只能通過nginx來訪問了。

#-----ElasticSearch 集群環境檢查-時鐘同步-----

#1.設置本地時間

#cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2.集群時間日期同步NTP

#yum install ntp

ntpdate pool.ntp.org

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內容