当前位置: 首页 > news >正文

ELK日志收集

目前,各个微服务系统的日志都保存在各自指定的目录中,如果这些微服务部署在不同的服务器上,那么日志文件也是分散在各自的服务器上。分散的日志不利于我们快速通过日志定位问题,我们可以借助ELK来收集各个微服务系统的日志并集中展示。

ELK即Elasticsearch、Logstash和Kibana首字母缩写。Elasticsearch用于存储日志信息,Logstash用于收集日志,Kibana用于图形化展示。

搭建ELK环境

在Windwos上搭建ELK环境较为麻烦,这里我选择在CentOS7 上通过Docker来搭建ELK环境,对Docker基本使用不熟悉的同学可以参考 Docker基础教程。

在此之前,我们需要准备一台CentOS 7虚拟机。推荐大家使用Vagrant来创建,创建教程可以参考:使用Vagrant创建CentOS虚拟机。这里分享下我的Vagrantfile配置:

 Vagrant.configure("2") do |config|config.vm.box = "centos7"config.vm.network "private_network", ip: "192.168.33.10"config.vm.hostname = "febs"config.vm.provider "virtualbox" do |v|v.memory = 6144v.cpus = 2endend

上面配置了虚拟机的IP地址为192.168.33.10,hostname为febs,内存为6*1024MB(6144MB即6GB),cpu核心数为2。

安装docker

在CMD终端使用命令vagrant ssh连接虚拟机后,运行sudo -s切换到root用户,下面的示例都是用root用户完成的。

在Linux中安装Docker可以参考官方文档:CentOS | Docker Docs,主要分为下面这几步:

  1. 卸载旧版本Docker(如果系统之前没安装过Docker,可以跳过):

 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
  1. 安装Docker所需要的包:

 yum install -y yum-utils \device-mapper-persistent-data \lvm2
  1. 设置稳定的仓库:

 yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装最新版的Docker引擎:

 yum install docker-ce docker-ce-cli containerd.io
  1. 启动Docker:

 systemctl start docker

查看是否安装成功:

安装Docker Compose

安装好Docker后,我们接着安装Docker Compose,官方安装教程 Install | Docker Docs,主要步骤为:

  1. 获取Docker Compose的最新稳定版本:

 curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 对二进制文件授予可执行权限:

 chmod +x /usr/local/bin/docker-compose
  1. 创建link:

 ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

查看是否安装成功:

Docker Compose搭建ELK

在搭建ELK之前,我们需要做一些准备工作。

正如官方所说的那样 Virtual memory | Elasticsearch Guide [8.15] | Elastic,Elasticsearch默认使用mmapfs目录来存储索引。操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存:

 sysctl -w vm.max_map_count=262144

创建Elasticsearch数据挂载路径:

 mkdir -p /febs/elasticsearch/data

对该路径授予777权限:

 chmod 777 /febs/elasticsearch/data

创建Elasticsearch插件挂载路径:

 mkdir -p /febs/elasticsearch/plugins

创建Logstash配置文件存储路径:

 mkdir -p /febs/logstash

在该路径下创建logstash-febs.conf配置文件(没有安装vim的话可以使用yum install vim命令安装):

 vim /febs/logstash/logstash-febs.conf

内容如下所示:

 input {tcp {mode => "server"host => "0.0.0.0"port => 4560codec => json_lines}}output {elasticsearch {hosts => "es:9200"index => "febs-logstash-%{+YYYY.MM.dd}"}}

创建ELK Docker Compose文件存储路径:

 mkdir -p /febs/elk

在该目录下创建docker-compose.yml文件:

 vim /febs/elk/docker-compose.yml

内容如下所示:

 version: '3'services:elasticsearch:image: elasticsearch:6.4.1container_name: elasticsearchenvironment:- "cluster.name=elasticsearch" #集群名称为elasticsearch- "discovery.type=single-node" #单节点启动- "ES_JAVA_OPTS=-Xms512m -Xmx512m" #jvm内存分配为512MBvolumes:- /febs/elasticsearch/plugins:/usr/share/elasticsearch/plugins- /febs/elasticsearch/data:/usr/share/elasticsearch/dataports:- 9200:9200kibana:image: kibana:6.4.1container_name: kibanalinks:- elasticsearch:es #配置elasticsearch域名为esdepends_on:- elasticsearchenvironment:- "elasticsearch.hosts=http://es:9200" #因为上面配置了域名,所以这里可以简写为http://es:9200ports:- 5601:5601logstash:image: logstash:6.4.1container_name: logstashvolumes:- /febs/logstash/logstash-febs.conf:/usr/share/logstash/pipeline/logstash.confdepends_on:- elasticsearchlinks:- elasticsearch:esports:- 4560:4560

切换到/febs/elk目录下,使用如下命令启动:

 docker-compose up -d

第一次启动的时候,Docker需要拉取ELK镜像,过程可能稍慢,耐心等待即可。成功启动后,观察容器运行情况:

145.png

三个容器都已经启动成功。

Logstash中安装json_lines插件

使用如下命令进入到Logstash容器中:

 docker exec -it logstash /bin/bash

切换到/bin目录,安装json_lines插件,然后退出:

使用浏览器访问http://192.168.33.10:5601便可以看到Kibana管理界面:

修改微服务日志配置

就目前微服务模块来说,我们比较关注febs-auth、febs-gateway、febs-server-system和febs-server-test模块的日志,所以我们分别在febs-auth、febs-gateway和febs-server模块的pom里引入Logstash依赖:

 <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.1</version></dependency>

然后在febs-auth、febs-gateway、febs-server-system和febs-server-test模块的日志配置文件logback-spring.xml里添加如下配置:

 <!--输出到 logstash的 appender--><appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>192.168.33.10:4560</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender>​......<root level="info">......<appender-ref ref="logstash" /></root>

192.168.33.10:4560对应我们刚刚搭建的Logstash地址。

演示

依次启动febs-register、febs-gateway、febs-auth、febs-server-system和febs-server-test模块,然后回到Kibana管理界面创建Kinaba Index Patterns:

在Index pattern里输入我们在logstash配置文件logstash-febs.confoutput.index指定的值febs-logstash-*

点击Next Step,在下拉框里选择@timestamp

最后点击Create Index Pattern按钮完成创建。

使用PostMan获取令牌:

然后发送一笔localhost:8301/test/hello?name=夏天请求:

在Kibana里搜索这笔日志:

日志收集成功。

整合ELK后,我们的系统架构图如下所示:

相关文章:

ELK日志收集

目前&#xff0c;各个微服务系统的日志都保存在各自指定的目录中&#xff0c;如果这些微服务部署在不同的服务器上&#xff0c;那么日志文件也是分散在各自的服务器上。分散的日志不利于我们快速通过日志定位问题&#xff0c;我们可以借助ELK来收集各个微服务系统的日志并集中展…...

常见docker命令

1、查询已安装docker中某个image依赖包 docker run -it --rm --name my-python-container 【python37:v001】 /bin/bash 【】改成自己环境名字 docker run -it --name lane python37_test:v006 /bin/bash lane是容器名字&#xff0c;python37_test:v006 是镜像名 开启容器 do…...

测试新人刚入行,该如何规划以后的发展路径?

作为一个刚入行的测试新人&#xff0c;应该如何规划自己的职业发展路径&#xff1f;如何规划自己的技术路线&#xff1f;软件测试的段位都有哪些&#xff1f;他们之间的薪资差异如何&#xff1f; 听说这些问题&#xff0c;是目前想要入行软件测试的同学们最关心的。那么我们今…...

Boosting Object Detection with Zero-Shot Day-Night Domain Adaptation

摘要&#xff1a;低亮度场景检测是一个小众且重要的方向&#xff0c;首先在于数据集和过往的研究都集中在光照充足的环境下&#xff0c;其次如果使用传统的训练方法的话由于训练难度大&#xff0c;模型效果也不会很好&#xff0c;有幸的是&#xff0c;现在关于低亮度的研究已经…...

Chromium html<lable>c++接口定义

