公司想要開始要建立統一的Log查詢、蒐集與分析的環境,因此嘗試使用ELK來建立。
環境說明
先嘗試建立Standalone的環境,也就是ELK都先放在同一台。- 作業系統: CentOS 6.5 final
- Elastic Search 1.3.2
- Logstash 1.4.2
- Kibana
參考資料
軟體安裝
-
作業系統安裝
- 請記得安裝已下套件
- Apache httpd (yum install httpd)
- Java 7 SDK
-
安裝Elastic Search
- 利用yum repository 來安裝(參考資料 :http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-repositories.html )
- 下載公鑰
rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch
- 在 /etc/yum.repos.d/ 目錄下新增檔案,例如 elasticsearch.repo,內容如下
[elasticsearch-1.3] name=Elasticsearch repository for 1.3.x packages baseurl=http://packages.elasticsearch.org/elasticsearch/1.3/centos gpgcheck=1 gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch enabled=1
- 安裝Elastersearch
yum install elasticsearch
設定Elasticsearch
- 編輯 /etc/elasticsearch/elasticsearch.yml ,加入
cluster.name: "LogCluster" node.name: "LogMaster" node.master: true node.data: true path.conf: /etc/elasticsearch path.data: /datapool/data1 path.work: /datapool/work path.logs: /datapool/log
- 將服務加入系統
chkconfig --add elasticsearch
- 啟動服務
/etc/init.d/elasticsearch start
- 測試啟動是否成功
curl localhost:9200/_nodes/process?pretty { "cluster_name" : "LogCluster", "nodes" : { "sqhS68RMS3q1CtthFOdSxw" : { "name" : "LogMaster", "transport_address" : "inet[/10.10.10.151:9300]", "host" : "logserver", "ip" : "127.0.0.1", "version" : "1.3.2", "build" : "dee175d", "http_address" : "inet[/10.10.10.151:9200]", "attributes" : { "master" : "true" }, "process" : { "refresh_interval_in_millis" : 1000, "id" : 30839, "max_file_descriptors" : 65535, "mlockall" : false } } } }
安裝Logstash
- 參考資料:http://logstash.net/docs/1.4.2/repositories
- 安裝金鑰
rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch
- 在 /etc/yum.repos.d/ 目錄下新增檔案,例如 logstash.repo,內容如下
[logstash-1.4] name=logstash repository for 1.4.x packages baseurl=http://packages.elasticsearch.org/logstash/1.4/centos gpgcheck=1 gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch enabled=1
- 安裝Logstash
yum install logstash
- 參考資料:http://logstash.net/docs/1.4.2/repositories
安裝Kibana
- Kibana是一個純粹由javascript/CSS/html組成的套件,安裝好logstash之後可以在 /opt/logstash/vendor/kibana 目錄下找到。
- 複製到httpd的 /var/www/html/ 目錄之下
cp -R /opt/logstash/vendor/kibana/* /var/www/html/
- 啟動httpd服務
chkconfig httpd on /dev/init.d/httpd start
- Kibana是一個純粹由javascript/CSS/html組成的套件,安裝好logstash之後可以在 /opt/logstash/vendor/kibana 目錄下找到。
設定防火牆
- 預設的防火牆是沒有開啟http及elastersearch的port,請加入以下兩個規則
# # 開啟HTTP 80 port # iptables -A INPUT -p tcp --dport 80 -j ACCEPT # # 設定ElasticSearch使用的port 9200-9300 # iptables -A INPUT -p tcp --dport 9200:9300 -j ACCEPT
開始使用
- 用瀏覽器進入 http://<Server Address>/
待續…
- Logstash接收log設定值
- Kibana設定與使用
- Elastersearch進階設定
- and more…
您好!
回覆刪除最近也在學ELK
想請教如何改IP 讓其他USER從web觀看
而不是只限在本機觀看
麻煩指導一下
謝謝
這篇設定做完就可以從 web上觀看了才對,會不會您的防火牆設定沒開,我有寫在第6小節中喔
刪除我沒有開防火牆勒
回覆刪除http://s881.photobucket.com/user/vertexgrp/media/setup_zps43834eaa.jpg.html
我的IP是10.5.1.111
在本機用localhost可以正常收數據
http://s881.photobucket.com/user/vertexgrp/media/ok_zpsd2548606.jpg.html
但在本機用10.5.1.111就會出現錯誤
http://i881.photobucket.com/albums/ac12/vertexgrp/error1_zps4c9fed5c.jpg
在其他電腦用10.5.1.111登入則是一片空白
http://i881.photobucket.com/albums/ac12/vertexgrp/error2_zpsf6409528.jpg
可以教我如何除錯嗎
感恩哦
你可以參考一下另外一篇 http://zettadata.blogspot.tw/2014/09/elkelasticsearch.html
刪除這裡會有解決的方式,謝謝
作者已經移除這則留言。
回覆刪除獨角獸先進您好:
回覆刪除curl localhost:9200/_nodes/process?pretty
"transport_address" : "inet/10.10.10.151:9300]",
"host" : "logserver", "ip" : "127.0.0.1",
"version" : "1.3.2", "build" : "dee175d",
"http_address" :
"inet[/10.10.10.151:9200]",
我在跑這個指令時不會跟你列的一樣
請問那個transport 跟 http address
是在哪裡做設定的
是否方便提供您的ELK相關設定檔寄給我參考一下
測試很久都測不出來整合的部份
感恩
vertexgrp@hotmail.com
跟您設定有一點差異,現在是可以收資料了
回覆刪除但測試2次 資料收集一段時間便會當掉停止收集
第一次收了五十幾萬筆
第二次收了十幾萬筆
請問該如何除錯
請再幫忙指導一下
謝謝啦
請查一下 /var/log/logstash 下面的log檔案,以及 /var/log/elasticsearch下面的log檔案
刪除看看是哪部分出了問題。
logstash.err錯誤訊息如下:
回覆刪除Error: Your application used more memory than the safety cap of 500M.
Specify -J-Xmx####m to increase it (#### = cap size in MB).
Specify -w for full OutOfMemoryError stack trace
elasticsearch 的LOG 如下:
[2014-12-19 09:23:34,791][WARN ][monitor.jvm ] [Debra Whitman] [gc][young][4224][4931] duration [2.2s], collections [2]/[3.7s], total [2.2s]/[11.4m], memory [752.8mb]->[210.9mb]/[990.7mb], all_pools {[young] [198.5mb]->[16.6mb]/[266.2mb]}{[survivor] [33.2mb]->[0b]/[33.2mb]}{[old] [521mb]->[194.3mb]/[691.2mb]}
[2014-12-19 09:36:17,486][WARN ][monitor.jvm ] [Debra Whitman] [gc][young][4953][5725] duration [4.4s], collections [1]/[5.7s], total [4.4s]/[13.4m], memory [636.6mb]->[152.8mb]/[990.7mb], all_pools {[young] [2.7mb]->[1mb]/[266.2mb]}{[survivor] [33.2mb]->[0b]/[33.2mb]}{[old] [600.6mb]->[151.7mb]/[691.2mb]}
[2014-12-19 10:01:25,952][WARN ][monitor.jvm ] [Debra Whitman] [gc][young][6401][7286] duration [4.1s], collections [1]/[5s], total [4.1s]/[17.3m], memory [877.5mb]->[185.8mb]/[990.7mb], all_pools {[young] [233.6mb]->[4.7mb]/[266.2mb]}{[survivor] [33.2mb]->[0b]/[33.2mb]}{[old] [610.6mb]->[181.1mb]/[691.2mb]}
[2014-12-19 10:07:06,749][WARN ][monitor.jvm ] [Debra Whitman] [gc][young][6711][7619] duration [11.9s], collections [1]/[13.3s], total [11.9s]/[18.2m], memory [653.6mb]->[231.2mb]/[990.7mb], all_pools {[young] [2.6mb]->[1mb]/[266.2mb]}{[survivor] [33.2mb]->[0b]/[33.2mb]}{[old] [617.8mb]->[230.2mb]/[691.2mb]}
[2014-12-19 10:50:43,624][WARN ][monitor.jvm ] [Debra Whitman] [gc][young][9209][10319] duration [15.3s], collections [2]/[17s], total [15.3s]/[25.1m], memory [819.3mb]->[185.4mb]/[990.7mb], all_pools {[young] [256.1mb]->[954.4kb]/[266.2mb]}{[survivor] [33.2mb]->[0b]/[33.2mb]}{[old] [529.9mb]->[184.5mb]/[691.2mb]}
[2014-12-19 11:20:03,381][WARN ][monitor.jvm ] [Debra Whitman] [gc][young][10889][12129] duration [5.4s], collections [1]/[6.9s], total [5.4s]/[29.6m], memory [754.9mb]->[177.3mb]/[990.7mb], all_pools {[young] [129.1mb]->[8.5mb]/[266.2mb]}{[survivor] [33.2mb]->[0b]/[33.2mb]}{[old] [592.5mb]->[168.7mb]/[691.2mb]}
[2014-12-19 11:47:54,971][WARN ][monitor.jvm ] [Debra Whitman] [gc][young][12463][13828] duration [19.5s], collections [1]/[21.3s], total [19.5s]/[34.1m], memory [715.1mb]->[170.9mb]/[990.7mb], all_pools {[young] [77.7mb]->[3.2mb]/[266.2mb]}{[survivor] [33.2mb]->[0b]/[33.2mb]}{[old] [604.2mb]->[167.7mb]/[691.2mb]}
[2014-12-19 11:48:10,000][INFO ][cluster.service ] [Debra Whitman] removed {[Jackson Arvad][rZrBKZktQgOSydfYq4GW3g][localhost.localdomain][inet[/10.5.1.111:9301]]{client=true, data=false},}, reason: zen-disco-node_failed([Jackson Arvad][rZrBKZktQgOSydfYq4GW3g][localhost.localdomain][inet[/10.5.1.111:9301]]{client=true, data=false}), reason transport disconnected (with verified connect)
我的測試環境是在VM
centos 7.0
記憶體4G
請問該在哪裡修改記憶體的設定
麻煩先進再教導一下
感恩
logstash的預設記憶體的確是500M
回覆刪除請用root帳號開啟 /etc/init.d/logstash檔案,找到下面這一行
LS_HEAP_SIZE="500M"
修改以上設定的記憶體大小即可。
然後記得重啟服務
/etc/init.d/logstash restart
有自己找到在哪改了,謝謝大大
回覆刪除想再請教一下
要怎麼把 windows .LINUX &VM.或其他網路設備的LOG,加到這裡來做監控
感謝指導哦
改了記憶體設定後反而變更糟,XD!
回覆刪除收不到幾筆就掛了
先進可以分享一下您的logstash跟elasticsearch的設定嗎
我把記憶體再加到8G
一樣一下就死當了!
感謝指導啦
補充elasticsearch設定檔內容(etc/elasticsearch/elasticsearch.yml)
刪除cluster.name: "LogCluster"
node.name: "LogMaster"
node.master: true
node.data: true
path.conf: /etc/elasticsearch
path.data: /datapool/data1
path.work: /datapool/work
path.logs: /datapool/log
script.disable_dynamic: true
network.host: localhost
logstash設定檔
input {
file {
path => "/var/log/httpd/access_log"
type => "apache" # a type to identify those logs (will need this later)
}
}
filter {
if [type] == "apache" { # this is where we use the type from the input section
grok {
match => [ "message", "%{COMBINEDAPACHELOG}" ]
}
date {
# Try to pull the timestamp from the 'timestamp' field (parsed above with
# grok). The apache time format looks like: "18/Aug/2011:05:44:34 -0700"
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
if [user-agent] != "-" and [user-agent] != "" {
useragent {
add_tag => [ "UA" ]
source => "user-agent"
}
}
if "UA" in [tags] {
if [device] == "Other" { mutate { remove_field => "device" } }
if [name] == "Other" { mutate { remove_field => "name" } }
if [os] == "Other" { mutate { remove_field => "os" } }
}
}
}
output {
elasticsearch {
host => "localhost"
cluster => "LogCluster"
node_name => "LogMaster"
}
}
謝謝指導
回覆刪除想再請教一下目前前輩所用主機的實體規格&記憶體的大小
讓小弟做為日後參考
感恩
想再請教redis緩衝會另存資料到硬碟
回覆刪除造成空間不足
請問該如何定時把資料備到磁帶
對這部份不熟
還請前輩能指導
感恩
抱歉我沒有備份過redis ,我都直接清掉
刪除不過你可以參考 http://redis.io/topics/persistence
謝謝
可否再請前輩分享redis的設定檔設定做為參考
回覆刪除另外現在在HP DL380 G7 單台 把記憶體調到12G還是會當掉
請教前輩目前是有分多台使用嗎
可否提供硬體規格給我參考
因為才剛接觸ELK,所以問的較多,還請前輩多多指教
感恩
redis的設定檔我都寫在 http://zettadata.blogspot.tw/2014/09/redislog.html 中了。
刪除另外硬體規格的部分,我使用的其實是VM環境,有4 core + 8G RAM單台使用
我還沒有時間試試多台的設定。
請參考,謝謝
再請教一下大大
回覆刪除因為我不是寫程式的
可否請教一下
date {
# Try to pull the timestamp from the 'timestamp' field (parsed above with
# grok). The apache time format looks like: "18/Aug/2011:05:44:34 -0700"
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
if [user-agent] != "-" and [user-agent] != "" {
useragent {
add_tag => [ "UA" ]
source => "user-agent"
}
}
if "UA" in [tags] {
if [device] == "Other" { mutate { remove_field => "device" } }
if [name] == "Other" { mutate { remove_field => "name" } }
if [os] == "Other" { mutate { remove_field => "os" } }
這段語法的意思&用意
謝謝啦