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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 小白带你学习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实时生图绘板
相关文章
|
2月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
764 64
搭建ELK日志收集,保姆级教程
|
4月前
|
监控 Linux 应用服务中间件
linux查看日志文件tail -f用法
在 Linux 中,查看和监控日志文件是系统管理员和开发者常用的操作之一。tail 命令就是用来查看文件内容的,它默认显示文件的最后部分。tail -f 是 tail 命令的一个非常有用的选项,用于实时查看和跟踪日志文件的更新,尤其是在监控运行中的服务时非常有用。
672 0
|
8月前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
662 90
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
662 2
|
存储 安全 Linux
|
8月前
|
存储 IDE Linux
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
890 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
|
7月前
|
调度
FreeRTOS学习日志 - 第一天
这就是我的FreeRTOS学习日志 - 第一天的内容,明天继续探索这片实时操作系统的广阔海洋。+
153 12
|
8月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
11月前
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
280 7
|
11月前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
382 1