HTML <label> 元素&#xff08;标签&#xff09;表示用户界面中某个元素的说明。 1、<label> 在html_tag_names.json5中接口定义&#xff1a; &#xff08;third_party\blink\renderer\core\html\html_tag_names.json5&#xff09; {name: "label",inte…...

QT中中文显示乱码问题

在VS2013中用QT开发GUI应用程序&#xff0c;Qt中显示中文乱码 一&#xff1a; //解决QT中中文显示乱码问题 #pragma execution_character_set("utf-8") 二&#xff1a;在main函数中添加以下代码&#xff1a; #include <QTextCodec>void main() {QTextCod…...

[面试常见]Javascript基础知识

#1024程序员节|征文# Object.assign 和对象扩展运算符有什么区别?是深拷贝还是浅拷贝? 都进行浅拷贝&#xff0c;只赋值对象的第一层属性&#xff0c;而不会递归复制整个对象结构 **const mergedObj Object.assign({},obj1,obj2) JavaScript 中 Map 和 Object 的区别是什么?…...

使用注解@ExcelIgnoreUnannotated实现了在导出 Excel 时忽略没有被标注的字段

ExcelIgnoreUnannotated 注解用于在使用 Apache POI 或其他 Excel 处理库时&#xff0c;指示在导出 Excel 时忽略没有被标注的字段。这意味着只有被特定注解&#xff08;如 ExcelProperty&#xff09;标注的字段会被处理和导出。 作用 简化导出过程&#xff1a;只导出需要的字…...

线程的同步

目录 引入 认识条件变量 快速认识接口​编辑 认识条件变量​编辑 测试代码​编辑 生产消费模型 为何要使用生产者消费者模型 理解 编写生产消费模型 BlockingQueue 单生产单消费 多生产多消费 引入 同步&#xff1a;在保证数据安全的前提下&#xff0c;让线程…...

【启明智显分享】ZX7981PG/ZX7981PM融入官方OpenWrt,启明智显SDK/官方OpenWrt任由选择!

好消息&#xff01;好消息&#xff01;启明智显ZX7981PG和ZX7981PM正式融入官方 OpenWrt 的大家庭啦&#xff01;现在开发者不仅可以基于启明智显的SDK进行二次开发&#xff0c;还可以直接应用官方OpenWrt以及我们的开源资料进行开发&#xff01; 借助OpenWrt的强大生态&…...

如何用java发送包含表格形式的邮件

问题&#xff1a; 如何用java发送包含表格形式的邮件&#xff1f; 方法&#xff1a; 发用freemaker工具来替换html的表格变量&#xff0c;从而动态生成了html。然后再发送这个html格式&#xff08;不能用纯文本&#xff09;文本即可。 优化流程&#xff1a; 1、准备模板&#x…...

讲个故事:关于一次接口性能优化的心里路程

这是一个程序猿写的第一个故事&#xff0c;请各位懂行的客官静下心来&#xff0c;慢慢品读。就知道我为什么要单独写一个文章来记录这次过程了&#xff0c;因为实在是太坎坷了...... 背景介绍 近期项目投产时遇到一个问题&#xff0c;投产后在验证时发现大部分用户系统登…...

Centos7升级到openssh9.9

openssh9.9 是2024.9.20出的最新版ssh。因为客户扫描出一大堆centos7的漏洞&#xff0c;全是这个openssh的&#xff0c;好多补丁&#xff0c;所以索性升级到最新版。 需要自己制作rpm包&#xff0c;这个我是不懂&#xff0c;照这个来&#xff1a; Linux服务器升级openssh9.9最…...

使用 STM32F407 串口实现 485 通信

准备工作 了解485通信基本概念与原理&#xff1a;RS485通信详解_485通讯de接什么口-CSDN博客 安装编译软件&#xff1a;keil uVision 5.6 软件资料&#xff1a;STM32CubeF4 固件包&#xff0c;正点原子RS485通信例程 ​​​​​​​参考视频&#xff1a;第26讲 基础篇-新建H…...

基于NERF技术重建学习笔记

