docker部署Nginx并使用filebeat收集运行日志

docker安装nginx并部署(CentOS7.5)

文章包含:

1,docker部署配置nginx
2,docker部署配置filebeat
3,docker部署配置kibana

1,nginx镜像并启动测试

  • 第一步:下载nginx镜像
docker pull nginx
  • 第二步:镜像下载成功后使用如下命令启动nginx
docker run --name testnginx -p 8088:80 -d nginx
  • 第三步:使用docker ps命令查看上述命令是否成功执行(显示如下即执行成功)
    docker ps
    浏览器访问机器ip:8088显示如下即测试成功:docker部署Nginx并使用filebeat收集运行日志_第1张图片

2,接下来实际部署nginx

  • 第一步:首先准备nginx所需的配置文件路径等
    新建/docker/nginx文件夹,并创建以下目录
mkdir logs # 存储日志信息,后续filebeat配置该路径抓取日志文件
mkdir data # 存储html等文件
mkdir conf #存储配置文件
mkdir conf.d #存储扩展配置文件
  • 第二步:进入conf文件夹使用vim nginx.conf添加配置文件如下:
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf; #扩展配置文件的路径
}
  • 第三步:进入conf文件夹使用vim nginx.conf添加配置文件如下:
server {
	listen 80;
	server_name localhost;

	location / {
		proxy_set_header  Host  $http_host;
      	proxy_set_header  X-Real-IP  $remote_addr;
	    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
		root /usr/share/nginx/html;
	}
}
  • 第四步:进入data/html目录下添加index.html

<html>
	<head>
		<meta charset="utf-8">
		<title>hello,worldtitle>
	head>
	<body>
		<h1>docker-nginx部署成功!h1>
	body>
html>
  • 第五步:接下来使用我们配置好的文件路径启动nginx,执行如下命令:
docker run --name nginx -d -p 8080:80 --restart=always --privileged=true  -v /docker/nginx/data/html:/usr/share/nginx/html -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /docker/nginx/logs:/var/log/nginx -v /docker/nginx/conf.d:/etc/nginx/conf.d -d nginx
  • 第六步:验证
  1. docker ps 查看是否启动成功启动成功
  2. 浏览器访问我们部署的机器ip:8080,显示如下即启动成功
    docker部署Nginx并使用filebeat收集运行日志_第2张图片
    到 /docker/nginx/logs目录下查看日志情况:
    在这里插入图片描述
    接下来我们试着将nginx日志路径添加到filebeat配置中。

3,下载配置fiebeat

  • 第一步:下载filebeat镜像和配置文件

    下载镜像和官方配置文件:

docker pull store/elastic/filebeat:7.4.1 #下载镜像
curl -L -O https://raw.githubusercontent.com/elastic/beats/7.6/deploy/docker/filebeat.docker.yml #下载官方配置文件
  • 第二步:根据自己的情况选择要不要修改配置文件,我这里修改了es的配置
filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false

filebeat.autodiscover:
  providers:
    - type: docker
      hints.enabled: true

processors:
- add_cloud_metadata: ~

output.elasticsearch:
 # hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
 # username: '${ELASTICSEARCH_USERNAME:}'
 # password: '${ELASTICSEARCH_PASSWORD:}'
  hosts: ["*.*.*.*:9200","*.*.*.*:9201","*.*.*.*:9202"] #自己es配置的地址
  • 第三步:启动filebeat和nginx
    使用如下命令分别启动nginx和filebeat
# 启动nginx,此处用到了自定的nginx文件
docker run \
  --label co.elastic.logs/enable=true \
  --label co.elastic.logs/module=nginx \
  --label co.elastic.logs/fileset.stdout=access \
  --label co.elastic.logs/fileset.stderr=error \
  --name nginx_01 -v /docker/nginx/data/html:/usr/share/nginx/html \
  -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ 
  -v /docker/nginx/logs:/var/log/nginx -v \
  /docker/nginx/conf.d:/etc/nginx/conf.d -p 80:80 -d nginx
#启动filebeat,使用我们刚才下载修改过的官方配置文件
docker run -d \
  --name=filebeat-nginx\
  --user=root \
  --volume="/docker/filebeat/config/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \
  --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" \
  --volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
  store/elastic/filebeat:7.4.1 -e -strict.perms=false 

执行过后查看容器是否启动成功:
在这里插入图片描述
访问nginx端口:docker部署Nginx并使用filebeat收集运行日志_第3张图片

  • 第四步:使用Elasticsearch-head插件查看是否抓取到日志
    docker部署Nginx并使用filebeat收集运行日志_第4张图片docker部署Nginx并使用filebeat收集运行日志_第5张图片
    至此,filebeat成功创建了索引库并抓取到了nginx的运行日志。

4,下载配置Kibana

  • 第一步:首先安装Kibana并启动
docker pull kibana:7.6.2

注:作者这里的elasticsearch是7.6.2的,kibana版本尽量和es保持一致。
启动Kibana:

#首先创建自定义网络
docker run -it -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 -p 5601:5601 --name kibana kibana:7.6.2

接下来看一下Kibana的启动状态:
在这里插入图片描述
稍等一会儿后查看浏览器访问机器ip:5601查看是否成功启动:docker部署Nginx并使用filebeat收集运行日志_第6张图片
如上显示即启动成功。

  • 第二步:添加配置
    依照如下步骤操作:docker部署Nginx并使用filebeat收集运行日志_第7张图片
    docker部署Nginx并使用filebeat收集运行日志_第8张图片
    接下来选择@timestamp并点击create创建。docker部署Nginx并使用filebeat收集运行日志_第9张图片
    可以看到已经成功获取到filebeat抓取的日志信息。

5,期间遇到的问题:Kibana:server is not ready yet
解决办法:使用docker exec -it 【容器id】 /bin/bash,进入config文件夹下修改http://elasticsearch:9200的elasticsearch为自己的机器ip
参考链接:https://blog.csdn.net/whatday/article/details/107879989

你可能感兴趣的:(docker,nginx,linux,elk)