3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志

这篇具有很好参考价值的文章主要介绍了3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一:系统版本:

3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志,运维,系统安装,docker,docker,elk,运维,elasticsearch,kafka

二:部署环境:

节点名称

IP

部署组件及版本

配置文件路径

机器CPU

机器内存

机器存储

Log-001

10.10.100.1

zookeeper:3.4.13

kafka:2.8.1

elasticsearch:7.7.0

logstash:7.7.0

kibana:7.7.0

zookeeper:/data/zookeeper

kafka:/data/kafka

elasticsearch:/data/es

logstash:/data/logstash

kibana:/data/kibana

2*1c/16cores

62g

50g 系统

800g 数据盘

Log-002

10.10.100.2

zookeeper:3.4.13

kafka:2.8.1

elasticsearch:7.7.0

logstash:7.7.0

kibana:7.7.0

zookeeper:/data/zookeeper

kafka:/data/kafka

elasticsearch:/data/es

logstash:/data/logstash

kibana:/data/kibana

2*1c/16cores

62g

50g 系统

800g 数据盘

Log-003

10.10.100.3

zookeeper:3.4.13

kafka:2.8.1

elasticsearch:7.7.0

logstash:7.7.0

kibana:7.7.0

zookeeper:/data/zookeeper

kafka:/data/kafka

elasticsearch:/data/es

logstash:/data/logstash

kibana:/data/kibana

2*1c/16cores

62g

50g 系统

800g 数据盘

三:部署流程:

(1)安装docker和docker-compose

apt-get install -y docker 
wget https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64 mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

(2)提前拉取需要用到的镜像

docker pull zookeeper:3.4.13 
docker pull wurstmeister/kafka 
docker pull elasticsearch:7.7.0 
docker pull daocloud.io/library/kibana:7.7.0 
docker pull daocloud.io/library/logstash:7.7.0 
docker tag wurstmeister/kafka:latest kafka:2.12-2.5.0 
docker tag docker.io/zookeeper:3.4.13 docker.io/zookeeper:3.4.13 
docker tag daocloud.io/library/kibana:7.7.0 kibana:7.7.0 
docker tag daocloud.io/library/logstash:7.7.0 logstash:7.7.0

(3)准备应用的配置文件

mkdir -p /data/zookeeper 
mkdir -p /data/kafka 
mkdir -p /data/logstash/conf 
mkdir -p /data/es/conf 
mkdir -p /data/es/data 
chmod 777 /data/es/data 
mkdir -p /data/kibana

(4)编辑各组件配置文件

## es配置文件
~]# cat /data/es/conf/elasticsearch.yml 

cluster.name: es-cluster
network.host: 0.0.0.0
node.name: master1      ## 每台节点需要更改此node.name,e.g master2,master3
http.cors.enabled: true
http.cors.allow-origin: "*" ## 防止跨域问题
node.master: true
node.data: true
network.publish_host: 10.10.100.1      ## 每台节点需要更改为本机IP地址
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.unicast.hosts: ["10.10.100.1","10.10.100.2","10.10.100.3"]
cluster.initial_master_nodes: ["10.10.100.1","10.10.100.2","10.10.100.3"]

## elasticsearch启动过程会有报错,提前做以下操作
~]# vim /etc/sysctl.conf
vm.max_map_count=655350
~]# sysctl -p
~]# cat /etc/security/limits.conf
*        -        nofile        100000
*        -        fsize        unlimited
*        -        nproc        100000           ## unlimited nproc for *

## logstash配置文件
~]# cat /data/logstash/conf/logstash.conf 

input{
  kafka{
    topics => ["system-log"]   ## 必须和前后配置的topic统一
      bootstrap_servers => ["10.10.100.1:9092,10.10.100.2:9092,10.10.100.3:9092"]
  }
}
filter{
  grok{
    match =>{ 
      "message" => "%{SYSLOGTIMESTAMP:timestamp} %{IP:ip} %{DATA:syslog_program} %{GREEDYDATA:message}"
    }
    overwrite => ["message"]
  }
  date {
    match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
  }
}

output{
  elasticsearch{
    hosts => ["10.10.100.1:9200","10.10.100.2:9200","10.10.100.3:9200"]
    index => "system-log-%{+YYYY.MM.dd}"
  }
  stdout{
    codec => rubydebug
  }
}

~]# cat /data/logstash/conf/logstash.yml

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://10.10.100.1:9200","http://10.10.100.2:9200","http://10.10.100.3:9200" ]

## kibana配置文件
~]# cat /data/kibana/conf/kibana.yml 
#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://10.10.100.1:9200","http://10.10.100.2:9200","http://10.10.100.3:9200" ]
monitoring.ui.container.elasticsearch.enabled: true

(5)所有组件的部署方式全部为docker-compose形式编排部署,docker-compose.yml文件所在路径/root/elk_docker_compose/,编排内容:

