1. 安裝docker
2. 創建目錄
mkdir -p /home/elasticsearch
3. 拉取ElasticSearch鏡像並啟動容器
docker run -dit -p 9200:9200 -v /home/elasticsearch:/usr/share/elasticsearch/data --name=elasticsearch docker.io/elasticsearch
4. 拉取Kibana鏡像並啟動容器
docker run -dit -p 5601:5601 --name=kibana --link elasticsearch:elasticsearch docker.io/kibana
5. 安裝ElasticSearch Head
5.1 Docker方式安裝
/*Elasticsearch 5.x 版本*/
docker run -p 9100:9100 mobz/elasticsearch-head:5
Note: 此方式可能需要解決跨域問題
/*進入Es的容器,編輯Es配置文件,增加如下內容*/
http.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
5.2 Chrome插件方式安裝
點擊下載插件 或者在Chrome插件中心搜索ElesticSearch Head
至此ElasticSearch和Kibana安裝完成,可以進行基礎搜索服務
6. 安裝Logstash
6.1 創建配置文件
cd /home
vim logstash.conf
/***輸入一下內容***/
input{
beats{
port => "5044"
}
}
filter{
if [type] == "nginxAccess"{
json{
source => "message"
remove_field => ["message"]
}
mutate{
gsub => ["request_uri", "\?.*" ,""]
convert => ["body_bytes_sent","integer"]
}
}
}
output{
elasticsearch{
hosts => ["Es所在服務器IP"]
}
}
/******============******/
6.2 拉取Logstash鏡像並啟動容器
docker pull docker.io/logstash
docker run -itd -p 5044:5044 -v "$PWD":/config-dir logstash -f /config-dir/logstash.conf
7. 在日志源主機上安裝FileBeat
7.1 安裝
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.3-x86_64.rpm
sudo rpm -vi filebeat-5.6.3-x86_64.rpm
7.2 配置
vi /etc/filebeat/filebeat.yml
/******============******/
filebeat:
prospectors:
-
paths:
- /data/logs/nginx_access.log
input_type: log
document_type: nginxAccessDev2
-
paths:
- /data/logs/nginx_error.log
input_type: log
document_type: nginxErrorDev2
output:
logstash:
hosts: ["IP地址:5044"]
/******============******/
/***檢測配置文件是否正確***/
./filebeat.sh -configtest -e
/***重啟filebeat服務***/
/etc/init.d/filebeat restart
至此ELK搭建完成,下面配置nginx的日志輸出格式
log_format main '{"remote_addr": "$remote_addr",'
'"remote_user": "$remote_user",'
'"body_bytes_sent": $body_bytes_sent,'
'"request_time": $request_time,'
'"status": "$status",'
'"request": "$request",'
'"uri":"$uri",'
'"request_filename":"$request_filename",'
'"document_uri":"$document_uri",'
'"request_method": "$request_method",'
'"http_referrer": "$http_referer",'
'"body_bytes_sent":"$body_bytes_sent",'
'"http_x_forwarded_for": "$http_x_forwarded_for",'
'"http_user_agent": "$http_user_agent",'
'"request_uri":"$request_uri"}';
