什麼是elk:
ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成:
1)ElasticSearch是一個基於Lucene的開源分佈式搜索服務器。它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並作爲Apache許可條款下的開放源碼發佈,是第二流行的企業搜索引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。
在elasticsearch中,所有節點的數據是均等的。
2)Logstash是一個完全開源的工具,它可以對你的日誌進行收集、過濾、分析,支持大量的數據獲取方法,並將其存儲供以後使用(如搜索)。說到搜索,logstash帶有一個web界面,搜索和展示所有日誌。一般工作方式爲c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往elasticsearch上去。
3)Kibana 是一個基於瀏覽器頁面的Elasticsearch前端展示工具,也是一個開源和免費的工具,Kibana可以爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。
一個完整的集中式日誌系統,需要包含以下幾個主要特點:
1)收集-能夠採集多種來源的日誌數據
2)傳輸-能夠穩定的把日誌數據傳輸到中央系統
3)存儲-如何存儲日誌數據
4)分析-可以支持 UI 分析
5)警告-能夠提供錯誤報告,監控機制
ELK提供了一整套解決方案,並且都是開源軟件,之間互相配合使用,完美銜接,高效的滿足了很多場合的應用。目前主流的一種日誌系統。
ELK工作原理:
Logstash收集AppServer產生的Log,並存放到ElasticSearch集羣中,而Kibana則從ES集羣中查詢數據生成圖表,再返回給Browser。
環境
準備兩臺服務器
一臺服務器:192.168.80.100
一臺服務器:192.168.80.101
下載並解壓
mkdir /usr/local/work //爲elk創建目錄
mkdir /usr/local/java ///爲java創建目錄
tar xf jdk-8u144-linux-x64.tar.gz -C /usr/local/java
tar xf kibana-6.2.3-linux-x86_64.tar.gz -C /usr/local/work/
tar xf logstash-6.2.3.tar.gz -C /usr/local/work/
tar xf elasticsearch-6.2.3.tar.gz -C /
搭建java環境
cd /opt/
cp -r jdk1.8.0_144/ /usr/local/java
vi /etc/profile //在文件末尾新增
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib
java環境生效
source /etc/profile
查看java版本
java -version
創建用戶
ElasticSerach要求以非root身份啓動,所以要創建一個用戶:
groupadd elasticsearch //創建用戶組
useradd -g elasticsearch elasticsearch //創建用戶
給elasticesearch-6.2.3修改用戶組爲elasticsearch
chown -R elasticsearch.elasticsearch /usr/local/work/elasticsearch-6.2.3
修改主機名
hostnamectl set-hostname elk-server
vi /etc/security/limits.conf 新增
- soft nofile 65536
- hard nofile 131072
- soft nproc 2048
- hard nproc 4096
vi /etc/sysctl.conf 新增
vm.max_map_count=655360
sysctl -p //生效
重啓電腦
啓動ElasticSerach
su - elasticsearch //切換用戶
cd /usr/local/work/elasticsearch-6.2.3
bin/elasticsearch -d //啓動
tail -f /usr/local/work/elasticsearch-6.2.3/logs/elasticsearch.log //查看日誌
切換到root
curl 127.0.0.1:9200
至此,ElasticSerach服務啓動成功,接下來是Logstash
cd /usr/local/work/logstash-6.2.3
vi default.conf
input {
beats {
port => "5044"
}
file{
path => ["/usr/local/work/logstash-6.2.3/logs/logstash-plain.log"]
type => "logstash_log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
geoip {
source => "clientip"
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
}
}
啓動logstash
bin/logstash -f default.conf //-f 指定配置文件啓動
tail -f logs/logstash-plain.log //查看配置文件
配置和啓動Kibana
cd /usr/local/work/kibana-6.2.3-linux-x86_64/
vi config/kibana.yml
server.host: "192.168.80.100"
server.port: "5601"
啓動
nohup bin/kibana &
tail -f nohup.out //查看
在瀏覽器訪問http://192.168.80.100:5601
配置nginx-server
yum -y install epel-release //安裝源
yum -y install nginx httpd-tools //安裝軟件包
啓動nginx
systemctl start nginx
使用filebeat 收集日誌的工具
mkdir /usr/local/work/
tar xf filebeat-6.2.3-linux-x86_64.tar.gz -C /usr/local/work/
cd /usr/local/work/filebeat-6.2.3-linux-x86_64/
vi filebeat.yml
enabled: true
- var/log/.log => - /usr/local/nginx/logs/.log
output.elasticsearch: 前面加一個“#”註釋掉
hosts: ["localhost:9200"] 前面加一個“#” 註釋掉
#output.logstash 去掉註釋符號
#host: ["localhost:5400"] 去掉註釋符號,並修改爲[“192.168.80.100:5400”]
啓動FileBeat:./filebeat -e -c filebeat.yml -d “publish”
通過瀏覽器多訪問幾次nginx服務,這樣能多製造一些訪問日誌
訪問Kibana:http://192.168.80.100:5601
點擊左上角的Discover
可以看到訪問日誌已經被ELK蒐集了
輸入logstash-*,點擊”Next step”
選擇Time Filter,再點擊“Create index pattern”
點擊左上角的”Discover”按鈕,即可看到最新的日誌信息
至此,我們已經可以在ELK上查到Nginx的訪問日誌了
自此完成elk