~]# mkdir /data/elk
~]# cat /root/elk_docker_compose/docker-compose.yml

version: '2.1'
services:
  elasticsearch:
    image: elasticsearch:7.7.0
    container_name: elasticsearch
    environment:
      ES_JAVA_OPTS: -Xms1g -Xmx1g
    network_mode: host
    volumes:
      - /data/es/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /data/es/data:/usr/share/elasticsearch/data
    logging:
      driver: json-file

  kibana:
    image: kibana:7.7.0
    container_name: kibana
    depends_on:
      - elasticsearch
    volumes:
      - /data/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml
    logging:
      driver: json-file
    ports:
      - 5601:5601

  logstash:
    image: logstash:7.7.0
    container_name: logstash
    volumes:
      - /data/logstash/conf/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
      - /data/logstash/conf/logstash.yml:/usr/share/logstash/config/logstash.yml
    depends_on:
      - elasticsearch
    logging:
      driver: json-file
    ports:
      - 4560:4560

  zookeeper:
    image: zookeeper:3.4.13
    container_name: zookeeper
    environment:
      ZOO_PORT: 2181
      ZOO_DATA_DIR: /data/zookeeper/data
      ZOO_DATA_LOG_DIR: /data/zookeeper/logs
      ZOO_MY_ID: 1
      ZOO_SERVERS: "server.1=10.10.100.1:2888:3888 server.2=10.10.100.2:2888:3888 server.3=10.10.100.3:2888:3888"
    volumes:
      - /data/zookeeper:/data/zookeeper
    network_mode: host
    logging:
      driver: json-file

  kafka:
    image: kafka:2.12-2.5.0
    container_name: kafka
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_PORT: 9092
      KAFKA_HEAP_OPTS: "-Xms1g -Xmx1g"
      KAFKA_HOST_NAME: 10.10.100.145
      KAFKA_ADVERTISED_HOST_NAME: 10.10.100.1
      KAFKA_LOG_DIRS: /data/kafka
      KAFKA_ZOOKEEPER_CONNECT: 10.10.100.1:2181,10.10.100.2:2181,10.10.100.3:2181
    network_mode: host
    volumes:
      - /data:/data
    logging:
      driver: json-file

(6)启动服务

#开始部署(三台节点分别修改配置文件和docker-compose配置)
~]# docker-compose up -d
#停止运行的容器实例
~]# docker-compose stop
#单独启动容器
~]# docker-compose up -d kafka

(7)验证集群各组件服务状态

(1) 验证zookeeper:
]# docker exec -it zookeeper bash
bash-4.4# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower

(2) 验证kafka:
]# docker exec -it kafka bash
bash-4.4# kafka-topics.sh --list --zookeeper 10.10.100.1:2181
__consumer_offsets
system-log

(3) 验证elasticsearch
]# curl '10.10.100.1:9200/_cat/nodes?v'ip            
heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10.10.100.1           57          81   0    0.37    0.15     0.09 dilmrt    *      master2
10.10.100.2           34          83   0    0.11    0.10     0.06 dilmrt    -      master1
10.10.100.3           24          81   0    0.03    0.06     0.06 dilmrt    -      master3


(4) 验证kibana
浏览器打开http://10.10.100.1:5601

3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志,运维,系统安装,docker,docker,elk,运维,elasticsearch,kafka

三:日志收集

(1)以nginx日志为例,安装filebeat日志采集器

apt-get install filebeat

(2)配置filebeat向kafka写数据

启用 Nginx 模块:
sudo filebeat modules enable nginx
配置 Nginx 模块: 编辑 /etc/filebeat/modules.d/nginx.yml,确保日志路径正确。例如:
- module: nginxaccess:enabled: truevar.paths: ["/var/log/nginx/access.log*"]
  error:enabled: truevar.paths: ["/var/log/nginx/error.log*"]
设置输出为 Kafka: 在 filebeat.yml 文件中,配置输出到 Kafka:
output.kafka:
  # Kafka 服务地址
  hosts: ["10.10.100.1:9092", "10.10.100.2:9092", "10.10.100.3:9092"]
  topic: "system-log"
  partition.round_robin:
    reachable_only: false
  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000
重启 Filebeat:
sudo systemctl restart filebeat

(3)配置验证:使用 Filebeat 的配置测试命令来验证配置文件的正确性:

filebeat test config

3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志,运维,系统安装,docker,docker,elk,运维,elasticsearch,kafka

(4)连接测试:可以测试 Filebeat 到 Kafka 的连接:

filebeat test output

3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志,运维,系统安装,docker,docker,elk,运维,elasticsearch,kafka

(5)登录kibana控制台查看nginx日志是否已正常收集到

3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志,运维,系统安装,docker,docker,elk,运维,elasticsearch,kafka文章来源地址https://www.toymoban.com/news/detail-860282.html

