ELFK-基础篇

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELFK-基础篇相关的知识,希望对你有一定的参考价值。

参考技术A 本文发布链接地址: https://www.jianshu.com/p/bf5189583543

[TOC]

后台运行与测试

关闭

配置文件的格式是 YAML 格式

elasticsearch-head 是一个简单的 elasticsearch web 图形化的管理工具
使用javascript写的一个弹性搜索集群的Web前端,在 elasticsearch5.x 后不再支持
插件形式的安装,需要作为一个独立的服务安装和启动。

上面的方式我测试没有成功,原因可能是网络问题导致,访问的都是国外的网站,慢。

推荐下面的方式

还有一种安装方式非常简单,只需要在 chrome 浏览器中安装 head 插件即可
在 谷歌商店 搜索 "ElasticSearch Head" 插件,安装这个插件,之后点击 相应插件图标即可。

插件安装地址

之后,在浏览地址栏里输入 elasticsearch 的地址和端口,点击连接

安装完毕

== 该配置文件的所有者必须是root或正在执行Beat进程的用户。 该文件的权限必须不允许除所有者以外的任何人写入,需要是0644的权限==

==/var/log/* 这样的匹配是错误的==

默认情况下,Filebeat 会自动加载推荐的模板文件 filebeat.template.json,如果启用了 Elasticsearch 输出。您可以通过调整 filebeat.yml 文件中的选项template.name和template.path选项来配置filebeat以加载其他模板:

==默认情况下,如果索引中已存在模板,则不会覆盖该模板。要覆盖现有的模板,请template.overwrite: true在配置文件中进行设置。==

要禁用自动模板加载,请注释Elasticsearch输出下的 template 的相关部分。

==如果使用Logstash输出,则不支持自动加载模板的选项,需要手动加载模板。==

假如配置了输出到 Logstash 中,需要手动添加索引模板到 Elasticsearch 中,就需要在 filebeat 的安装目录中执行如下命令

假如你之前已经用了输出到 elasticsearch 的索引模板,可以在成功执行上面命令后,执行下面的命令,用于删除旧的索引模板,这样可以强迫 Kibana 重新使用新的索引模板

要在 Kibana 中查看数据,假如首次使用 kibana,需要先创建索引模式,具体请看 Kibana 部分的介绍

创建索引模式后,您可以 filebeat-* 在 Kibana 中选择索引模式来探索 Filebeat数据。

数据在线程之间以 事件 的形式流传。不要叫行,因为 logstash 可以处理多行事件

此时可以在命令行里输入一下信息,应该可以看到一些输出

可以利用文件输入插件,Logstash 可以很容易配置成读取日志文件作为输入源

例如 读取 Apache 日志文件作为输入,然后输出到标准输出。配置文件如下:

配置为将所有的输入输出到一个 Elasticsearch 实例中. 这是在 ELK 平台中是最常用的配置。

这里是把一个Django 的日志作为输入,之后输出到 elasticsearch

好像没啥卵用

插件类型包括:

Logstash 可以从 file 读取数据

file 插件可用于将事件和日志文件输入给 Logstsh

stdin 输入插件用于从标准输入中读取事件和日志。

当我们配置为 stdin 时,终端上的任何输入都会作为 Logstash 日志管道的输入。
这通常用于测试。

filebeat 插件出现在最新的 5.x 版本中,它是一个轻量级的事件和日志搜集工具。

会把处理过的数据输出到屏幕终端

把处理过的数据存储到 elasticsearch 集群中

true 和 false

编辑码器实际上并不是一种数据类型,它是在输入或输出的时候对数据进行解码或编码
的一种方式

例子:
在输出的时候设置,把输出数据编码成 JSON 格式

就是由一系列键值对组合成的集合。
以 "key" => "value" 的形式表示,多个用空格分开

用双引号引起来的字符序列

以字符 # 开头

字段可以使用 [field_name] 的方式引用
嵌套字段 [field1][field2]

支持下标索引

小贴士:logstash 的数组也支持倒序下标,即 [geoip][location][-1] 可以获取数组最后一个元素的值。

Logstash 还支持变量内插,在字符串里使用字段引用的方法是这样:
"the longitude is %[geoip][location][0]"

Logstsh 的判断语句,与js的一样

条件语句可以一起配合使用的运算符如下:

通常来说,你都会在表达式里用到字段引用。为了尽量展示全面各种表达式,下面虚拟一个示例:

要配置Logstash,您可以创建一个配置文件,指定要使用的插件和每个插件的设置。 您可以在配置中引用事件字段,并使用条件来满足某些条件时处理事件。 当您运行logstash时,使用-f指定您的配置文件。

可以把 Logstash 相关的配置信息放在一个自定义的文件里

配置文件的格式是被分为不同的区域块儿的,基本上是根据 输入插件、过滤插件和输出插件来区分的

每一个区域块儿都包含了一个或者多个插件的配置选项。

==如果在同一个区域中使用了多个插件,则配置文件中的顺序就指定了应用到事件处理六的顺序。==

在运行 Logstash 运行时,可以用 -f 参数指定配置文件的完整路径,甚至可以指定一个包含了多个不同类型如输入、过滤和输出插件的配置文件目录

使用 -t (--configtest) 参数可以检查配置文件的语法,而不是真正运行 Logstash

测试配置文件

如果配置文件通过配置测试,请使用以下命令启动Logstash:

该--config.reload.automatic选项启用自动配置重新加载,以便您每次修改配置文件时不必停止并重新启动Logstash。
--config.reload.automatic 可以用 -r 替代

配置文件常见错误:

下面是完整正确的配置文件内容

用指定配置文件的方式启动 Ctrl + d 停止 logstash 在 shell 命令行里执行的启动程序first-pipeline.conf

其实上面的命令参数在 5.x 之后,都可以在配置文件 logstash.yml 中设置了

现在,您有一个工作流程,从Filebeat读取日志行。但是您会注意到日志消息的格式不理想。您要解析日志消息以从日志中创建特定的命名字段。为此,您将使用grok过滤器插件。

因为grok过滤器插件在传入的日志数据中查找模式,所以配置插件需要您决定如何识别用例感兴趣的模式。来自Web服务器日志示例的代表行如下所示:

使用方法,编辑 first-pipeline.conf
写入下面的内容:

假如你在这之前已经运行了 logstash 和 filebeat 。要想生效现在的过滤配置,您需要强制Filebeat从头开始读取日志文件。
不必重新启动Logstash来接收更改,但是需要删除 filebeat 下的注册表文件 registry,此文件一般在安装目录下的 data 目录下。

由于Filebeat存储在注册表中收集的每个文件的状态,因此删除注册表文件会强制Filebeat读取从头开始捕获的所有文件。

接下来,使用以下命令重新启动Filebeat即可

除了解析日志数据以获得更好的搜索之外,过滤插件也可以从现有数据中导出补充信息。例如,geoip插件会查找IP地址,从地址中导出地理位置信息,并将该位置信息添加到日志中。

将Logstash实例配置为使用geoip过滤器插件,将以下行添加到文件的filter部分first-pipeline.conf

完整的示例:

修改好保存,生效的话,同样先删除 Filebeat 注册文件,之后重启 filebeat

配置输出到 Elasticsearch

测试您的管道编辑
现在,Logstash管道配置为将数据索引到Elasticsearch集群中,您可以查询Elasticsearch。

根据grok过滤器插件创建的字段,尝试对Elasticsearch进行测试查询。使用YYYY.MM.DD格式将$ DATE替换为当前日期

输出

注意
索引名称中使用的日期是基于UTC,而不是Logstash运行的时区。如果查询返回index_not_found_exception,请确保logstash-$DATE反映了索引的实际名称。要查看可用索引的列表,请使用此查询:curl 'localhost:9200/_cat/indices?v'

ps -ef |grep node

kill -9 进程号

在浏览其中输入以下地址

以上是关于ELFK-基础篇的主要内容,如果未能解决你的问题,请参考以下文章

Vue基础篇

Flutter基础篇——常用Widget

Android之WIFI-基础篇NativeDaemonConnector分析

详解CALCULATE系列-基础篇

快速入门Linux基础+环境配置+shell脚本

2-STM32+W5500+GPRS物联网开发基础篇-基础篇学习的内容