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"}';
网友评论