到了这里,关于3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu 22.04搭建OpenVPN服务器

    为了公司与分公司之前的内部服务器和办公电脑之间能够相互访问,打算使用VPN,对于VPN,以前用得多的是PPTP; 但是PPTP相对于openvpn来说,没有openvpn安全,而且PPTP在linux下命令行支持不是很好,稳定性也不如openvpn。所以最后就选择openvpn来搭建VPN. 如上图所示,红线为VPN访问效

    2024年02月14日
    浏览(48)
  • Ubuntu 22.04配置samba服务器

    安装samba 可以验证一下安装结果: 创建samba用户密码 创建samba用户(可选): 上面的命令创建一个名为samba的系统用户,不需要创建该用户的home目录。 用户名可以根据需要修改,不一定要用samba这个名称。 这个用户是登陆samba服务器的用户,这个步骤是可选的,因为可以使用

    2024年02月06日
    浏览(72)
  • Ubuntu 20.04(服务器版)安装 Anaconda

    Anaconda是一个开源的Python发行版本,包含了包括Python、Conda、科学计算库等180多个科学包及其依赖项。因此,安装了Anaconda就不用再单独安装CUDA、Python等。 CUDA,在进行深度学习的时候,需要用到GPU,CUDA就是一个调用GPU的工具。只有NVidia显卡才能使用CUDA。现有的主流深度学习

    2024年02月13日
    浏览(58)
  • Ubuntu 22.04 安装配置时间同步服务器

    参数解释: 1.server 127.127.1.0 #local clock 这个参数指定了一个本地时钟源。127.127.1.0 ,通常用于表示本地计算机的时钟。这个参数告诉NTP守护进程,如果无法从其他NTP服务器获取时间,或者作为备份时钟源,应该使用本地计算机的时钟作为时间源。 2.fudge 127.127.1.0 stratum 10 这个参

    2024年04月28日
    浏览(66)
  • Ubuntu服务器安装配置slurm (Ubuntu 22.04 LTS)

    Slurm 全称 S imple L inux U tility for R esource M anagement。通常被用于大型Linux服务器 (超算) 上,作为任务管理系统。本文详细讲述如何在 Ubuntu 22.04 LTS 上安装slurm,并进行简单的配置。 其实网上相关的教程已经非常多,但在旧版本的Ubuntu上安装slurm时,通常需要安装一个名为slurm-ll

    2024年02月07日
    浏览(77)
  • 【Ubuntu】ubuntu22.04使用VNC链接服务器远程桌面

    本地主要需要一个VNC客户端,用来远程连接服务器端的VNC(在不安装Web版本VNC情况下)。VNC客户端下载地址: VNC客户端下载 在远程服务器控制台中安装Xfce桌面(这个桌面环境比较轻量化,博主用的88块钱的腾讯云服务器) 注意更新软件源 在远程服务器控制台中安装 tightvn

    2024年02月03日
    浏览(61)
  • ubuntu22.04 服务器 SSH 密钥登录失败

    SSH密钥登录,是将SSH公钥写入服务端的 ~/.ssh/authorized_keys 文件中。 今天装了ubuntu22.04的系统,按照以往操作,在服务端配置了SSH公钥之后,发现竟然无法登录。 首先查看OpenSSH版本: 查看 /var/log/auth.log 文件,发现有如下错误信息: 通过错误信息来看,填入 authorized_keys 文件的

    2024年01月18日
    浏览(86)
  • 新 Ubuntu 14.04 服务器的基本配置

    简介 在为新服务器设置最低配置之后,大多数情况下都建议进行一些额外的步骤。在本指南中,我们将继续配置我们的服务器,处理一些推荐但可选的程序。 在开始本指南之前,您应该先运行 Ubuntu 14.04 初始服务器设置指南。这是为了设置用户帐户、配置使用 sudo 进行特权提

    2024年02月19日
    浏览(34)
  • ubuntu 22.04 服务器网卡无IP地址

    ssh连接服务器连接不上,提示如下; 连接显示器 ,ip addr ls 命令查看IP地址,有网卡但没有IP地址 用于通过 DHCP 协议获取网络配置信息并为名为 enp10s0 的网络接口分配 IP 地址,enp10s0替换为本机网络接口名称 但是一旦重启 ,又没了IP地址 。目前为止暂未找到解决办法 偶然的机

    2024年02月22日
    浏览(54)
  • Ubuntu22.04 安装深度学习服务器全纪录

    制作启动盘 参考链接:https://blog.csdn.net/lyx_ok/article/details/129308753 安装 Ubuntu 22.04 将U盘插到服务器上,开机按F11键(具体什么键跟主板型号有关)选择启动项进入临时的 Ubuntu 系统,在图形界面中选择 Install Ubuntu ,所有配置都可以使用默认的,改一下用户名和密码即可。 进入

    2024年02月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包