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

一:系统版本:

二:部署环境:

节点名称

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.ymlhttp.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.ymlversion: '2.1'
services:elasticsearch:image: elasticsearch:7.7.0container_name: elasticsearchenvironment:ES_JAVA_OPTS: -Xms1g -Xmx1gnetwork_mode: hostvolumes:- /data/es/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /data/es/data:/usr/share/elasticsearch/datalogging:driver: json-filekibana:image: kibana:7.7.0container_name: kibanadepends_on:- elasticsearchvolumes:- /data/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.ymllogging:driver: json-fileports:- 5601:5601logstash:image: logstash:7.7.0container_name: logstashvolumes:- /data/logstash/conf/logstash.conf:/usr/share/logstash/pipeline/logstash.conf- /data/logstash/conf/logstash.yml:/usr/share/logstash/config/logstash.ymldepends_on:- elasticsearchlogging:driver: json-fileports:- 4560:4560zookeeper:image: zookeeper:3.4.13container_name: zookeeperenvironment:ZOO_PORT: 2181ZOO_DATA_DIR: /data/zookeeper/dataZOO_DATA_LOG_DIR: /data/zookeeper/logsZOO_MY_ID: 1ZOO_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/zookeepernetwork_mode: hostlogging:driver: json-filekafka:image: kafka:2.12-2.5.0container_name: kafkadepends_on:- zookeeperenvironment:KAFKA_BROKER_ID: 1KAFKA_PORT: 9092KAFKA_HEAP_OPTS: "-Xms1g -Xmx1g"KAFKA_HOST_NAME: 10.10.100.145KAFKA_ADVERTISED_HOST_NAME: 10.10.100.1KAFKA_LOG_DIRS: /data/kafkaKAFKA_ZOOKEEPER_CONNECT: 10.10.100.1:2181,10.10.100.2:2181,10.10.100.3:2181network_mode: hostvolumes:- /data:/datalogging: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

三:日志收集

