百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Docker搭建ELK 8.0,收集Nginx日志完整搭建教程——免踩坑系列

off999 2025-02-16 22:26 16 浏览 0 评论

因公司节约成本,业务下云,很多基础服务都需要自建,刚好尝鲜一下ELK 8.0版本。详细搭建过程记录如下:

1、执行如下命令后,执行一下 sysctl -p 使配置生效或者 reboot 重启一下服务器

echo "vm.max_map_count=262144" >>?/etc/sysctl.conf?

2、在宿主机上新建elasticsearch数据存储目录并授权

mkdir -p?/elasticsearch/data && chown 1000:1000 /elasticsearch/data

3、执行 docker-compose up -d 部署elasticsearch和kibana,docker-compose.yaml如下:

version: '2.2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.6.1
    container_name: elasticsearch
    restart: always
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms8g -Xmx8g"
      - TZ=PRC
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /elasticsearch/data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
  kibana:
    image: docker.elastic.co/kibana/kibana:8.6.1
    container_name: kibana
    restart: always
    environment:
      - server.publicBaseUrl=http://your_server_ip:5601
    depends_on:
      - elasticsearch
    ports:
      - 5601:5601

4、浏览器输入
http://your_server_ip:5601看到如下界面说明启动正常

5、进入elasticsearch容器内重置elastic密码和生成Enrollment token,命令如下:

docker exec -it elasticsearch bash 
# 输入“y”后生成新的密码,需要保存记住
bin/elasticsearch-reset-password -u elastic
# 生成的Token密钥,填入到上图中的输入框内
bin/elasticsearch-create-enrollment-token --scope kibana

6、点击浏览器的"Configure Elastic"按钮继续到下一步,如图所示:

7、进入kibana容器内获取6位数字验证码并填入框内,命令如下:

docker exec -it kibana bash
bin/kibana-verification-code

8、配置成功后出现下图,账号是:elastic ,密码是第5步中生成的密码


9、备份保存证书,后面需要用到。退出到容器外执行如下命令:

?docker cp elasticsearch:/usr/share/elasticsearch/config/certs/http_ca.crt .

10、将Nginx日志文件格式改成如下:

log_format log_json escape=json '{ "time": "$time_local", '
        '"username": "$remote_user", '
        '"remote_addr": "$remote_addr", '
        '"request": "$request", '
        '"domain": "$host", '
        '"status": $status, '
        '"size": $bytes_sent, '
        '"request_body": "$request_body", '
        '"client": "$http_user_agent", '
        '"x_forwarded": "$http_x_forwarded_for", '
        '"up_addr": "$upstream_addr", '
        '"request_time": $request_time, '
        '"upstream_response_time": $upstream_response_time, '
        '"upstream_connect_time": $upstream_connect_time, '
        '"upstream_header_time": $upstream_header_time, '
        '"upstream_status": $upstream_status'
        ' }';

    access_log  /var/log/nginx/access.log  log_json;

11、将http_ca.crt证书文件拷贝到Nginx服务器上,如/root/logstash/config/目录下,并修改用户权限:

chown 1000:1000?http_ca.crt

12、在/root/logstash/config/目录下新建logstash.conf配置文件,内容如下:

input {
    file {
        path => ["/nginx/logs/*.access.log"]
        codec => "json"
        type => "nginx-access-log"
    }    
}

filter {
    mutate {
        remove_field => ["type", "log", "event"]
    }
 
    mutate {
        convert => ["@version", "integer"]
    }

}

output {
#    stdout { }
    elasticsearch {
        hosts => ["https://your_es_server_ip:9200"]
        index => "logstash-nginx-%{+YYYY.MM.dd}"
        user => "elastic"
        password => "your_es_password"
        ssl => true                              # 使用https连接
        ssl_certificate_verification => false    # 是否允许去CA机构验证证书是否有效,默认是true
        cacert => "/logstash/config/http_ca.crt"
    }
}

13、执行如下命令部署logstash

docker run -d --name logstash --hostname nginx --restart=always -v /root/proxy/logs:/nginx/logs -v /root/logstash/config:/logstash/config docker.elastic.co/logstash/logstash:8.6.1 -f /logstash/config/logstash.conf

注意:需要将Nginx日志目录挂进容器内,根据自己实际情况修改。

14、登录kibana,点击Discover,点击红框所示按钮


15、获取索引数据,如图红框所示:


16、当看见如下界面时,恭喜你搭建成功。

相关推荐

python基础模块三剑客:sys、os、shutil(增加示例代码)

