每日一学——日志管理工具(ELK Stack)
5.1 ELK Stack
5.1.1 Elasticsearch索引机制
嘿,小伙伴们!今天我们要聊聊ELK Stack——一套由Elasticsearch、Logstash和Kibana组成的强大日志管理工具集。通过这套工具,我们可以轻松地收集、存储、搜索和可视化日志数据。首先,让我们来了解Elasticsearch的索引机制。
Elasticsearch索引机制:
Elasticsearch 是一个分布式的搜索引擎和存储系统,它使用倒排索引来加速全文搜索。在Elasticsearch中,数据是以文档的形式存储在索引中的。
索引机制的关键概念:
-
1. 索引(Index):类似于数据库中的表,用于存储一类数据。
-
2. 文档(Document):一条记录或一条日志消息,是JSON格式的数据。
-
3. 映射(Mapping):定义了索引中文档的字段类型和结构。
-
4. 分片(Shard):索引的逻辑分片,用于水平扩展存储能力。
-
5. 副本(Replica):索引的备份,用于提高数据的可用性和容错性。
创建索引:
在Elasticsearch中创建索引时,可以指定索引的设置和映射。
PUT myindex
{
"settings":{
"number_of_shards":3,
"number_of_replicas":1
},
"mappings":{
"properties":{
"@timestamp":{"type":"date"},
"message":{"type":"text"},
"source":{"type":"keyword"}
}
}
}
在这个例子中,我们创建了一个名为myindex的索引,设置了3个分片和1个副本,并定义了三个字段:@timestamp、message 和 source。
5.1.2 Logstash过滤器配置
Logstash 是一个数据处理管道,用于接收、转换和发送数据到Elasticsearch。通过配置过滤器(filters),我们可以对日志数据进行清洗和格式化。
过滤器配置:
Logstash过滤器可以对输入的日志数据进行各种处理,如分割字段、添加标签、去除噪声等。下面是一些常用的过滤器:
-
1. grok:用于解析非结构化的日志数据,并提取出有意义的字段。
-
2. mutate:用于修改字段,如删除、重命名等。
-
3. date:用于解析日期时间字段,并转换成Elasticsearch支持的时间格式。
-
4. split:用于根据正则表达式分割日志数据。
配置示例:
input {beats { port =>5044}
}filter {grok {match =>{"message"=>"%{COMBINEDAPACHELOG}"}
}date {match =>["timestamp","ISO8601"]
}mutate {add_field =>{"[@metadata][event_type]"=>"weblog"}
}
}output {elasticsearch { hosts =>["localhost:9200"]}
}
在这个例子中,我们配置了Logstash来接收来自Beats的数据,并使用grok过滤器来解析日志格式,使用date过滤器来解析时间戳,最后使用mutate过滤器来添加事件类型字段。
5.1.3 Kibana仪表盘设计
Kibana 是一个用于可视化Elasticsearch数据的Web界面。通过Kibana,我们可以轻松地创建仪表盘来展示日志数据的趋势和统计信息。
仪表盘设计步骤:
-
1. 创建索引模式:在Kibana中,首先需要创建一个索引模式来指定要可视化的数据源。
-
• 在Kibana中选择“Management” -> “Index Patterns”,点击“Create index pattern”。
-
• 输入索引名称前缀(如
logstash-*)。
-
-
2. 创建仪表盘:在Kibana中,可以创建一个新的仪表盘来展示数据。
-
• 选择“Discover”来探索数据。
-
• 选择“Visualize”来创建图表。
-
• 选择“Dashboard”来组合多个图表。
-
创建图表示例:
假设我们想要创建一个图表来展示过去一周内不同来源的日志数量。
-
1. 创建数据视图:在“Discover”中,筛选出过去一周的日志数据。
-
2. 创建柱状图:在“Visualize”中,选择“柱状图”,并配置数据来源和字段。
-
3. 添加到仪表盘:在“Dashboard”中,将创建的图表拖拽到仪表盘中。
5.1.4 实战案例:日志数据收集与分析
现在,让我们通过一个实际的例子来看看如何使用ELK Stack来收集和分析日志数据。假设我们需要收集并分析来自多台服务器的日志。
步骤1:安装Elasticsearch、Logstash和Kibana
-
1. 下载并安装Elasticsearch对于Linux系统,可以使用包管理器安装:
sudo apt-get update
sudo apt-get install elasticsearch -
2. 下载并安装Logstash
sudo apt-get install logstash -
3. 下载并安装Kibana
sudo apt-get install kibana -
4. 启动服务使用命令启动Elasticsearch、Logstash和Kibana:
sudo systemctl start elasticsearch
sudo systemctl start logstash
sudo systemctl start kibana
步骤2:配置Logstash
-
1. 创建Logstash配置文件在
/etc/logstash/conf.d目录下创建一个名为01-log-input.conf的文件:input {
beats {
port =>5044
}
}
filter {
grok {
match =>{"message"=>"%{COMBINEDAPACHELOG}"}
}
date {
match =>["timestamp","ISO8601"]
}
mutate {
add_field =>{"[@metadata][event_type]"=>"weblog"}
}
}
output {
elasticsearch {
hosts =>["localhost:9200"]
index =>"logstash-%{+YYYY.MM.dd}"
}
} -
2. 重新加载Logstash配置
sudo systemctl reload logstash
步骤3:安装Beats
-
1. 下载并安装Filebeat对于Linux系统,可以使用包管理器安装:
sudo apt-get install filebeat -
2. 配置Filebeat在
/etc/filebeat/filebeat.yml中配置Filebeat:filebeat.inputs:
-type:log
enabled:true
paths:
-/var/log/nginx/access.log
-/var/log/nginx/error.log
output.logstash:
hosts:["localhost:5044"] -
3. 启动Filebeat
sudo systemctl start filebeat
步骤4:配置Kibana
-
1. 创建索引模式在Kibana中,选择“Management” -> “Index Patterns”,点击“Create index pattern”,输入索引名称前缀(如
logstash-*)。 -
2. 创建仪表盘在Kibana中,选择“Dashboard” -> “Create Dashboard”,并添加需要的图表。
通过以上步骤,我们就成功地使用ELK Stack收集并分析了日志数据。ELK Stack的强大之处在于它可以处理海量的日志数据,并提供丰富的可视化工具来帮助我们理解数据背后的故事。希望这个例子能帮助你更好地理解和使用ELK Stack!
好了,现在你已经掌握了使用ELK Stack进行日志管理的基本技能,赶紧动手试试吧!加油,运维小伙伴们!
相关文章:
每日一学——日志管理工具(ELK Stack)
5.1 ELK Stack 5.1.1 Elasticsearch索引机制 嘿,小伙伴们!今天我们要聊聊ELK Stack——一套由Elasticsearch、Logstash和Kibana组成的强大日志管理工具集。通过这套工具,我们可以轻松地收集、存储、搜索和可视化日志数据。首先,…...
“智能筛查新助手:AI智能筛查分析软件系统如何改变我们的生活
嘿,朋友们!今天咱们来聊聊一个特别厉害的工具——AI智能筛查分析软件系统。想象一下,如果你有一个超级聪明的小助手,不仅能帮你快速找出问题的关键所在,还能提供精准的解决方案,是不是感觉工作和生活都变得…...
DeepSeek v3为何爆火?如何用其集成Milvus搭建RAG?
最近,DeepSeek v3(一个MoE模型,拥有671B参数,其中37B参数被激活)模型全球爆火。 作为一款能与Claude 3.5 Sonnet,GPT-4o等模型匹敌的开源模型DeepSeek v3不仅将其算法开源,还放出一份扎实的技术…...
linux-centos-安装miniconda3
参考: 最新保姆级Linux下安装与使用conda:从下载配置到使用全流程_linux conda-CSDN博客 https://blog.csdn.net/qq_51566832/article/details/144113661 Linux上删除Anaconda或Miniconda的步骤_linux 删除anaconda-CSDN博客 https://blog.csdn.net/m0_…...
html+css+js网页设计 美食 好厨艺西餐美食企业网站模板6个页面
htmlcssjs网页设计 美食 好厨艺西餐美食企业网站模板6个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 …...
QT-窗口嵌入外部exe
窗口类: #pragma once #include <QApplication> #include <QWidget> #include <QVBoxLayout> #include <QProcess> #include <QTimer> #include <QDebug> #include <Windows.h> #include <QWindow> #include <…...
C#中使用系统默认应用程序打开文件
有时您可能希望程序使用默认应用程序打开文件。 例如,您可能希望显示 PDF 文件、网页或互联网上的 URL。 System.Diagnostics.Process类的Start方法启动系统与文件关联的应用程序。 例如,如果文件扩展名为.txt,则系统会在 NotePad、WordPa…...
如何在 Ubuntu 22.04 上配置 Logrotate 高级教程
简介 本教程将教你如何在 Ubuntu 22.04 上进行 Logrotate 的高级配置。 日志管理对于维护系统性能和确保你的日志不会占用太多磁盘空间至关重要。在 Ubuntu 上,logrotate 是一个强大的工具,它可以通过轮转、压缩和删除旧日志来自动管理日志文件。在本教…...
java项目之校园管理系统的设计与实现(源码+文档)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园管理系统的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: springboot校园…...
关于 webservice 日志中 源IP是node IP的问题,是否能解决换成 真实的客户端IP呢
本篇目录 1. 问题背景2. 部署gitlab 17.52.1 添加repo源2.2 添加repo源 下载17.5.0的charts包2.3 修改values文件2.3.1 hosts修改如下2.3.2 appConfig修改如下2.3.3 gitlab下的sidekiq配置2.3.4 certmanager修改如下2.3.5 nginx-ingress修改如下2.3.6 <可选> prometheus修…...
Serializable接口
最近写项目的时候,发现有一些类要实现Serializable接口,一开始只是粗略的知道实现了Serializable接口,这个类的对象可以被序列化,但我比较轴,想知道这个接口到底有什么作用。 我点开这个接口发现什么方法都没有实现&am…...
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈 问题背景 由于我司最早期19年使用的是gitee,因此大部分仓库都在gitee有几百个库的代码,…...
【HDU】1089 A+B for Input-Output Practice (I)
1089 AB for Input-Output Practice (I):以EOF结尾的输入 Problem Description Your task is to Calculate a b. Too easy?! Of course! I specially designed the problem for acm beginners. You must have found that some problems have the same titles with this one,…...
lua库介绍:数据处理与操作工具库 - leo
leo库简介 leo 模块的创作初衷旨在简化数据处理的复杂流程,提高代码的可读性和执行效率,希望leo 模块都能为你提供一系列便捷的工具函数,涵盖因子编码、多维数组创建、数据框构建、列表管理以及管道操作等功能。 要使用 Leo 模块,…...
逆向入门(1)C篇-正儿巴经的第1个实验
接触了这么久,第一次不是使用CV大法编写程序,认认真真的重头开始学习,记录一下找调试的感觉。 第一段代码,重温原码,反码和补码。 #include "stdafx.h"int main(int argc, char* argv[]) {char x -7;print…...
vue数据请求通用方案:axios的options都有哪些值
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 Node.js 中。 在使用 Axios 发送请求时,可以通过传递一个配置对象来指定请求的各种选项。 以下是一些常用的 Axios 配置选项及其说明: 1.url: (必需)请求的 …...
使用R语言绘制标准的中国地图和世界地图
在日常的学习和生活中,有时我们常常需要制作带有国界线的地图。这个时候绘制标准的国家地图就显得很重要。目前国家标准地图服务系统向全社会公布的标准中国地图数据,是最权威的地图数据。 今天介绍的R包“ggmapcn”,就是基于最新公布的地图…...
【PyTorch】迁移学习、数据增强
PyTorch官网 介绍 PyTorch 是一个开源的机器学习库,由 Facebook 的人工智能研究实验室开发。它提供了两种主要的功能:张量计算(类似于 NumPy,但具有 GPU 加速)和基于动态计算图的深度学习工具。PyTorch 因其灵活性、…...
Lucas-Kanade光流法详解
简介:个人学习分享,如有错误,欢迎批评指正。 光流(Optical Flow)描述的是图像序列中各像素点随时间的运动情况,是计算机视觉中的基本问题之一。光流问题涉及尝试找出一幅图像中的许多点在第二幅图像中移动的…...
python多张图片生成/合成gif
你可以通过调整帧率来提高GIF的流畅度。默认情况下,代码中的帧率为每秒1帧(fps=1)。我们可以增加这个值来加快动画速度。 下面是修改后的代码,将帧率从每秒1帧提高到每秒5帧(你可以根据需要进一步调整): 在这个版本中,我添加了一个可选参数fps,默认值为5帧每秒。你可…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
