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

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

off999 2025-02-16 22:26 23 浏览 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、当看见如下界面时,恭喜你搭建成功。

相关推荐

在NAS实现直链访问_如何访问nas存储数据

平常在使用IPTV或者TVBOX时,经常自己会自定义一些源。如何直链的方式引用这些自定义的源呢?本人基于armbian和CasaOS来创作。使用标准的Web服务器(如Nginx或Apache...

PHP开发者必备的Linux权限核心指南

本文旨在帮助PHP开发者彻底理解并解决在Linux服务器上部署应用时遇到的权限问题(如Permissiondenied)。核心在于理解“哪个用户(进程)在访问哪个文件(目录)”。一、核心...

【Linux高手必修课】吃透sed命令!文本手术刀让你秒变运维大神!

为什么说sed是Linux运维的"核武器"?想象你有10万个配置文件需要批量修改?传统方式要写10万行脚本?sed一个命令就能搞定!这正是运维工程师的"暴力美学"时...

「实战」docker-compose 编排 多个docker 组成一个集群并做负载

本文目标docker-compose,对springboot应用进行一个集群(2个docker,多个类似,只要在docker-compose.yml再加boot应用的服务即可)发布的过程架构...

企业安全访问网关:ZeroNews反向代理

“我们需要让外包团队访问测试环境,但不想让他们看到我们的财务系统。”“审计要求我们必须记录所有第三方对内部系统的访问,现在的VPN日志一团糟。”“每次有新员工入职或合作伙伴接入,IT部门都要花半天时间...

反向代理以及其使用场景_反向代理实现过程

一、反向代理概念反向代理(ReverseProxy)是一种服务器配置,它将客户端的请求转发给内部的另一台或多台服务器处理,然后将响应返回给客户端。与正向代理(ForwardProxy)不同,正向代...

Nginx反向代理有多牛?一篇文章带你彻底搞懂!

你以为Nginx只是个简单的Web服务器?那可就大错特错了!这个看似普通的开源软件,实际上隐藏着惊人的能力。今天我们就来揭开它最强大的功能之一——反向代理的神秘面纱。反向代理到底是什么鬼?想象一下你...

Nginx反向代理最全详解(原理+应用+案例)

Nginx反向代理在大型网站有非常广泛的使用,下面我就重点来详解Nginx反向代理@mikechen文章来源:mikechen.cc正向代理要理解清楚反向代理,首先:你需要搞懂什么是正向代理。正向代理...

centos 生产环境安装 nginx,包含各种模块http3

企业级生产环境Nginx全模块构建的大部分功能,包括HTTP/2、HTTP/3、流媒体、SSL、缓存清理、负载均衡、DAV扩展、替换过滤、静态压缩等。下面我给出一个完整的生产环境安装流程(C...

Nginx的负载均衡方式有哪些?_nginx负载均衡机制

1.轮询(默认)2.加权轮询3.ip_hash4.least_conn5.fair(最小响应时间)--第三方6.url_hash--第三方...

Nginx百万并发优化:如何提升100倍性能!

关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。Nginx是大型架构的核心,下面我重点详解Nginx百万并发优化@mikechen文章来源:mikechen....

在 Red Hat Linux 上搭建高可用 Nginx + Keepalived 负载均衡集群

一、前言在现代生产环境中,负载均衡是确保系统高可用性和可扩展性的核心技术。Nginx作为轻量级高性能Web服务器,与Keepalived结合,可轻松实现高可用负载均衡集群(HA+LB...

云原生(十五) | Kubernetes 篇之深入了解 Pod

深入了解Pod一、什么是PodPod是一组(一个或多个)容器(docker容器)的集合(就像在豌豆荚中);这些容器共享存储、网络、以及怎样运行这些容器的声明。我们一般不直接创建Pod,而是...

云原生(十七) | Kubernetes 篇之深入了解 Deployment

深入了解Deployment一、什么是Deployment一个Deployment为Pods和ReplicaSets提供声明式的更新能力。你负责描述Deployment中的目标状...

深入理解令牌桶算法:实现分布式系统高效限流的秘籍

在高并发系统中,“限流”是保障服务稳定的核心手段——当请求量超过系统承载能力时,合理的限流策略能避免服务过载崩溃。令牌桶算法(TokenBucket)作为最经典的限流算法之一,既能控制请求的平...

取消回复欢迎 发表评论: