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
输入-->过滤-->输出

inputs(输入)
File:从文件系统的文件中读取,类似于tail -f命令
Syslog:在514端口上监听系统日志消息,并根据RFC3164标准进行解析
Redis:从redis service中读取
Beats:从filebeat中读取
FILETER(过滤)
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图形化展示使用)
OUTPUTS(输出)
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,至此实验结束

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis实战-实现优惠券秒杀解决超卖问题

全局唯一ID 唯一ID的必要性 每个店铺都可以发布优惠券: 当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些问题: id的规律性太明显,容易被用户根据id的间隔来猜测…

JavaScript关于函数的小挑战

题目 回到两个体操队,即海豚队和考拉队! 有一个新的体操项目,它的工作方式不同。 每队比赛3次,然后计算3次得分的平均值(所以每队有一个平均分)。 只有当一个团队的平均分至少是另一个团队的两倍时才会获胜。否则&…

排盘程序算法探寻举例(陆先生八字)

算法实现: 1.庚生未月,燥土不能生金,日支申金为日主墙根,月干辛金比劫透出傍身,月干强。年干甲木自做寅木强根,又得月支乙木中气,甲木强旺有力,时干丙火七杀得未土余气,…

Spring 中存取 Bean 的相关注解

目录 一、五大类注解 1、五大类注解存储Bean对象 1.1Controller(控制器储存) 1.2Service(服务存储) 1.3Repository(仓库存储) 1.4Component(组件存储) 1.5Configuration(配置存储) 2、五大类注解小结 2.1为什么要这么多类注解 2.2 五大类注解之间的关系 二、方法注解 1.方法注…

linux编程第一部分总结

C多线程安全原则 对象析构很复杂&#xff0c;我们采用shared_ptr和weak_ptr来做 enable_shared_from_this<>是用来做回调的&#xff0c;因为多线程中可能对象的生命周期比传出去的this指针短&#xff0c;同时为了不延长对象的生命周期&#xff0c;我们把shared_ptr转成we…

c++ vs2019 cpp20规范的STL库的map与multimap源码分析

map就是一个红黑树。 标准平衡二叉树&#xff0c;要求左右子树的高度差不超过1 。红黑树只要求左右子树的高度差不超过一倍即可。兼顾了树平衡与效率。避免了AVL树的频繁调整树平衡。 b站 的“可雷曼土”大师&#xff0c;讲红黑树的理论讲的很透彻&#xff0c;再结合看代码&…

Linux-安装redis6.2.1及主备复制模式(replication)

Linux-安装redis6.2.1 下载redis6.2.1资源上传至安装目录解压及编译解压修改名称编译 修改配置文件主节点从节点 启动及测试启动主节点从节点 测试 下载redis6.2.1资源 地址》https://redis.io/download/ 上传至安装目录 例&#xff1a;/data/replication/ 解压及编译 解…

二进制安全虚拟机Protostar靶场 安装,基础知识讲解,破解STACK ZERO

简介 pwn是ctf比赛的方向之一&#xff0c;也是门槛最高的&#xff0c;学pwn前需要很多知识&#xff0c;这里建议先去在某宝上买一本汇编语言第四版&#xff0c;看完之后学一下python和c语言&#xff0c;python推荐看油管FreeCodeCamp的教程&#xff0c;c语言也是 pwn题目大部…

Jupyter lab 配置

切换jupyterlab的默认工作目录 在终端中输入以下命令 PS C:\Users\Administrator> jupyter-lab --generate-config Writing default config to: C:\Users\Administrator\.jupyter\jupyter_lab_config.py它就会生成JupyterLab的配置文件&#xff08;如果之前有这个文件的话…

(笔记五)利用opencv进行图像几何转换

参考网站&#xff1a;https://docs.opencv.org/4.1.1/da/d6e/tutorial_py_geometric_transformations.html &#xff08;1&#xff09;读取原始图像和标记图像 import cv2 as cv import numpy as np from matplotlib import pyplot as pltpath r"D:\data\flower.jpg&qu…

【数据结构】 二叉树面试题讲解->叁

文章目录 &#x1f30f;引言&#x1f332;[根据二叉树创建字符串](https://leetcode.cn/problems/construct-string-from-binary-tree/submissions/)&#x1f431;‍&#x1f464;题目描述&#xff1a;&#x1f431;‍&#x1f409;示例&#xff1a;&#x1f4cc;示例一&#x…

Flutter小功能实现-咖啡店

1 导航栏实现 效果图&#xff1a; 1.Package google_nav_bar: ^5.0.6 使用文档&#xff1a; google_nav_bar | Flutter Package 2.Code //MyBottomNavBar class MyBottomNavBar extends StatelessWidget {void Function(int)? onTabChange;MyBottomNavBar({super.key, …

iOS swift5 扫描二维码

文章目录 1.生成二维码图片2.扫描二维码&#xff08;含上下扫描动画&#xff09;2.1 记得在info.plist中添加相机权限描述 1.生成二维码图片 import UIKit import CoreImagefunc generateQRCode(from string: String) -> UIImage? {let data string.data(using: String.En…

若依 vue中el-radio无法默认选中

网上看了很多方法都不管用, 即便是element官方示例方法也不行 解决方法: html <el-form-item label"是否公开" prop"isOpen"><el-radio-group v-model"form.isOpen"><el-radio :label"0">不公开</el-radio>…

跳出Lambda表达式forEach()循环解决思路

背景 在一次需求开发时&#xff0c;发现使用Lambda的forEach()跳不出循环。如下示例代码&#xff0c;想在遍历满足条件时跳出循环。 public static void main(String[] args) {List<Integer> list Arrays.asList(1, 4, 5, 7, 9, 11);list.forEach(e -> {if (e % 2 …

Leetcode Top 100 Liked Questions(序号236~347)

236. Lowest Common Ancestor of a Binary Tree 题意&#xff1a;二叉树&#xff0c;求最近公共祖先&#xff0c;All Node.val are unique. 我的思路 首先把每个节点的深度得到&#xff0c;之后不停向上&#xff0c;直到val相同&#xff0c;存深度就用map存吧 但是它没有向…

1分钟实现 CLIP + Annoy + Gradio 文搜图+图搜图 系统

多模态图文搜索系统 CLIP 进行 Text 和 Image 的语义EmbeddingAnnoy 向量数据库实现树状结构索引来加速最近邻搜索Gradio 轻量级的机器学习 Web 前端搭建 文搜图 图搜图 CLIP图像语义提取功能&#xff01;

ip route get ip地址 应用案例

应用场景 在做虚拟化实验用的虚拟机和实际的ECS云主机一般都会有多个网卡&#xff0c;网络的联通性是经常碰到的问题。比如在一个VM上有3个网卡&#xff0c;分别为ens160(和寄主机进行桥接的网卡10.0.0.128)、ens224&#xff08;连接仅主机网络10.0.0.0/24的网卡10.0.0.128&…

react17:生命周期函数

挂载时更新时 setState触发更新、父组件重新渲染时触发更新forceUpdate触发更新卸载时 react&#xff08;v17.0.2&#xff09;的生命周期图谱如下。 相较于16版本&#xff0c;17版本生命周期函数有如下变化&#xff1a; componentWillMount() componentWillUpdate() compone…

【C++】学习STL中的stack和queue

❤️前言 今天这篇博客的内容主要关于STL中的stack、queue和priority_queue三种容器。 正文 stack和queue的使用方式非常简单&#xff0c;我们只要根据之前学习数据结构的经验和文档介绍就可以轻松上手。于是我们直接开始对它们的模拟实现。 stack和queue的模拟实现 stack和q…