小白带你学习linux的ELK日志收集系统

简介: 小白带你学习linux的ELK日志收集系统



目录

ELK日志收集系统是一种集中式日志管理系统,由Elasticsearch(搜索和分析引擎)、Logstash(数据收集、过滤、转换工具)和Kibana(可视化和分析工具)组成。ELK系统可以帮助用户收集、存储、搜索、分析和可视化大量的日志数据。

ELK日志收集系统的工作流程如下:

  1. Logstash从各种来源(如文件、网络、数据库)收集日志数据。
  2. Logstash将收集到的数据进行过滤和转换,然后将其发送给Elasticsearch进行存储和索引。
  3. Elasticsearch对接收到的日志数据建立索引,以便快速搜索和分析。
  4. Kibana作为可视化和分析工具,可以通过Web界面连接到Elasticsearch,提供丰富的搜索、过滤、分析和可视化功能。

ELK日志收集系统的优点包括:

  1. 高可扩展性:ELK系统可以处理TB级别的日志数据,并能够水平扩展以应对日志数据量的增长。
  2. 实时性:ELK系统能够实时收集、存储和分析日志数据,使用户可以及时监控系统运行状态和处理潜在问题。
  3. 多样化的数据源支持:Logstash支持从各种来源收集数据,包括文件、网络、数据库等。
  4. 强大的搜索和分析功能:Elasticsearch提供了全文搜索、聚合分析、实时监控等功能,帮助用户快速定位和解决问题。
  5. 可视化界面:Kibana提供了直观易用的可视化界面,用户可以通过简单的拖拽操作创建仪表盘、图表和报告。

总的来说,ELK日志收集系统是一种功能强大的日志管理工具,可以帮助用户实时收集、存储、搜索、分析和可视化大量的日志数据,提高系统监控和故障排查的效率。

一、概述

1、ELK由三个组件构成

2、作用

日志收集

日志分析

日志可视化

3、为什么使用?

日志对于分析系统、应用的状态十分重要,但一般日志的量会比较大,并且比较分散。

如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。但如果服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此,一些集中式的日志系统也就应用而生。目前比较有名成熟的有,Splunk(商业)、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、还有ELK等等。

二、组件

1、elasticsearch

日志分析

开源的日志收集、分析、存储程序

特点

分布式

零配置

自动发现

索引自动分片

索引副本机制

Restful风格接口

多数据源

 自动搜索负载

2、logstash

日志收集

搜集、分析、过滤日志的工具

工作过程

一般工作方式为c/s架构,Client端安装在需要收集日志的服务器上,Server端负责将收到的节点日志进行过滤、修改等操作,再一并发往Elasticsearch上去

Inputs → Filters → Outputs

输入-->过滤-->输出

INPUT

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、实验拓扑

机子必须是4核4g

2、环境配置

设置各个主机的IP地址为拓扑中的静态IP,在两个节点中修改主机名为node1和node2并设置hosts文件

node1:

hostnamectl set-hostname node1

vim /etc/hosts

192.168.1.1  node1

192.168.1.2  node2

node2:

hostnamectl set-hostname node2

vim /etc/hosts

192.168.1.1  node1

192.168.1.2  node2

3、 安装node1与node2节点的elasticsearch

3.1.安装

mv elk软件包  elk

cd elk

rpm -ivh elasticsearch-5.5.0.rpm

3.2配置

node1:

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:0.0.0.0  //提供服务绑定的IP地址,0.0.0.0代表所有地址

http.port:9200 //侦听端口为9200

discovery.zen.ping.unicast.hosts:【"node1","node2"】 //群集发现通过单播实现

systemctl daemon-reload
systemctl restart elasticsearch.service

node2:

vim /etc/elasticsearch/elasticsearch.yml

cluster.name:my-elk-cluster  //集群名称  

node.name:node2 //节点名字

path.data:/var/lib/elasticsearch  //数据存放路径

path.logs: /var/log/elasticsearch/  //日志存放路径

bootstrap.memory_lock:false //在启动的时候不锁定内存

network.host:0.0.0.0  //提供服务绑定的IP地址,0.0.0.0代表所有地址

