elk數據存儲位置
① elk為什麼會丟日誌
elk會丟日誌原因:增加日誌目錄的大小,將日誌壓縮保存。
elk現在的集群所需要解決的問題不僅僅是高性能、高可靠性、高可擴展性,還需要面對易維護性以及數據平台內部的數據共享性等諸多挑戰。
elk系統運維數據既能實現數據平台各組件的集中式管理,方便系統運維人員,提升運維效率,又能反饋系統運行狀態給系統開發人員。
elk分卷壓縮:
在WinRAR中也集成了分卷壓縮的功能,而且它並不像WinZip那樣必須在軟盤的支持下才可以使用這個功能,在製作的時候能夠將某個大文件分卷壓縮存放在任意指定的盤符中,所以這也大大的方便了我們的使用。
elk分卷壓縮的文件或者是文件夾,在彈出的菜單中選擇「添加到壓縮包」選項。壓縮包名稱」對話框中確定文件存放的路徑和名稱,這時就可以將分卷壓縮之後的文件存放在硬碟中的任何一個文件夾中。
elk同時在「壓縮方式」下拉列表中選擇採用何種方式進行壓縮,建議大家採用「最好」方式,這樣能夠讓WinRAR最大程度的壓縮文件。
② ELK應用之Filebeat
Filebeat是本地文件的日誌數據採集器,可監控日誌目錄或特定日誌文件(tail file),並將它們轉發給Elasticsearch或Logstatsh進行索引、kafka等。帶有內部模塊(auditd,Apache,Nginx,System和MySQL),可通過一個指定命令來簡化通用日誌格式的收集,解析和可視化。
官方網址: https://www.elastic.co/guide/en/beats/filebeat/current/index.html
Filebeat涉及兩個組件:查找器prospector和採集器harvester,來讀取文件(tail file)並將事件數據發送到指定的輸出。
啟動Filebeat時,它會啟動一個或多個查找器,查看你為日誌文件指定的本地路徑。對於prospector所在的每個日誌文件,prospector啟動harvester。每個harvester都會為新內容讀取單個日誌文件,並將新日誌數據發送到libbeat,後者將聚合事件並將聚合數據發送到你為Filebeat配置的輸出。
當發送數據到Logstash或Elasticsearch時,Filebeat使用一個反壓力敏感(backpressure-sensitive)的協議來解釋高負荷的數據量。當Logstash數據處理繁忙時,Filebeat放慢它的讀取速度。一旦壓力解除,Filebeat將恢復到原來的速度,繼續傳輸數據。
Harvester負責讀取單個文件的內容。讀取每個文件,並將內容發送到the output,每個文件啟動一個harvester, harvester負責打開和關閉文件,這意味著在運行時文件描述符保持打開狀態。
如果文件在讀取時被刪除或重命名,Filebeat將繼續讀取文件。這有副作用,即在harvester關閉之前,磁碟上的空間被保留。默認情況下,Filebeat將文件保持打開狀態,直到達到close_inactive狀態
關閉harvester會產生以下結果:
1)如果在harvester仍在讀取文件時文件被刪除,則關閉文件句柄,釋放底層資源。
2)文件的採集只會在scan_frequency過後重新開始。
3)如果在harvester關閉的情況下移動或移除文件,則不會繼續處理文件。
要控制收割機何時關閉,請使用close_ *配置選項
Prospector負責管理harvester並找到所有要讀取的文件來源。如果輸入類型為日誌,則查找器將查找路徑匹配的所有文件,並為每個文件啟動一個harvester。每個prospector都在自己的Go協程中運行。
Filebeat目前支持兩種prospector類型:log和stdin。每個prospector類型可以定義多次。日誌prospector檢查每個文件來查看harvester是否需要啟動,是否已經運行,或者該文件是否可以被忽略(請參閱ignore_older)。
只有在harvester關閉後文件的大小發生了變化,才會讀取到新行。
註:Filebeat prospector只能讀取本地文件,沒有功能可以連接到遠程主機來讀取存儲的文件或日誌。
配置文件:$FILEBEAT_HOME/filebeat.yml。Filebeat可以一次讀取某個文件夾下的所有後綴名為log的文件,也可以讀取指定的某一個後綴名為log的文件。
配置文件詳解( http://blog.51cto.com/michaelkang/1864225 )
(1)欄位解釋
paths: 指定要監控的日誌,目前按照Go語言的glob函數處理。沒有對配置目錄做遞歸處理,比如配置的如果是:
/var/log/* /*.log
則只會去/var/log目錄的所有子目錄中尋找以".log"結尾的文件,而不會尋找/var/log目錄下以".log"結尾的文件。
encoding: 指定被監控的文件的編碼類型,使用plain和utf-8都是可以處理中文日誌的。
input_type: 指定文件的輸入類型log(默認)或者stdin。
exclude_lines: 在輸入中排除符合正則表達式列表的那些行。
include_lines: 包含輸入中符合正則表達式列表的那些行(默認包含所有行),include_lines執行完畢之後會執行exclude_lines。
exclude_files: 忽略掉符合正則表達式列表的文件(默認為每一個符合paths定義的文件都創建一個harvester)。
fields: 向輸出的每一條日誌添加額外的信息,比如"level:debug",方便後續對日誌進行分組統計。默認情況下,會在輸出信息的fields子目錄下以指定的新增fields建立子目錄,
fields_under_root: 如果該選項設置為true,則新增fields成為頂級目錄,而不是將其放在fields目錄下。自定義的field會覆蓋filebeat默認的field。
ignore_older: 可以指定Filebeat忽略指定時間段以外修改的日誌內容,比如2h(兩個小時)或者5m(5分鍾)。
close_older: 如果一個文件在某個時間段內沒有發生過更新,則關閉監控的文件handle。默認1h。
force_close_files: Filebeat會在沒有到達close_older之前一直保持文件的handle,如果在這個時間窗內刪除文件會有問題,所以可以把force_close_files設置為true,只要filebeat檢測到文件名字發生變化,就會關掉這個handle。
scan_frequency: Filebeat以多快的頻率去prospector指定的目錄下面檢測文件更新(比如是否有新增文件),如果設置為0s,則Filebeat會盡可能快地感知更新(佔用的CPU會變高)。默認是10s。
document_type: 設定Elasticsearch輸出時的document的type欄位,也可以用來給日誌進行分類。
harvester_buffer_size: 每個harvester監控文件時,使用的buffer的大小。
max_bytes: 日誌文件中增加一行算一個日誌事件,max_bytes限制在一次日誌事件中最多上傳的位元組數,多出的位元組會被丟棄。默認是10MB。
multiline: 適用於日誌中每一條日誌占據多行的情況,比如各種語言的報錯信息調用棧。這個配置的下麵包含如下配置:
pattern: 多行日誌開始的那一行匹配的pattern
negate: 是否需要對pattern條件轉置使用,不翻轉設為true,反轉設置為false。
match: 匹配pattern後,與前面(before)還是後面(after)的內容合並為一條日誌
max_lines: 合並的最多行數(包含匹配pattern的那一行),默認為500行。
timeout: 到了timeout之後,即使沒有匹配一個新的pattern(發生一個新的事件),也把已經匹配的日誌事件發送出去
tail_files: 如果設置為true,Filebeat從文件尾開始監控文件新增內容,把新增的每一行文件作為一個事件依次發送,而不是從文件開始處重新發送所有內容。
backoff: Filebeat檢測到某個文件到了EOF之後,每次等待多久再去檢測文件是否有更新,默認為1s。
max_backoff: Filebeat檢測到某個文件到了EOF之後,等待檢測文件更新的最大時間,默認是10秒。
backoff_factor: 定義到達max_backoff的速度,默認因子是2,到達max_backoff後,變成每次等待max_backoff那麼長的時間才backoff一次,直到文件有更新才會重置為backoff。比如:
如果設置成1,意味著去使能了退避演算法,每隔backoff那麼長的時間退避一次。
spool_size: spooler的大小,spooler中的事件數量超過這個閾值的時候會清空發送出去(不論是否到達超時時間),默認1MB。
idle_timeout: spooler的超時時間,如果到了超時時間,spooler也會清空發送出去(不論是否到達容量的閾值),默認1s。
registry_file: 記錄filebeat處理日誌文件的位置的文件
config_dir: 如果要在本配置文件中引入其他位置的配置文件,可以寫在這里(需要寫完整路徑),但是只處理prospector的部分。
publish_async: 是否採用非同步發送模式(實驗功能)。
具體的一個yml採集配置樣例如下:該配置文件是filebeat採集數據的依據,並根據需求添加必要配置,filebeat收集日誌後發往logstash,配置如下:
cd FILEBEAT_HOME
nohup ./bin/filebeat -f config/test.conf >>/FILEBEAT_HOME/logs/filebeat.log &
後台啟動filebeat,配置對應的參數
啟動多個filebeat配置,新建一個目錄(conf)存放多個filebeat的配置文件,
#nohup ./bin/filebeat -f conf/* >>/FILEBEAT_HOME/logs/filebeat.log &
注意:一台伺服器只能啟動一個filebeat進程。
ps -ef |grep filebeat
kill -9 $pid
注意: 非緊急情況下,殺掉進程只能用優雅方式。
A、filebeat運行不成功
問題:配置文件格式有問題,配置文件遵循yml文件格式, 多或少一個空格 都會導致啟動問題,可以使用cmd命令窗口到filebeat安裝路徑下,使用filebeat.exe –c filebeat.yml 查看報錯,也可以看filebeat路徑下的log文件夾中的filebeat文件
B、 filebeat第一次運行成功無數據
問題:a、路徑有問題
b、運行條件設置有問題(例如只採集某個條件下的數據,文件中沒有符合條件的數據,這種情況下先注釋掉採集條件測試一下)
C、filebeat運行成功第一次運行後有數據,第二次無數據
問題:filebeat讀取文件後會生成一個registry文件,注意windows機器中這個文件在手動啟動的情況下會在filebeat安裝目錄下的data文件夾中,服務注冊啟動的情況下會在C盤下隱藏文件夾C:\ProgramData\filebeat中,刪除掉這個就可以了
D、filebeat運行成功有數據,但是新添加數據不讀取問題
問題:filebeat傳輸存在反壓機制,在數據量特別大或者傳輸通道不通的情況下,filebeat會進行反壓,暫停發送,等到數據量穩定或者數據傳輸通道正常的之後才會發送
Filebeat 保存每個文件的狀態並經常將狀態刷新到磁碟上的注冊文件中。該狀態用於記住harvester正在讀取的最後偏移量,並確保發送所有日誌行。如果輸出(例如Elasticsearch或Logstash)無法訪問,Filebeat會跟蹤最後發送的行,並在輸出再次可用時繼續讀取文件。
在Filebeat運行時,每個prospector內存中也會保存文件狀態信息,當重新啟動Filebeat時,將使用注冊文件的數據來重建文件狀態,Filebeat將每個harvester在從保存的最後偏移量繼續讀取。
每個prospector為它找到的每個文件保留一個狀態。由於文件可以被重命名或移動,因此文件名和路徑不足以識別文件。對於每個文件,Filebeat存儲唯一標識符以檢測文件是否先前已被採集過。
如果你使用的案例涉及每天創建大量新文件,你可能會發現注冊文件增長過大。請參閱注冊表文件太大?編輯有關你可以設置以解決此問題的配置選項的詳細信息。
Filebeat保證事件至少會被傳送到配置的輸出一次,並且不會丟失數據。 Filebeat能夠實現此行為,因為它將每個事件的傳遞狀態存儲在注冊文件中。
在輸出阻塞或未確認所有事件的情況下,Filebeat將繼續嘗試發送事件,直到接收端確認已收到。如果Filebeat在發送事件的過程中關閉,它不會等待輸出確認所有收到事件。
發送到輸出但在Filebeat關閉前未確認的任何事件在重新啟動Filebeat時會再次發送。這可以確保每個事件至少發送一次,但最終會將重復事件發送到輸出。
也可以通過設置shutdown_timeout選項來配置Filebeat以在關閉之前等待特定時間。
注意:Filebeat的至少一次交付保證包括日誌輪換和刪除舊文件的限制。如果將日誌文件寫入磁碟並且寫入速度超過Filebeat可以處理的速度,或者在輸出不可用時刪除了文件,則可能會丟失數據。
在linux上,Filebeat也可能因inode重用而跳過行。有關inode重用問題的更多詳細信息,請參閱filebeat常見問題解答。
Logback日誌切割用的是JDK里File#renameTo()方法。如果該方法失敗,就再嘗試使用復制數據的方式切割日誌。查找該方法相關資料得知,只有當源文件和目標目錄處於同一個文件系統、同volumn(即windows下的C, D盤)下該方法才會成功,切不會為重命名的後的文件分配新的inode值。也就是說,如果程序里一直保存著該文件的描述符,那麼當程序再寫日誌時,就會向重命名後的文件中寫。那麼問題來了,filebeat是會一直打開並保存文件描述符的,那麼它是怎麼得知日誌被切割這件事的呢?
如果只用當前文件描述符一路監控到天黑的話,那麼當logback把日誌重命名後,filebeat仍然會監控重命名後的日誌,新創建的日誌文件就看不到了。實際上,filebeat是通過close_inactive和scan_frequency兩個參數(機制)來應對這種情況的:
(1)close_inactive
該參數指定當被監控的文件多長時間沒有變化後就關閉文件句柄(file handle)。官方建議將這個參數設置為一個比文件最大更新間隔大的值。比如文件最長5s更新一次,那就設置成1min。默認值為5min。
(2)scan_frequency
該參數指定Filebeat搜索新文件的頻率(時間間隔)。當發現新的文件被創建時, Filebeat會為它再啟動一個 harvester 進行監控,默認為10s。
綜合以上兩個機制,當logback完成日誌切割後(即重命名),此時老的harvester仍然在監控重命名後的日誌文件,但是由於該文件不會再更新,因此會在close_inactive時間後關閉這個文件的 harvester。當scan_frequency時間過後,Filebeat會發現目錄中出現了新文件,於是為該文件啟動 harvester 進行監控。這樣就保證了切割日誌時也能不丟不重的傳輸數據。(不重是通過為每個日誌文件保存offset實現的)
③ eplan中的elk包含不完整的數據
卸掉重新安裝時選擇英文即可。
常規的EPLAN項目由edb和elk組成。edb是個文件夾,其內包含子文件夾,這里存儲著EPLAN的項目數據,elk是一個鏈接文件,當雙擊它時,會啟動EPLAN並打開此項目。
選擇項目模板建立一個Eplan項目後,軟體會選擇符合項目模板標準的符號庫、圖框、表格等系統主數據復制到項目數據中,如果有一個項目中的項目數據和系統主數據有不一樣的符號、圖框、表格等數據時,可以通過工具—主數據—同步主數據功能,將不同數據同步到系統主數據中。
④ elk用於解決hadoop什麼問題
elk用於解決hadoopHadoop實現了一個分布式文件系統,設計用來部署在低廉的硬體上;而且提供高吞吐量來訪問應用程序的數據,適合那些有著超大數據集的應用程序。
但是由於「大數據」和「Hadoop」這兩個熱門詞,即使很多人實際上不需要Hadoop,他們也願意穿上「緊身衣」。 一、如果我的數據量是幾百兆,Excel可能沒法載入它 對於Excel軟體來說的「很大的數據」並非大數據,其實還有其它極好的工具可以使用。
核心架構:
Hadoop 由許多元素構成。其最底部是 Hadoop Distributed File System(HDFS),它存儲 Hadoop 集群中所有存儲節點上的文件。HDFS的上一層是MapRece引擎,該引擎由 JobTrackers 和 TaskTrackers 組成。
通過對Hadoop分布式計算平台最核心的分布式文件系統HDFS、MapRece處理過程,以及數據倉庫工具Hive和分布式資料庫Hbase的介紹,基本涵蓋了Hadoop分布式平台的所有技術核心。
⑤ ELK日誌分析系統初體驗
ELK
logstash
elasticsearch
kibana
ELK技術棧要點總結
官方文檔之安裝教程
Mac第三方工具安裝
$ brew install logstash
********啟動命令********
$ bin/logstash -f logstash-example.conf
Logstash根據logstash-example.conf配置文件對數據源進行數據讀取和清洗,並將清洗結果寫入指定的目標文件。
logstash命令除了可以使用「-f」指定配置文件外,還可以指定其他參數,具體說明可以參見 官方文檔之Command Flags 。
Logstash除了通過命令行參數進行配置外,還可以在logstash.yml等setting文件中進行設置,具體說明參見 官方文檔之Setting files
配置文件
配置文件結構清晰,但所涉及的插件種類繁多,而且在插件使用過程中還涉及 環境變數使用 和 條件語句使用 等內容。用戶可根據需要選擇適當的插件和語法實現數據收集和清洗的目標。
##1.2 Elasticsearch****技術
****Cluster****與****Node****
****Index****、****Type****與****Document****
****Shards****與****Replicas****
********啟動命令********
$ bin/elasticsearch 前端方式啟動
$ bin/elasticsearch -d 守護進程方式啟動
elasticsearch啟動比較簡單,也額外創建配置文件,它將收集的數據重新編排存儲,以支持數據的全文檢索。檢索是Elasticsearch最為重要的功能,也是最為復雜的語法。
********需要注意的是:********elasticsearch不支持在root用戶下啟動,因此,在啟動前,用戶需要創建非root用戶,並為該用戶賦予elasticsearch目錄的操作許可權,詳情參見 https://my.oschina.net/topeagle/blog/591451?fromerr=mzOr2qzZ
********配置管理********
Elasticsearch一般不需額外配置,但是為了提高Elasticsearch性能可以通過elasticsearch.yml文件修改配置參數。當然,也可以根據用戶系統配置降低配置參數,如jvm.heapsize。Elasticsearch默認佔用2G內存,對於系統配置較低的伺服器,很可能帶來負載過大的問題,因此需要適當減少jvm.heapsize。
Elasticsearch提供大量的API支持檢索服務,用戶甚至可以根據需要定製化 分析器 、 映射器 .
##1.3 Kibana****技術
********安裝********
參見 官方教程 ,值得注意的是Kibana與Elasticsearch版本要保持一致。
********啟動********
********配置********
Kibana配置可以通過命令行參數或配置文件 kibana.yml 。Kibana應用的默認地址為localhost,無法從遠程訪問Kibana,因此,用戶需要修改配置文件的server.host屬性。
********數據檢索********
(1)時間篩選:限定檢索的時間范圍
(2)index pattern:限定檢索的數據范圍
(3)欄位篩選:限定特殊欄位以及特殊欄位值
(4)搜索框:採用Elasticsearch檢索語法查詢
********數據分析********
數據分析是Elasticsearch與Kibana的核心模塊,Elasticsearch提供分析功能,kibana提供圖形渲染功能。
數據分析需要涉及Elasticsearch的 Aggregation 、 Mapping 、 Analysis 和Kibana的 Visualize 和 Dashboard 等模塊,內容相對比較復雜,用戶可根據實際需要適當選擇。
Kibana的Visualize是基於Elasticsearch聚合結果進行圖形化展示,支持AreaChart、DataTable、PieChart等圖表結構。Dashboard則是將多個visualize綜合展示,並配注markdown記錄,形成完整的數據分析報告。
#2 ****日誌分析系統
##2.1 ****基於阿里雲****NAS****的日誌分析系統架構設計
********日誌生成:********對於java和Node應用,分別採用Logback與winston日誌框架生成日誌,注意,日誌採用json格式單行存儲(一行json對應一條日誌)
********日誌存儲:********分布式應用的日誌採用NAS統一存儲,減少因日誌分散保存而帶來數據收集的高復雜度。
********日誌收集與清洗:********基於Logback的Pipeline功能,從NAS讀取日誌數據,並通過 filter插件進行日誌的格式化清洗,並將清洗結果傳送到Elasticsearch。
********日誌重排與存儲:********Elasticsearch將收集的數據進行重排,以支持符合elasticsearch檢索語法。並將重排數據予以保存,同事可以通過集群、分片(Shards、Replicas)等進行冗餘存儲。
********日誌分析與檢索:********通過Elasticsearch Search API即可檢索與分析數據,但基於命令行的分析可視化不夠,藉助Kibana可以將日誌分析與檢索採用圖形化、列表化的方式予以展現,提高數據的可讀性。
##2.2 ****日誌收集
********(****1****)**** Input****部分********
採用file插件收集NAS日誌收據,path指定日誌存放地址,採用通配符指定多個文件。
為了便於日誌的Archive,以及標識產生日誌的應用容器,日誌文件採用「log+hostname」方式命名,因此,同一類日誌可能會存在多個日誌文件。
start_position指定從日誌文件Start位置開始收集,file插件默認從End位置收集,只會收集Logstash啟動後生成的日誌。
type標識日誌類型,對於微服務應用,我們藉助type區分應用類型,以方便日後檢索與問題定位。
********(****2****)**** Filter****部分********
filter的配置需要根據日誌格式和清洗目標按需定製,在我們的項目中,日誌採用json格式,其中message key對應的value又是json對象的字元串,因此在提取json key-value時需要做兩次json過濾。
Logstash默認每條日誌為message key的value,因此第一個json是對一條完整日誌進行篩選,將json轉換為一個個鍵值對。轉換後,並不能將日誌message欄位對應的json對象拆分提取,因此需要再使用json插件過濾。由於完整日誌對應的message key與日誌內message key,二次使用json時Logstash會認為對完整日誌進行過濾,為此需要對 message進行重命名,這時採用mutate插件完成。
********注意:********filter插件比較多,也比較復雜,用戶可以根據自己需要按需選擇。
##2.3 ****日誌分析(檢索)
(1)時間范圍:按照日、周、月、年度分別統計分析
(2)應用比較:各類應用的使用頻繁程度比較,結合監控數據判斷每類應用耗用資源情況等
(3)API分析:各類請求介面的使用情況分析,哪類API使用頻繁,各API的響應時間如何
⑥ elk是什麼
「ELK」是三個開源項目的首字母縮寫,這三個項目分別是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一個搜索和分析引擎。Logstash 是伺服器端數據處理管道,能夠同時從多個來源採集數據,轉換數據,然後將數據發送到諸如 Elasticsearch 等「存儲庫」中。Kibana 則可以讓用戶在 Elasticsearch 中使用圖形和圖表對數據進行可視化。
⑦ ELK是用來做什麼的
大數據日誌分析
⑧ 「SpringCloud」(三十八)搭建ELK日誌採集與分析系統
一套好的日誌分析系統可以詳細記錄系統的運行情況,方便我們定位分析系統性能瓶頸、查找定位系統問題。上一篇說明了日誌的多種業務場景以及日誌記錄的實現方式,那麼日誌記錄下來,相關人員就需要對日誌數據進行處理與分析,基於E(ElasticSearch)L(Logstash)K(Kibana)組合的日誌分析系統可以說是目前各家公司普遍的首選方案。
作為微服務集群,必須要考慮當微服務訪問量暴增時的高並發場景,此時系統的日誌數據同樣是爆發式增長,我們需要通過消息隊列做流量削峰處理,Logstash官方提供Redis、Kafka、RabbitMQ等輸入插件。Redis雖然可以用作消息隊列,但其各項功能顯示不如單一實現的消息隊列,所以通常情況下並不使用它的消息隊列功能;Kafka的性能要優於RabbitMQ,通常在日誌採集,數據採集時使用較多,所以這里我們採用Kafka實現消息隊列功能。
ELK日誌分析系統中,數據傳輸、數據保存、數據展示、流量削峰功能都有了,還少一個組件,就是日誌數據的採集,雖然log4j2可以將日誌數據發送到Kafka,甚至可以將日誌直接輸入到Logstash,但是基於系統設計解耦的考慮,業務系統運行不會影響到日誌分析系統,同時日誌分析系統也不會影響到業務系統,所以,業務只需將日誌記錄下來,然後由日誌分析系統去採集分析即可,Filebeat是ELK日誌系統中常用的日誌採集器,它是 Elastic Stack 的一部分,因此能夠與 Logstash、Elasticsearch 和 Kibana 無縫協作。
軟體下載:
因經常遇到在內網搭建環境的問題,所以這里習慣使用下載軟體包的方式進行安裝,雖沒有使用Yum、Docker等安裝方便,但是可以對軟體目錄、配置信息等有更深的了解,在後續採用Yum、Docker等方式安裝時,也能清楚安裝了哪些東西,安裝配置的文件是怎樣的,即使出現問題,也可以快速的定位解決。
Elastic Stack全家桶下載主頁: https://www.elastic.co/cn/downloads/
我們選擇如下版本:
Kafka下載:
安裝前先准備好三台CentOS7伺服器用於集群安裝,這是IP地址為:172.16.20.220、172.16.20.221、172.16.20.222,然後將上面下載的軟體包上傳至三台伺服器的/usr/local目錄。因伺服器資源有限,這里所有的軟體都安裝在這三台集群伺服器上,在實際生產環境中,請根據業務需求設計規劃進行安裝。
在集群搭建時,如果能夠編寫shell安裝腳本就會很方便,如果不能編寫,就需要在每台伺服器上執行安裝命令,多數ssh客戶端提供了多會話同時輸入的功能,這里一些通用安裝命令可以選擇啟用該功能。
新建/usr/local/java目錄
將下載的jdk軟體包jdk-8u64-linux-x64.tar.gz上傳到/usr/local/java目錄,然後解壓
配置環境變數/etc/profile
在底部添加以下內容
使環境變數生效
備註:後續可通過此命令停止elasticsearch運行
新建kafka的日誌目錄和zookeeper數據目錄,因為這兩項默認放在tmp目錄,而tmp目錄中內容會隨重啟而丟失,所以我們自定義以下目錄:
修改如下:
在data文件夾中新建myid文件,myid文件的內容為1(一句話創建:echo 1 > myid)
kafka啟動時先啟動zookeeper,再啟動kafka;關閉時相反,先關閉kafka,再關閉zookeeper。
1、zookeeper啟動命令
後台運行啟動命令:
或者
查看集群狀態:
2、kafka啟動命令
後台運行啟動命令:
或者
3、創建topic,最新版本已經不需要使用zookeeper參數創建。
參數解釋:
復制兩份
--replication-factor 2
創建1個分區
--partitions 1
topic 名稱
--topic test
4、查看已經存在的topic(三台設備都執行時可以看到)
5、啟動生產者:
6、啟動消費者:
添加參數 --from-beginning 從開始位置消費,不是從最新消息
7、測試:在生產者輸入test,可以在消費者的兩台伺服器上看到同樣的字元test,說明Kafka伺服器集群已搭建成功。
Logstash沒有提供集群安裝方式,相互之間並沒有交互,但是我們可以配置同屬一個Kafka消費者組,來實現統一消息只消費一次的功能。
Filebeat用於安裝在業務軟體運行伺服器,收集業務產生的日誌,並推送到我們配置的Kafka、Redis、RabbitMQ等消息中間件,或者直接保存到Elasticsearch,下面來講解如何安裝配置:
1、進入到/usr/local目錄,執行解壓命令
2、編輯配置filebeat.yml
配置文件中默認是輸出到elasticsearch,這里我們改為kafka,同文件目錄下的filebeat.reference.yml文件是所有配置的實例,可以直接將kafka的配置復制到filebeat.yml
後台啟動命令
停止命令
2、測試logstash是消費Kafka的日誌主題,並將日誌內容存入Elasticsearch
自動新增的兩個index,規則是logstash中配置的
數據瀏覽頁可以看到Elasticsearch中存儲的日誌數據內容,說明我們的配置已經生效。
Gitee: GitEgg: GitEgg 是一款開源免費的企業級微服務應用開發框架,旨在整合目前主流穩定的開源技術框架,集成常用的最佳項目解決方案,實現可直接使用的微服務快速開發框架。
GitHub: https://github.com/wmz1930/GitEgg
⑨ 日誌怎麼文本 資料庫 elk
日誌怎麼文本 資料庫 elk
1、假設已經安裝了MinGW,安裝目錄:C:/MinGW,將C:/MinGW/bin添加到系統環境變數中。如果閑下載安裝MinGW麻煩,可以直接下載一個Dev-CPP或許Code::Blocks開發環境,這兩個IDE中都是自帶MinGW的。
2、下載eclipse-cpp-helios-SR2-win32.zip
3、安裝opencv,假設安裝目錄為:C:/OpenCV
4、解壓eclipse-cpp-helios-SR2-win32.zip,啟動eclipse.exe
新建C++項目->可執行程序->Hello World C++ Project
5、添加頭文件和庫文件
右鍵項目選擇「屬性」->C/C++ Build->Settings。
Tool Settings 標簽頁,GCC C++ Compiler->Includes中添加OpenCV的頭文件目錄,MinGW C++ Linker->Libraries中添加OpenCV的庫文件目錄以及相應的庫文件名稱(注意:這里的庫文件不加後綴名)
⑩ SpringBoot 整合 elk
一、elk 簡介
二、elk的安裝
我們採用的 docker 鏡像安裝。
由於sebp/elk中logstash的input的方式默認是filebeat,首先們需要進入elk容器中修改input方式。logstash默認會將etc/logstash/conf.d/中的配置文件進行整合然後啟動。
修改 02-beats-input.conf 文件,修改如下:
保存後,我們使用 control + P + Q 退出容器。然後重啟容器,讓我們的配置生效。
我們訪問http://127.0.0.1:5601
三、創建工程
創建工程springboot-elk ,並使用logback 記錄日誌。
1. pom.xml
2. 啟動類
3. logback-spring.xml
啟動工程,日誌會存入elasticsearch中,通過Kibana 的web界面,配置後,我們就可看到,下面我簡單的修改下配置。
三、配置 pattern
配置 pattern 輸入*,匹配所有數據。
選擇時間@timestamp,這樣數據展示會以時間排序
好了 ,點擊discover,就可以看到我們springboot-elk項目的日誌信息了。