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 ...
随机推荐
- 此流非彼流——Stream详解
Stream是什么? Java从8开始,不但引入了Lambda表达式,还引入了一个全新的流式API:Stream API.它位于java.util.stream包中. Stream 使用一种类似用 S ...
- Java 栈的使用
讲栈之前,要先讲一下Deque双端队列 既可以添加到队尾,也可以添加到队首 既可以从队首获取又可以从队尾获取 public interface Deque<E> extends Queue ...
- guava eventbus 原理+源码分析
前言: guava提供的eventbus可以很方便的处理一对多的事件问题, 最近正好使用到了,做个小结,使用的demo网上已经很多了,不再赘述,本文主要是源码分析+使用注意点+新老版本eventbus ...
- Ubuntu创建桌面图标
以火狐为例 创建"~/.local/share/applications/firefox_dev.desktop"文件, 文件内容为: [Desktop Entry] Name=F ...
- Flask的配置文件加载两种方式
配置文件 1 基于全局变量 2 基于类的方式 配置文件的加载需要将配合文件的相对路径添加到app.config.from_object("文件路径"),类的方式也是一样,需要将类的 ...
- Flask扩展点总结(信号)
信号(源码) 信号,是在flask框架中为我们预留的钩子,让我们可以进行一些自定义操作. pip3 install blinker 根据flask项目的请求流程来进行设置扩展点 1.中间件 from ...
- Linux安装Oracle数据库SQLPlus客户端
安装 RPM包下载地址:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html ...
- 20201103gryz模拟赛解题报告
写在前面 昨天忘写了来补上 T1位运算乱搞一会没搞出来, 打完T4floyd暴力分之后发现T2树状数组可以骗点分 打完T3暴力手模了一遍样例之后发现T3就是个线段树板子 最后就非常愉快的拿到175pt ...
- Treap——堆和二叉树的完美结合,性价比极值的搜索树
大家好,今天和大家聊一个新的数据结构,叫做Treap. Treap本质上也是一颗BST(平衡二叉搜索树),和我们之前介绍的SBT是一样的.但是Treap维持平衡的方法和SBT不太一样,有些许区别,相比 ...
- CSS3 Flex Box 弹性盒子、弹性布局
目录 1. 概要 2. justify-content 属性 3. align-items 属性 4. flex-wrap 属性 5. align-content 属性 6. 居中 7. align- ...