http.port:9200 //侦听端口为9200

discovery.zen.ping.unicast.hosts:【"node1","node2"】 //群集发现通过单播实现

4、启动elasticsearch服务

node1和node2

systemctl start elasticsearch
4.1查看节点信息

http://192.168.28.3:9200

http://192.168.28.4:9200

5、在node1安装elasticsearch-head插件

5.1安装node
cd elk
tar xf node-v8.2.1.tar.gz
cd node-v8.2.1
./configure && make -j4 && make install

等待安装完毕。

5.2拷贝命令
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

5.3安装elasticsearch-head
cd elk
tar xf elasticsearch-head.tar.gz
cd elasticsearch-head
npm install

5.4修改elasticsearch配置文件
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:"*"  //跨域访问允许的域名地址

重启服务: systemctl restart elasticsearch

systemctl restart elasticsearch

5.5启动elasticsearch-head
cd /root/elk/elasticsearch-head
npm run start &

查看监听: netstat -anput | grep :9100

访问:

5.6测试

在node1的终端中输入:

curl  -XPUT  '192.168.28.3:9200/index-demo/test/1?pretty&pretty' -H  'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

刷新浏览器可以看到对应信息即可

6、node1服务器安装logstash

cd  elk
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service
ln -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.28.3:9200"]} }'

查看结果:

http://192.168.28.3:9100

若看不到,请刷新!!!

7、logstash日志收集文件格式(默认存储在/etc/logstash/conf.d)

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.1案例:通过logstash收集系统信息日志
chmod o+r /var/log/messages
vim /etc/logstash/conf.d/system.conf

input {
file{
path =>"/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch{
hosts =>["192.168.28.3:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}

 

重启日志服务: systemctl restart logstash

systemctl restart logstash

查看日志: http://192.168.28.3:9100

8、node1节点安装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.8.134:9200"  

//和Elasticsearch 建立连接

kibana.index:".kibana"  //在Elasticsearch中添加.kibana索引

启动kibana

systemctl start kibana

访问一下端口192.168.28.3:9100

访问kibana :

http://192.168.28.3:5601

首次访问需要添加索引,我们添加前面已经添加过的索引:system-*

9、企业案例:

收集httpd访问日志信息

在httpd服务器上安装logstash,参数上述安装过程,可以不进行测试

logstash在httpd服务器上作为agent(代理),不需要启动

编写httpd日志收集配置文件

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.28.3:9200"]

index => "httpd_access-%{+YYYY.MM.dd}"

}

}

 

使用logstash命令导入配置:

/usr/share/logstash/bin/logstash -f  /etc/logstash/conf.d/httpd.conf

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
WGLOG日志管理系统是怎么收集日志的
WGLOG通过部署Agent客户端采集日志,Agent持续收集指定日志文件并上报Server,Server负责展示与分析。Agent与Server需保持相同版本。官网下载地址:www.wgstart.com
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
1045 122
基于docker搭建监控系统&日志收集
|
监控 API 开发工具
HarmonyOS Next的HiLog日志系统完全指南:从入门到精通
本文深入解析HarmonyOS Next的HiLog日志系统,涵盖日志级别、核心API、隐私保护与高级回调功能,助你从入门到精通掌握这一重要开发工具。
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
1513 64
搭建ELK日志收集,保姆级教程
|
存储 前端开发 数据可视化
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
6781 189
Grafana Loki,轻量级日志系统
|
Ubuntu
在Ubuntu系统上设置syslog日志轮替与大小限制
请注意,在修改任何系统级别配置之前,请务必备份相应得原始档案并理解每项变更可能带来得影响。
1325 2
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
1072 90
|
监控 Linux 应用服务中间件
linux查看日志文件tail -f用法
在 Linux 中,查看和监控日志文件是系统管理员和开发者常用的操作之一。tail 命令就是用来查看文件内容的,它默认显示文件的最后部分。tail -f 是 tail 命令的一个非常有用的选项,用于实时查看和跟踪日志文件的更新,尤其是在监控运行中的服务时非常有用。
1516 0
|
存储 IDE Linux
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
|
存储 消息中间件 缓存
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
832 1
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统