使用Docker快速部署ELK日志分析及搜索服务

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"}';

重启Nginx服务。可以到kibana控制台进行图形绘制。

posted @ 2018-10-09 14:46  张悟空  阅读(1179)  评论(0编辑  收藏  举报