(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: falserequired_acks: 1compression: gzipmax_message_bytes: 1000000
重启 Filebeat:
sudo systemctl restart filebeat

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

filebeat test config

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

filebeat test output

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2980780.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

探索未来的区块链DApp应用,畅享数字世界的无限可能

随着区块链技术的飞速发展,分布式应用(DApp)正成为数字经济中的一股强劲力量。DApp以其去中心化、透明公正的特点,为用户带来了全新的数字体验,开创了数字经济的新潮流。作为一家专业的区块链DApp应用开发公司&#xf…

全面了解俄罗斯的VK开户和Yandex投放及内容运营

俄罗斯的VKontakte(简称VK)和Yandex是两个重要的在线平台,对于希望在俄罗斯市场进行推广的企业来说,了解如何在这些平台上开户和投放广告以及内容运营是非常关键的。 俄罗斯vk广告如何开户? 通过上海上弦进行俄罗斯V…

明日方舟游戏助手:一键完成日常任务 | 开源日报 No.233

MaaAssistantArknights/MaaAssistantArknights Stars: 11.6k License: AGPL-3.0 MaaAssistantArknights 是一款《明日方舟》游戏的小助手,基于图像识别技术,支持一键完成全部日常任务。 刷理智、掉落识别及上传企鹅物流智能基建换班、自动计算干员效率…

c++的策略模式,就是多态

一、定义: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。 策略模式让算法独立于使用它的客户而独立变化。 二,核心 抽象策略(抽象基类)(Strategy&#xff09…

面试八股——RabbitMQ

消息丢失问题 消息确认机制 生产者与MQ之间的消息确认: 当MQ成功接收消息后,会返回给生产者一个确认消息。如果在规定时间内生产者未收到确认消息,则任务消息发送失败。 MQ与消费者之间的消息确认: 当MQ成功接收消息后&#…

构建安全高效的前端权限控制系统

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…

【C++】优先队列

优先队结构的不同物理结构与常用操作算法 优先队列是一种特殊的队列,队列中的元素具有优先级,每次弹出操作会弹出优先级最高的元素。 优先队列常用的物理结构有: 1. 数组:简单但不高效,插入和删除操作需要移动大量元素,时间复杂度高。 2. 二叉堆:是一种完全二叉树,通常用数…

新技术前沿-2024-大型语言模型LLM的本地化部署

参考快速入门LLM 参考究竟什么是神经网络 1 深度学习 1.1 神经网络和深度学习 神经网络是一种模拟人脑神经元工作方式的机器学习算法,也是深度学习算法的基本构成块。神经网络由多个相互连接的节点(也称为神经元或人工神经元)组成,这些节点被组织成层次结构。通过训练,…

Keil和VSCode协同开发STM32程序

系列文章 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 配置环境 2. 测试打开工程 3. 测试编译工程 随着项目的复杂度上升,开发者不仅需要强大的硬件支持,还需要一个高效和灵活的开发环境。 vscode是一款集成大量可以便携开发插件的代码…

Redis入门到通关之Redis数据结构-List篇

文章目录 ☃️概述☃️数据结构☃️源码☃️其他 欢迎来到 请回答1024 的博客 🍓🍓🍓欢迎来到 请回答1024的博客 关于博主: 我是 请回答1024,一个追求数学与计算的边界、时间与空间的平衡,0与1的延伸的后端…

FSRCNN:加速超分辨率卷积神经网络,SRCNN的加速版

paper:https://arxiv.org/pdf/1608.00367 code: https://github.com/yjn870/FSRCNN-pytorch/tree/master 目录 1. 动机 2. 方法 3. 代码对比 4. 实验结果 1. 动机 作者此前提出的SRCNN证明了CNN在图像超分领域的有效性。然而,SRCNN计算效率较低&#…

《Beginning C++20 From Novice to Professional》第五章 Arrays and Loops

循环和数组确实是联系比较紧密的两个基础语法,数组让我们管理大量同类对象,循环可以简单地遍历一个范围内的元素 本章我们可以学到: Arrays 数组开辟一段连续空间存储同类元素,我们通过【】下标来访问某个元素 如果无符号整型占…

javascript(第三篇)原型、原型链、继承问题,使用 es5、es6实现继承,一网打尽所有面试题

没错这是一道【去哪儿】的面试题目,手写一个 es5 的继承,我又没有回答上来,很惭愧,我就只知道 es5 中可以使用原型链实现继承,但是代码一行也写不出来。 关于 js 的继承,是在面试中除了【 this 指针、命名提…

Python网络爬虫-详解XPath匹配网页数据

前言 XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言。XPath使用路径表达式来选取XML文档中的节点或节点集。这些节点是通过沿着路径(path)或者步(steps)来选取…

Linux下的UDEV机制/守护进程

一. Udev机制概念引入 ( 需要在 etc/udev/rules.d/ 下创建设备的相关规则,不然有可能udev机制生成的设备文件不具备可读可写的权限,adb无法成功通过该设备文件访问设备 ) a. 创建文件夹 sudo vim Xiaomi-audroid.rules b. 添加规则 …

tiktok如何影响用户行为的分析兼论快速数据分析的策略

tiktok如何影响用户行为的分析 快速数据分析的策略流程: 1.确定指标变量,也就确定了数据分析想要回答的问题。想回答不同的问题,就选择不同的指标变量。 变量筛选方法选出指标变量相关的变量; 针对筛选出的变量进行描述性分析和因…

Linux系统安全:从面临的攻击和风险到安全加固、安全维护策略(文末有福利)

1. Linux面临的攻击与风险 1.1. Linux系统架构 Linux系统架构解读: 用户之间隔离内核态与用户态之间隔离用户进程一般以低权限用户运行系统服务一般以特权服务运行用户态通过系统调用进入内核态内核对系统资源进行管理和分配 1.2. Linux系统常见安全威胁 1.2.1.…

Swift-27-类的初始化与销毁

Swift的初始化是一个有大量规则的固定过程。初始化是设置类型实例的操作,包括给每个存储属性初始值,以及一些其他准备工作。完成这个过程后,实例就可以使用了。 简单来讲就是类的构造函数,基本语法如下: 注意&#xff…

【webrtc】Chrome和Firefox在SDP协商过程中,针对localhost的不同处理

内网下chrome端webrtc协商失败 现象 我有一个webrtc服务器在局域网内,使用chrome浏览器访问时,发现webrtc在做媒体协商时失败。 具体表现是,在交换sdp后,ice的状态是oniceconnectionstatechange: failed 但是换成Firefox浏览器…

计算机网络相关知识总结

一、概述 计算机网络可以极大扩展计算机系统的功能机器应用范围,提高可靠性,在为用户提供放方便的同时,减少了整体系统费用,提高性价比。 计算机网络的功能主要有:1. 数据共享;2. 资源共享;3. 管…