注:上个篇由于不熟悉头条号编辑器,导致示例代码丢失。现在全部以图片的形式加回。有同学问了个问题:在python里如何复制、删除、重命名文件?有个同学知道os.system(),就回答说:os.syst...

Python常用文件操作库使用详解(python 对文件操作)

Python生态系统提供了丰富的文件操作库,可以处理各种复杂的文件操作需求。本教程将介绍Python中最常用的文件操作库及其实际应用。一、标准库核心模块1.1os模块-操作系统接口主要功能:文件...

你知道Python 如何进行高效的代码重构吗?

点赞、收藏、加关注,下次找我不迷路写出高质量的代码是每个程序员的追求。而代码重构作为提升代码质量的重要手段,却常常被新手忽视。很多新手在编写代码时,只关注功能是否实现,却不注重代码的结构和可维护性,...

Python常用内置模块介绍——文件与系统操作详解

Python提供了多个强大的内置模块用于文件和系统操作,下面我将详细介绍最常用的几个模块及其核心功能。1.os模块-操作系统交互os模块提供了与操作系统交互的接口,包括文件/目录操作、进程管理、环...

Python的tarfile模块解压缩.tar/.tar.gz等文件

python中的标准库tarfile模块可以帮助我们快速压缩或者解压后缀为.tar/.tar.gz/.tar.bz2/.tar.xz的文件。01、tarfile核心类与函数介绍使用方法因为tarfil...

批量重命名工具,Bulk Rename Utility软件体验

平常在电脑上处理电子文件,经常在得到文件本身时,没有空闲和精力去为文件重命名,像是一张图片,要作为下一个步骤的素材。而处理完事过后就不理它了,顺手直接丢回收站或者放在硬盘里。但是想把文件存档和提交给上...

照片怎样重命名?方法有四种(照片怎么可以重命名)

照片怎样重命名?照片在我们日常生活中扮演着越来越重要的角色,但是有时候,我们需要对照片进行重命名,以便更好地组织和查找它们,这样也可以大大提高我们的效率。在这篇文章中,我们将介绍四种简单的方法,让你轻...

你需要批量创建文件夹并命名吗,给你推荐几个方法

小李是一家设计公司的项目经理,最近接了一个大项目,需要整理大量的设计稿。每个设计稿都需要单独创建一个文件夹,以方便团队成员协作。手动创建文件夹效率太低,而且容易出错。小李在网上搜索了各种方法,尝试了P...

怎样批量重命名一个工作簿中的所有工作表

上篇文章,Python数据的选取和处理,阅读量93,收藏15,没有评论。目前正在复习Python+Excel实现办公自动化,有兴趣的可以一起讨论,共同提高。花了近4个小时终于把6个分部的统计工作表做好...

Windows如何批量修改文件后缀名(电脑如何批量修改文件后缀名)

在Windows系统中药批量修改文件后缀名的方式非常多,每个方法的优缺点各有不同,下面通过几个常见的方式给大家介绍下,Windows如何批量修改文件后缀名的。给有需要的朋友几个参考。方法一:使用文件资...

Python3+ 变量命名全攻略:PEP8 规范 + 官方禁忌 + 实战技巧,全搞懂!

Python3+变量命名规则与约定详解一、官方命名规则(必须遵守)1.合法字符集变量名只能包含:大小写字母(a-z,A-Z)数字(0-9)下划线(_)2.禁止数字开头合法:user_age,...

python代码实现读取文件并生成韦恩图

00、背景今天战略解码,有同学用韦恩图展示各个产品线的占比,效果不错。韦恩图(Venndiagram),是在集合论数学分支中,在不太严格的意义下用以表示集合的一种图解。它们用于展示在不同的事物群组之...

python学习第二天:用Pycharm新建的第一个程序

分享第一次使用Pycharm学到的内容第一次打开得到上面图片projects:项目customize:自定义plugins:插件learn:学习newproject新建项目聪明如我在插件那里找到了汉...

如何编写第一个Python程序(python第一个代码)

一、第一个python程序[掌握]python:python解释器,将python代码解释成计算机认识的语言pycharm:IDE(集成开发环境),写代码的一个软件,集成了写代码,...

Python文件读写操作详解:从基础到实战

Python文件的读写操作在Python中,文件操作非常常见,可以通过内建的open()函数进行文件的读取、写入、创建等操作。理解文件操作的模式和with语句对于确保代码的简洁性和效率至...

取消回复欢迎 发表评论: