ELK日志收集系统集群实验(5.5.0版)
目录
前言
一、概述
二、组件介绍
1、elasticsearch
2、logstash
3、kibana
三、架构类型
四、ELK日志收集集群实验
1、实验拓扑
2、在node1和node2节点安装elasticsearch
3、启动elasticsearch服务
4、在node1安装elasticsearch-head插件
5、测试输入
6、node1服务器安装logstash
7、logstash日志收集文件格式(默认存储在/etc/logstash/conf.d)
8、node1节点安装kibana
五、配置http节点
前言
ELK是指Elasticsearch、Logstash和Kibana的组合。它们是一套开源的日志收集、存储、搜索和可视化系统,常用于集中管理和分析日志数据。
1. Elasticsearch:一个分布式的实时搜索和分析引擎。它能够处理大规模的数据,并提供快速的搜索、聚合和数据分析功能。
2. Logstash:一个用于日志收集、处理和传输的工具。它支持从多种来源收集日志数据,可以进行数据清洗、转换和过滤,并将数据发送到Elasticsearch等目标存储。
3. Kibana:一个用于数据可视化和分析的工具。它可以通过图表、仪表盘和报表等方式,直观地展示Elasticsearch中的数据,帮助用户理解和分析日志。
ELK日志收集系统的工作流程如下:
1. Logstash配置:在Logstash中配置输入插件,指定日志数据的来源,如文件、网络或消息队列等。
2. 数据处理:通过Logstash的过滤插件对日志数据进行清洗、转换和过滤,使其符合需要,然后将处理后的数据发送到Elasticsearch。
3. 数据存储:Elasticsearch将接收到的日志数据进行索引并存储,以便快速搜索和分析。
4. 数据可视化:使用Kibana创建图表、仪表盘和报表等可视化组件,通过搜索和聚合数据,展示日志数据的统计信息和趋势。
5. 实时搜索和分析:通过Kibana提供的搜索功能,可以实时搜索和分析日志数据,帮助发现问题、监控系统和进行性能优化。
ELK日志收集系统的优点包括:
- 高效处理大规模日志数据:Elasticsearch作为存储和搜索引擎,能够处理大规模的日志数据。
- 灵活的数据处理和过滤:Logstash提供了丰富的插件和过滤器,可以对日志数据进行灵活的处理和转换。
- 直观的数据可视化:Kibana提供了图形化的界面,以直观的方式展示日志数据的统计信息和趋势。
- 实时搜索和分析:ELK系统支持实时搜索和分析,可以帮助快速定位和解决问题。
总之,ELK日志收集系统是一个功能强大的工具组合,可以帮助企业集中管理、存储、搜索和可视化大量的日志数据,提高系统的监控和故障排查能力。
一、概述
1、ELK由三个组件构成Elasticsearch、Logstash和Kibana的组合
| 日志收集 | Logstash |
| 日志分析 | Elasticsearch |
| 日志可视化 | Kibana |
2、 为什么使用?
日志对于分析系统、应用的状态十分重要,但一般日志的量会比较大,并且比较分散。
如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。但如果服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此,一些集中式的日志系统也就应用而生。目前比较有名成熟的有,Splunk(商业)、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、还有ELK等等。
二、组件介绍
1、elasticsearch
作用:日志分析、开源的日志收集、分析、存储程序
特点:
分布式
零配置
自动发现
索引自动分片
索引副本机制
Restful风格接口
多数据源
自动搜索负载
2、logstash
作用:日志收集 、搜集、分析、过滤日志的工具
工作的过程:
一般工作方式为c/s架构,Client端安装在需要收集日志的服务器上,Server端负责将收到的各节点日志进行过滤、修改等操作,再一并发往Elasticsearch上去
Inputs → Filters → Outputs
输入-->过滤-->输出
| File:从文件系统的文件中读取,类似于tail -f命令 |
| Syslog:在514端口上监听系统日志消息,并根据RFC3164标准进行解析 |
| Redis:从redis service中读取 |
| Beats:从filebeat中读取 |
| Grok:解析任意文本数据,Grok 是 Logstash 最重要的插件。它的主要作用就是将文本格式的字符串,转换成为具体的结构化的数据,配合正则表达式使用。 |
| 官方提供的grok表达式:logstash-patterns-core/patterns at main · logstash-plugins/logstash-patterns-core · GitHub |
| Grok在线调试:Grok Debugger |
| Mutate:对字段进行转换。例如对字段进行删除、替换、修改、重命名等。 |
| Drop:丢弃一部分Events不进行处理。 |
| Clone:拷贝Event,这个过程中也可以添加或移除字段。 |
| Geoip:添加地理信息(为前台kibana图形化展示使用) |
| Elasticsearch:可以高效的保存数据,并且能够方便和简单的进行查询。 |
| File:将Event数据保存到文件中。 |
| Graphite:将Event数据发送到图形化组件中,踏实一个当前较流行的开源存储图形化展示的组件。 |
3、kibana
作用:日志可视化
为Logstash和ElasticSearch在收集、存储的日志基础上进行分析时友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。
三、架构类型
1、ELK
es
logstash
kibana
2、ELKK
es
logstash
kafka
kibana
3、ELFK
es
logstash 重量级 、占用系统资源较多
filebeat 轻量级、占用系统资源较少
kibana
4、ELFKK
es
logstash
filebeat
kafka
kibana
四、ELK日志收集集群实验
1、实验拓扑
在进行本实验时至少每台主机给到2核4G。不然嘿嘿~~你懂得。
下载地址 https://elasticsearch.cn/download/

在node1和node2设置主机名
####分别修改主机名#####
###node1
hostnamectl set-hostname node1
echo "192.168.115.131 node1" "192.168.115.136 node2" >> /etc/hosts
scp /etc/hosts 192.168.115.136:/etc/hosts
bash
###node2
hostnamectl set-hostname node2
bash
######测试通联#######
###node1
ping node2
###node2
ping node1


2、在node1和node2节点安装elasticsearch
2.1、首先检查Java环境Java-version,如果没有就装一个yum install -y java-1.8.0-openjdk
2.2、安装elasticsearch
如下所示这是本次实验用到的安装包

##安装elasticsearch
rpm -ivh elasticsearch-5.5.0.rpm
##配置
vim /etc/elasticsearch/elasticsearch.yml
###进去解开注释
cluster.name:my-elk-cluster #集群名称
node.name:node1 #节点名字
path.data: /var/lib/elasticsearch #数据存放路径
path.logs:/var/log/elasticsearch/ #日志存放路径
bootstrap.memory_lock:false #在启动的时候不锁定内存
network.host:192.168.115.131 #提供服务绑定的IP地址,0.0.0.0代表所有地址
http.port:9200 #侦听端口为9200
discovery.zen.ping.unicast.hosts:["node1","node2"] #群集发现通过单播实现
###同理安装node2的elasticsearch
###把这份配置文件传输给node2,修改一下节点名字和IP就好了
scp /etc/elasticsearch/elasticsearch.yml 192.168.115.136:/etc/elasticsearch/elasticsearch.yml
3、启动elasticsearch服务
3.1、启动命令systemctl start elasticsearch.service
node1
node2
3.2、浏览器访问查看节点信息
192.168.115.131:9200
192.168.115.136
:9200
查看集群健康状态:192.168.115.131:9200/cluster/health
192.168.115.136:9200/cluster/health
Green 健康 yellow 警告 red 集群不可用,严重错误
4、在node1安装elasticsearch-head插件
####编译安装
cd elktar xf node-v8.2.1.tar.gzcd node-v8.2.1./configure && make && make install
###等待安装完毕。安装完毕后会生成命令:npm
###拷贝命令
cd elk
tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
##安装elasticsearch-head
cd elk
tar xf elasticsearch-head.tar.gz
cd elasticsearch-head
npm install
###修改elasticsearch配置文件node1、2都要改
vim /etc/elasticsearch/elasticsearch.yml# Require explicit names when deleting indices:
#
#action.destructive_requires_name:true
http.cors.enabled: true //开启跨域访问支持,默认为false
http.cors.allow-origin: "*" //跨域访问允许的域名地址
4.1、重启服务: systemctl restart elasticsearch两个节点都检查一下9200端口起来了吗

###启动elasticsearch-head
cd /root/elk/elasticsearch-head
npm run start &
##查看监听: netstat -anput | grep :9100

4.2、访问192.168.115.136:9100

5、测试输入
5.1、curl -XPUT '192.168.115.131:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"user":"hy","mesg":"hello"}

访问192.168.115.131:9100可以看到我们的测试数据 “hy hello”


6、node1服务器安装logstash
cd elk
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service
In -s /usr/share/logstash/bin/logstash /usr/local/bin/

测试1: 标准输入与输出logstash -e 'input{ stdin{} }output { stdout{} }'

测试2: 使用rubydebug解码logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug }}'
测试3:输出到elasticsearch
logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["192.168.115.131:9200"]} }'

OK,测试完了,我们去192.168.115.131:9100查看一下
elasticsearch已经在分析了,这就是测得内容而且多了一个索引了

7、logstash日志收集文件格式(默认存储在/etc/logstash/conf.d)
7.1、介绍
Logstash配置文件基本由三部分组成:input、output以及 filter(根据需要)。标准的配置文件格式如下:
input (...) 输入
filter {...} 过滤
output {...} 输出
在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:
input {
file{path =>"/var/log/messages" type =>"syslog"}
file { path =>"/var/log/apache/access.log" type =>"apache"}
}
7.2、配置
通过logstash收集系统信息日志
##因为要收集日志,root用户可以操作,其他用户是没权限的,所以加个读取的权限,否则是收集不到日志的
chmod o+r /var/log/messagesvim /etc/logstash/conf.d/system.conf
##system.conf是自定义的因为我搜集的是系统日志,若其他的应用的话可以取对应的名字来作为区分
##插入
input {
file{ ##类型:文件
path =>"/var/log/messages" ##系统日志文件路径
type => "system" ##类型自定义
start_position => "beginning"
}
}
output {
elasticsearch{
hosts =>["192.168.115.131:9200"] ##给谁处理
index => "system-%{+YYYY.MM.dd}" ##自定义索引
}
}
重启日志服务: systemctl restart logstash
浏览器查看 192.168.115.131:9100

8、node1节点安装kibana
8.1、安装配置
####安装kibana
cd elk
rpm -ivh kibana-5.5.1-x86_64.rpm
##配置kibana
vim /etc/kibana/kibana.yml
server.port:5601 #Kibana打开的端口
server.host:"0.0.0.0" #Kibana侦听的地址
elasticsearch.url: "http://192.168.115.131:9200" #和Elasticsearch 建立连接
kibana.index:".kibana" #在Elasticsearch中添加.kibana索引##启动kibana
systemctl start kibana
8.2、访问kibana
访问192.168.115.131:9100
访问192.168.115.131:5601 可以添加索引,可以添加上图中有的索引
这里我添加一个系统的索引

五、配置http节点
1、配置192.168.115.140的http服务
yum -y install httpd
systemctl start httpd
netstat -anput | grep 80
访问httpd
2.在此节点上配置我们的logstash来收集我们的http服务器的访问日志
http访问日志的路径/var/log/httpd/access_log
##安装logstash
rpm -ivh logstash-5.5.1.rpm
3、修改配置文件
vim /etc/logstash/conf.d/httpd.conf
###插入
input {
file{ ##类型:文件
path =>"/var/log/httpd/access_log" ##系统日志文件路径
type => "access" ##类型自定义
start_position => "beginning"
}
}
output {
elasticsearch{
hosts =>["192.168.115.131:9200"] ##给谁处理
index => "httpd-%{+YYYY.MM.dd}" ##自定义索引
}
}
启动日志收集systemctl start logstash.service
使用logstash命令导入配置:
创建软连接In -s /usr/share/logstash/bin/logstash /usr/local/bin/
导入logstash -f /etc/logstash/conf.d/httpd.conf
4、访问192.168.115.131:9200

kibana 192.168.115.131:5601
查看httpd的访问日志情况

OK,至此实验结束
相关文章:
ELK日志收集系统集群实验(5.5.0版)
目录 前言 一、概述 二、组件介绍 1、elasticsearch 2、logstash 3、kibana 三、架构类型 四、ELK日志收集集群实验 1、实验拓扑 2、在node1和node2节点安装elasticsearch 3、启动elasticsearch服务 4、在node1安装elasticsearch-head插件 5、测试输入 6、node1服…...
基于java swing和mysql实现的电影票购票管理系统(源码+数据库+运行指导视频)
一、项目简介 本项目是一套基于java swing和mysql实现的电影票购票管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都…...
数据结构--6.0最短路径
目录 一、迪杰斯特拉算法(Dijkstra) 二、弗洛伊德算法(Floyd) 在网图和非网图中,最短路径的含义是不同的。 ——网图是两顶点经过的边上的权值之和最少的路径。 …...
Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】
Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】 一、Docker常规软件安装1.1 docker 安装 tomcat(默认最新版)1.2 docker 指定安装 tomcat8.01.3 docker 安装 mysql 5.7(数据卷配置)1.4 演示--删除mysql容器…...
遗传算法决策变量降维的matlab实现
1.案例背景 1.1遗传算法概述 遗传算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。它最初由美国Michigan大学的J. Holland教授提出,1967年, Holland 教授的学生 Bagley在其博士论文中首次提出了“遗传…...
基于Open3D和PyTorch3D读取三维数据格式OBJ
本节将讨论另一种广泛使用的3D数据文件格式,即OBJ文件格式。OBJ文件格式最初由Wavefront Technologies Inc.开发。与PLY文件格式类似,OBJ格式也有ASCII版本和二进制版本。二进制版本是专有的且未记录文档。本章主要讨论ASCII版本。 与之前类似,将通过示例来学习文件格式。第…...
带纽扣电池产品出口澳洲安全标准,纽扣电池IEC 60086认证
澳大利亚政府公布了《消费品(纽扣/硬币电池)安全标准》和《消费品(纽扣/硬币电池)信息标准》。届时出口纽扣/硬币电池以及含有纽扣/硬币电池产品到澳大利亚的供应商,必须遵守这些标准中的要求。 一、 安全标准及信息标…...
spring高级源码50讲-37-42(springBoot)
Boot 37) Boot 骨架项目 如果是 linux 环境,用以下命令即可获取 spring boot 的骨架 pom.xml curl -G https://start.spring.io/pom.xml -d dependenciesweb,mysql,mybatis -o pom.xml也可以使用 Postman 等工具实现 若想获取更多用法,请参考 curl …...
腾讯云、阿里云、华为云便宜云服务器活动整理汇总
云服务器的选择是一个很重要的事情,避免产生不必要的麻烦,建议选择互联网大厂提供的云计算服务,腾讯云、阿里云、华为云就是一个很不错的选择,云服务器稳定性、安全性以及售后各方面都更受用户认可,下面小编给大家整理…...
L1-055 谁是赢家(Python实现) 测试点全过
前言: {\color{Blue}前言:} 前言: 本系列题使用的是,“PTA中的团体程序设计天梯赛——练习集”的题库,难度有L1、L2、L3三个等级,分别对应团体程序设计天梯赛的三个难度。更新取决于题目的难度,…...
开发一个npm包
1 注册一个npm账号 npm https://www.npmjs.com/ 2 初始化一个npm 项目 npm init -y3编写一段代码 function fn(){return 12 }exports.hellofn;4发布到全局node_module npm install . -g5测试代码 创建一个text文件 npm link heath_apisnode index.js6登录(我默认的 https…...
介绍几种使用工具
FileWatch,观测文件变化,源码地址:https://github.com/ThomasMonkman/filewatch nlohmann::json,json封装解析,源码地址:https://github.com/nlohmann/json optionparser,解析选项,源…...
Vue:关于声明式导航中的 跳转、高亮、以及两个类名的定制
声明式导航-导航链接 文章目录 声明式导航-导航链接router-link的两大特点(能跳转、能高亮)声明式导航-两个类名定制两个高亮类名 实现导航高亮,实现方式其实,css,JavaScript , Vue ,都可以实现。其实关于路由导航&…...
Sharding-JDBC分库分表-自动配置与分片规则加载原理-3
Sharding JDBC自动配置的原理 与所有starter一样,shardingsphere-jdbc-core-spring-boot-starter也是通过SPI自动配置的原理实现分库分表配置加载,spring.factories文件中的自动配置类shardingsphere-jdbc-core-spring-boot-starter功不可没,…...
E8267D 是德科技矢量信号发生器
描述 最先进的微波信号发生器 安捷伦E8267D PSG矢量信号发生器是业界首款集成式微波矢量信号发生器,I/Q调制最高可达44 GHz,典型输出功率为23 dBm,最高可达20 GHz,对于10 GHz信号,10 kHz偏移时的相位噪声为-120 dBc/…...
Git git fetch 和 git pull 区别
git pull和git fetch的作用都是用于从远程仓库获取最新代码,但它们之间有一些区别。 git pull会自动执行两个操作:git fetch和git merge。它从远程仓库获取最新代码,并将其合并到当前分支中。 示例:运行git pull origin master会从…...
软件UI工程师工作的岗位职责(合集)
软件UI工程师工作的岗位职责1 职责: 1.负责产品的UI视觉设计(手机软件界面 网站界面 图标设计产品广告及 企业文化的创意设计等); 2.负责公司各种客户端软件客户端的UE/UI界面及相关图标制作; 3.设定产品界面的整体视觉风格; 4.参与产品规划构思和创意过程&…...
Mac系统Anaconda环境配置Python的json库
本文介绍在Mac电脑的Anaconda环境中,配置Python语言中,用以编码、解码、处理JSON数据的json库的方法;在Windows电脑中配置json库的方法也是类似的,大家可以一并参考。 JSON(JavaScript Object Notation)是一…...
Python数据分析与数据挖掘:解析数据的力量
引言: 随着大数据时代的到来,数据分析和数据挖掘已经成为许多行业中不可或缺的一部分。在这个信息爆炸的时代,如何从大量的数据中提取有价值的信息,成为了企业和个人追求的目标。而Python作为一种强大的编程语言,提供…...
我的私人笔记(安装hive)
1.hive下载:Index of /dist/hive/hive-1.2.1 或者上传安装包至/opt/software:rz或winscp上传 2.解压 cd /opt/software tar -xzvf apache-hive-1.2.1-bin.tar.gz -C /opt/servers/ 3.重命名 mv apache-hive-1.2.1-bin hive 4.配置环境变量 vi /etc/…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