NeRF&#xff08;Neural Radiance Fields&#xff09;是一种用于3D场景重建的神经网络模型&#xff0c;能够从2D图像生成逼真的3D渲染效果。它将场景表征为一个连续的5D函数&#xff0c;利用了体积渲染和神经网络的结合&#xff0c;通过学习光线穿过空间时的颜色和密度来重建场…...

webView 支持全屏播放

webView 支持全屏播放 直接上代码 public class CustomFullScreenWebViewClient extends WebChromeClient {WebView webView;Context context;/*** 视频全屏参数*/protected static final FrameLayout.LayoutParams COVER_SCREEN_PARAMS new FrameLayout.LayoutParams(ViewG…...

QGIS之三十二DEM地形导出三维模型gltf

效果 1、准备数据 (1)dem.tif (2)dom.tif 2、qgis加载dem和dom数据 3、安装插件 插件步骤可以参考这篇文章 QGIS之二十四安装插件 安装了Qgis2threejs插件,结果...

【python爬虫】携程旅行景点游客数据分析与可视化

一.选题背景 随着旅游业的快速发展&#xff0c;越来越多的人选择通过互联网平台预订旅行产品&#xff0c;其中携程网作为国内领先的在线旅行服务提供商&#xff0c;拥有大量的旅游产品和用户数据。利用爬虫技术可以获取携程网上各个景点的游客数据&#xff0c;包括游客数量、游…...

python实现onvif协议下控制摄像头变焦,以及融合人形识别与跟踪控制

#1024程序员节 | 征文# 这两天才因为项目需要&#xff0c;对网络摄像头的视频采集以及实现人形识别与跟踪技术。对于onvif协议自然起先也没有任何的了解。但是购买的摄像头是SONY网络头是用在其他地方的。因为前期支持探究项目解决方案&#xff0c;就直接拿来做demo测试使用。 …...

【Vue】Vue3.0(十四)接口,泛型和自定义类型的概念及使用

上篇文章&#xff1a; 【Vue】Vue3.0&#xff08;十三&#xff09;中标签属性ref&#xff08;加在普通标签上、加在组件标签上&#xff09;、局部样式 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&…...

【C++】红黑树万字详解(一文彻底搞懂红黑树的底层逻辑)

目录 00.引入 01.红黑树的性质 02.红黑树的定义 03.红黑树的插入 1.按照二叉搜索树的规则插入新节点 2.检测新节点插入后&#xff0c;是否满足红黑树的性质 1.uncle节点存在且为红色 2.uncle节点不存在 3.uncle节点存在且为黑色 04.验证红黑树 00.引入 和AVL树一样&am…...

开源FluentFTP实操,操控FTP文件

概述&#xff1a;通过FluentFTP库&#xff0c;轻松在.NET中实现FTP功能。支持判断、创建、删除文件夹&#xff0c;判断文件是否存在&#xff0c;实现上传、下载和删除文件。简便而强大的FTP操作&#xff0c;提升文件传输效率。 在.NET中&#xff0c;使用FluentFTP库可以方便地…...

论文解读 | ECCV2024 AutoEval-Video:一个用于评估大型视觉-语言模型在开放式视频问答中的自动基准测试...

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 点击 阅读原文 观看作者讲解回放&#xff01; 作者简介 陈修元&#xff0c;上海交通大学清源研究院硕士生 概述 总结来说&#xff0c;我们提出了一个新颖且具有挑战性的基准测试AutoEvalVideo&#xff0c;用于全…...

postgresql14主从同步流复制搭建

1. 如果使用docker搭建请移步 Docker 启动 PostgreSQL 主从架构&#xff1a;实现数据同步的高效部署指南_docker安装postgresql主从同步-CSDN博客 2. 背景 pgsql版本&#xff1a;PostgreSQL 14.13 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4…...

企业信息化管理中的数据集成方案:销售出库单对接

企业信息化管理中的数据集成方案&#xff1a;销售出库单对接 销售出库单旺店通→金蝶&#xff1a;高效数据集成案例分享 在企业信息化管理中&#xff0c;数据的高效流动和准确对接是实现业务流程自动化的关键。本文将聚焦于一个具体的系统对接集成案例&#xff1a;如何将旺店通…...

3.cpp基本数据类型

cpp基本数据类型 1.cpp基本数据类型 1.cpp基本数据类型 C基本数据类型和C语言的基本数据类型差不多 注意bool类型&#xff1a;存储真值 true 或假值 false&#xff0c;C语言编译器C99以上支持。 C语言的bool类型&#xff1a;要添加 #include <stdbool.h>头文件 #includ…...

MCK主机加固与防漏扫的深度解析

在当今这个信息化飞速发展的时代&#xff0c;网络安全成为了企业不可忽视的重要议题。漏洞扫描&#xff0c;简称漏扫&#xff0c;是一种旨在发现计算机系统、网络或应用程序中潜在安全漏洞的技术手段。通过自动化工具&#xff0c;漏扫能够识别出系统中存在的已知漏洞&#xff0…...

《软件估算之原始功能点:精准度量软件规模的关键》

《软件估算之原始功能点&#xff1a;精准度量软件规模的关键》 一、软件估算的重要性与方法概述二、原始功能点的构成要素&#xff08;一&#xff09;数据功能&#xff08;二&#xff09;事务功能 三、原始功能点的估算方法&#xff08;一&#xff09;功能点分类估算&#xff0…...

序列化与反序列化

序列化和反序列化是数据处理中的两个重要概念&#xff0c;它们在多种场景下都非常有用&#xff0c;尤其是在分布式系统、网络通信、持久化存储等方面。下面是对这两个概念的详细解释&#xff1a; 序列化&#xff08;Serialization&#xff09; 定义&#xff1a;序列化是将对象…...

安装nginx实现多ip访问多网站

[rootlocalhost ~]# systemctl stop firewalld 关防火墙 [rootlocalhost ~]# setenforce 0 关selinux [rootlocalhost ~]# mount /dev/sr0 /mnt 挂载点 [rootlocalhost ~]# dnf install nginx -y 安装nginx [rootlocalhost ~]# nmtui 当前主机添加多地址 [rootlocal…...

网站建设的目的及功能定位/网站软文代写

云端漫步 微软私有云技术征文大赛奖品...

西宁网站建设公司排名/查看今日头条

未到不惑年&#xff0c;还须惑十年 工作没了&#xff0c;钱没了&#xff0c;信念还在&#xff0c;少了些包袱。 路还得继续走&#xff0c;敢问路在何方&#xff0c;路在脚下&#xff0c;往前走就是了。 回望过去&#xff0c;收拾收拾&#xff0c;扔在记忆的角落吧。 谁不曾从一…...

京津冀协同发展意义/aso搜索排名优化

第1页&#xff1a;AHCI模式与Win7、SSD的不解之缘 AHCI这个注定和SATA接口结下不解之缘的接口模式&#xff0c;它担负着淘汰IDE模式的重任&#xff0c;从诞生开始就充满争议&#xff0c;它经历了整整7年时间。它伴随着SSD固态硬盘兴旺走向主流&#xff0c;同时也和微软WinXP、W…...

深圳专业做网站的公司/北京seo代理公司

什么&#xff1f;你还不会写JQuery 插件转载于:https://www.cnblogs.com/lbonet/p/7274968.html...

万户网络官网/搜索引擎优化seo培训

主库&#xff1a;192.168.0.11 备选主库&#xff1a;192.168.0.12 从库&#xff1a;192.168.0.13 监控机&#xff1a;192.168.0.10 首先在三台机器上安装mysql&#xff08;监控机的mysql先不装&#xff0c;以后再说&#xff09;。 我使用percona server&#xff08;一个mysql的…...

淘客网站推广怎么做/网络公关公司联系方式

1 /**2 * 3 * Title: getDoctorProfit 4 * Description: 获取当日的利润明细(已付款以后的状态,包含当日总计)5 * author: lijunwei6 * date 2018年8月25日 下午3:35:247 * param queryDate8 * param doctorid9 * return Map<Stri…...