ELK Stack 介绍 & Logstash 日志收集
ELK Stack 组成
Software | Description | Function |
---|---|---|
E:Elasticsearch | Java 程序 | 存储,查询日志 |
L:Logstash | Java 程序 | 收集、过滤日志 |
K:Kibana | Java 程序 | 提供 Web 服务,将数据页面化 |
F:Filebeat | Go 程序 | 收集、过滤日志 |
ELK Stack 功能
收集: 收集所有服务器的日志
传输: 把日志稳定的传输到 ES 或者其他地方
存储: ES 能有效快速的存储日志数据
分析: 通过 Web 页面分析数据
监控: 监控集群架构
ELK Stack 优点
处理方式灵活:Elasticsearch 是实时全文索引,具有强大的搜索功能
配置相对简单:Elasticsearch 全部使用 JSON 接口,Logstash 使用模块配置,Kibana 的配置文件部分更简单。
检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
集群线性扩展:Elasticsearch 和 Logstash 都可以灵活线性扩展
前端操作绚丽:Kibana 的前端设计比较绚丽,而且操作简单
ELK Stack 用途
#=========== 收集所有的日志 ===========#
### 收集 Web 服务日志
### 收集服务日志
### 收集系统日志
#============ 统计、分析 =============#
### 统计访问量
### 统计访问量前 10 的 IP
### 站点访问次数最多的 URL
### 查询一上午以上三个值
### 查询一下午以上三个值
### 对比一下上下午用户访问量
### 对比这一周,每天用户增长还是减少
部署 ElasticSearch(走你)
部署 Kibana(走你)
部署 Logstash
安装 Java 环境
[root@web01 ~]# rpm -Uvh jdk-8u181-linux-x64.rpm
服务器时间同步
[root@web01 ~]# ntpdate time1.aliyun.com
安装 Logstash
# 上传
[root@web01 ~]# rz logstash-6.6.0.rpm
# 安装
[root@web01 ~]# rpm -ivh logstash-6.6.0.rpm
# 授权,已经授权
[root@web01 ~]# chown -R logstash.logstash /usr/share/logstash/
# 启动命令(需要指定配置文件等参数)
/usr/share/logstash/bin/logstash
Logstash 初识
输入输出插件介绍
# INPUT、OUTPUT 插件
INPUT:插件使 Logstash 收集指定源的日志
OUTPUT:插件将事件数据发送到特定的目的地
INPUT 支持事件源 | OUTPUT 支持输出源 | CODEC 编解码器支持编码 |
---|---|---|
azure_event_hubs(微软云事件中心) | elasticsearch(搜索引擎数据库) | avro(数据序列化) |
beats(filebeat日志收集工具) | email(邮件) | CEF(嵌入式框架) |
elasticsearch(搜索引擎数据库) | file(文件) | es_bulk(ES中的bulk api) |
file(文件) | http(超文本传输协议) | Json(数据序列化、格式化) |
generator(生成器) | kafka(基于java的消息队列) | Json_lines(便于存储结构化) |
heartbeat(高可用软件) | rabbitmq(消息队列 OpenStack) | line(行) |
http_poller(http api) | redis(缓存、消息队列、NoSQL) | multiline(多行匹配) |
jdbc(java连接数据库的驱动) | s3*(存储) | plain(纯文本,事件间无间隔) |
kafka(基于java的消息队列) | stdout(标准输出) | rubydebug(ruby语法格式) |
rabbitmq(消息队列 OpenStack) | tcp(传输控制协议) | |
redis(缓存、消息队列、NoSQL) | udp(用户数据报协议) | |
s3*(存储) | ||
stdin(标准输入) | ||
syslog(系统日志) | ||
tcp(传输控制协议) | ||
udp(用户数据报协议) |
Logstash 输入输出测试
# 配置环境变量
[root@web01 ~]# vim /etc/profile.d/logstash.sh
export PATH=/usr/share/logstash/bin/:$PATH
# 收集标准输入到标准输出测试
[root@web01 ~]# logstash -e 'input { stdin {} } output { stdout {} }'
# 测试输入
123456
{
# 时间戳
"@timestamp" => 2020-08-13T01:34:24.430Z,
# 主机
"host" => "web01",
# 版本
"@version" => "1",
# 内容
"message" => "123456"
}
# 收集标准输入到标准输出指定格式
[root@web01 ~]# logstash -e 'input { stdin {} } output { stdout { codec => rubydebug } }'
123456
{
"message" => "123456",
"@version" => "1",
"@timestamp" => 2020-08-13T01:39:40.837Z,
"host" => "web01"
}
Logstash 收集标准输入到文件
# 收集标准输入到文件
[root@web01 ~]# logstash -e 'input { stdin {} } output { file { path => "/tmp/test.txt" } }'
# 收集标准输入到文件
[root@web01 ~]# logstash -e 'input { stdin {} } output { file { path => "/tmp/test_%{+YYYY-MM-dd}.txt" } }'
Logstash 收集标准输入到 ES
# 收集标准输入到ES
[root@web01 ~]# logstash -e 'input { stdin {} } output { elasticsearch { hosts => ["10.0.0.51:9200"] index => "test_%{+YYYY-MM-dd}" } }'
# 随便输入些内容
# 查看页面
Logstash 使用
Logstash 是一个开源的数据收集引擎,可以水平伸缩,而且 Logstash 整个 ELK Stack 当中拥有最多插件的一个组件,其可以接收来自不同来源的数据并统一输出到指定的且可以是多个不同目的地
Logstash 配置文件
# 默认的配置文件
/etc/logstash/logstash.yml
# 一般不使用,只有 Systemd 管理时默认使用,但 Systemd 启动 Logstash 会有许多坑
收集文件日志到文件
编辑配置文件
[root@web01 ~]# vim /etc/logstash/conf.d/message_file.conf
input {
file {
path => "/var/log/messages"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
output {
file {
path => "/tmp/message_file_%{+YYYY-MM-dd}.log"
}
}
指定配置启动
# 检测配置(速度和启动一样慢)
[root@web01 ~]# logstash -f /etc/logstash/conf.d/message_file.conf -t
# 启动
[root@web01 ~]# logstash -f /etc/logstash/conf.d/message_file.conf
查看是否生成文件
[root@web01 tmp]# ll
total 4
-rw-r--r-- 1 root root 1050 Aug 13 11:24 message_file_2020-08-13.log
收集文件日志到 ElasticSearch
编辑配置文件
[root@web01 ~]# vim /etc/logstash/conf.d/message_es.conf
input {
file {
path => "/var/log/messages"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
output {
elasticsearch {
hosts => ["10.0.0.51:9200","10.0.0.52:9200","10.0.0.53:9200"]
index => "message_es_%{+YYYY-MM-dd}"
}
}
指定配置启动
[root@web01 ~]# logstash -f /etc/logstash/conf.d/message_es.conf
查看是否生成索引数据
用 ES-Head 观察是否生成索引数据,若数据收集成功,Kibana 也可以添加该索引模板,收集 ElasticSearch 中的日志数据
Logstash 多实例收集日志
创建多个数据目录
[root@web01 ~]# mkdir /data/logstash/{message_file,message_es} -p
# 授权
[root@web01 ~]# chown -R logstash.logstash /data/
指定数据目录启动
# 指定配置文件,以及数据目录
[root@web01 ~]# logstash -f /etc/logstash/conf.d/message_es.conf --path.data=/data/logstash/message_es &
[1] 18693
[root@web01 ~]# logstash -f /etc/logstash/conf.d/message_file.conf --path.data=/data/logstash/message_file &
[2] 18747
## logstash 更多选项可以观察命令帮助
验证文件以及索引数据
观察文件是否生成,观察 ElasticSearch 数据库中是否有新的索引和文档
Logstash 单实例收集多份日志
收集日志到文件
# 编辑配置文件
[root@web01 ~]# vim /etc/logstash/conf.d/more_file.conf
input {
file {
type => "messages_log"
path => "/var/log/messages"
start_position => "beginning"
}
file {
type => "secure_log"
path => "/var/log/secure"
start_position => "beginning"
}
}
output {
if [type] == "messages_log" {
file {
path => "/tmp/messages_%{+YYYY-MM-dd}"
}
}
if [type] == "secure_log" {
file {
path => "/tmp/secure_%{+YYYY-MM-dd}"
}
}
}
收集日志到 ElasticSearch
[root@web01 conf.d]# cat nginx_tomcat.conf
input {
file {
type => "nginx_log"
path => "/var/log/nginx/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
}
file {
type => "tomcat_log"
path => "/usr/local/tomcat/logs/localhost_access_log.*.txt"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
output {
if [type] == "nginx_log" {
elasticsearch {
hosts => ["10.0.0.121:9200"]
index => "nginx_%{+YYYY-MM-dd}"
}
}
if [type] == "tomcat_log" {
elasticsearch {
hosts => ["10.0.0.121:9200"]
index => "tomcat_%{+YYYY-MM-dd}"
}
}
}
# 如果资源充足,可以使用多实例收集多日志,如果服务器资源不足,启动不了多实例,配置一个文件收集多日志启动
ELK Stack 介绍 & Logstash 日志收集的更多相关文章
- 用ELK搭建简单的日志收集分析系统【转】
缘起 在微服务开发过程中,一般都会利用多台服务器做分布式部署,如何能够把分散在各个服务器中的日志归集起来做分析处理,是一个微服务服务需要考虑的一个因素. 搭建一个日志系统 搭建一个日志系统需要考虑一下 ...
- ELK一个优秀的日志收集、搜索、分析的解决方案
1 什么是ELK? ELK,是Elastaicsearch.Logstash和Kibana三款软件的简称.Elastaicsearch是一个开源的全文搜索引擎.Logstash则是一个开源的数据收集引 ...
- ELK stack elasticsearch/logstash/kibana 关系和介绍
ELK stack elasticsearch 后续简称ES logstack 简称LS kibana 简称K 日志分析利器 elasticsearch 是索引集群系统 logstash 是日志归集集 ...
- ELK 构建 MySQL 慢日志收集平台详解
ELK 介绍 ELK 最早是 Elasticsearch(以下简称ES).Logstash.Kibana 三款开源软件的简称,三款软件后来被同一公司收购,并加入了Xpark.Beats等组件,改名为E ...
- ELK构建MySQL慢日志收集平台详解
上篇文章<中小团队快速构建SQL自动审核系统>我们完成了SQL的自动审核与执行,不仅提高了效率还受到了同事的肯定,心里美滋滋.但关于慢查询的收集及处理也耗费了我们太多的时间和精力,如何在这 ...
- Rainbond通过插件整合ELK/EFK,实现日志收集
前言 ELK 是三个开源项目的首字母缩写:Elasticsearch.Logstash 和 Kibana.但后来出现的 FileBeat 可以完全替代 Logstash的数据收集功能,也比较轻量级.本 ...
- ELK之方便的日志收集、搜索、展示工具
大家在做分部署系统开发的时候是不是经常因为查找日志而头疼,因为各服务器各应用都有自己日志,但比较分散,查找起来也比较麻烦,今天就给大家推荐一整套方便的工具ELK,ELK是Elastic公司开发的一整套 ...
- 【Spring Cloud & Alibaba全栈开源项目实战】:SpringBoot整合ELK实现分布式登录日志收集和统计
一. 前言 其实早前就想计划出这篇文章,但是最近主要精力在完善微服务.系统权限设计.微信小程序和管理前端的功能,不过好在有群里小伙伴的一起帮忙反馈问题,基础版的功能已经差不多,也在此谢过,希望今后大家 ...
- es redis logstash 日志收集系统排错
用logstash收集日志并发送到redis,然后通过logstash取redis数据写入到es集群,最近kibana显示日志总是中断,日志收集不过来,客户端重启发现报错: Failed to sen ...
随机推荐
- 【Oracle】substr()函数详解
Oracle的substr函数简单用法 substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H' *从字符串第一个 ...
- SDUST数据结构 - chap7 图
判断题: 选择题: 函数题: 6-1 邻接矩阵存储图的深度优先遍历: 裁判测试程序样例: #include <stdio.h> typedef enum {false, true} boo ...
- qt for webassembly环境搭建图文教程
一.前言 从Qt5.14开始,官方的在线安装提供了qt for webassembly构建套件,这对很多小白来说绝对是个好消息,也绝对是个好东西,好消息是不用再去交叉编译自己生成qt for weba ...
- SpringMVC下关于静态资源访问
SpringMVC静态资源访问 聊一聊关于静态资源的访问问题 首先,我们要对web.xml里面的DispatcherServlet进行设置 <!-- 中央调度器--> <servle ...
- 理解Go的多态实现
总结两点: 在Go中,定义一个interface类型,该类型说明了它有哪些方法.使用时,在函数中,将该interface类型作为函数的形参,任意一个实现了interface类型的实参都能作为该inte ...
- mysql(视图 事务 索引 外键)
视图 视图本质就是对查询的封装 创建视图(定义视图 起名以v_开头) create view v_students as select classes.name as c_name ,stud ...
- 解决PHP无法监听9000端口问题/502错误解决办法
问题背景 配置nginx+php服务的时候,发现网站能打开html,打开php文件就显示502,一般这个是php没启动啊啥的导致不能正常解析php文件. 原因分析 因为nginx解析php文件是交给f ...
- SSL_ERROR_WANT_READ
``` 47757 2020/05/07 06:36:04 [debug] 19413#19413: *23421 event timer: 11, old: 15581551413, new: 15 ...
- TCP连接的超时时间
无论你用任何语言或者是网络库,你都可以设置网络操作的超时时间,特别是connect.read.write的超时时间. 你可以在代码中把超时时间设置任意大小值,但是connect方法会有一点特殊. co ...
- 如何使用Conda源快速安装PyTorch?
数据科学交流群,群号:189158789,欢迎各位对数据科学感兴趣的小伙伴的加入! 1.切换国内源 1.1.在家目录生成.condarc conda config --set show_channel ...