ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

云计算运维学习day18——Logstash,Filebeat与Kibana部署

云计算运维学习day18——Logstash,Filebeat与Kibana部署

目录

一.数据处理管道——Logstash

1.1简单介绍

1.2部署Logstash

1.2.1准备工作

1.2.2安装Logstash软件包和JDK

1.2.3本地简单测试

1.3Elasticsearch输出插件与ES集群管理界面

1.3.1简单介绍

1.3.2进入conf.d目录下,新建一个test.conf,用于输入配置信息

1.3.3启动test.conf配置,录入数据

1.3.4进入Elasticsearch的管理界面

1.4Elasticsearch-head插件——可视化插件

1.4.1简单介绍

1.4.2下载并解压phantomjs软件,复制程序到PATH路径下

1.4.3安装fontconfig

1.4.4启动phantomjs服务

1.4.5下载并解压nodejs软件

1.4.6解压elasticsearch-head软件

1.4.7安装当前项目 package.json 中声明的所有依赖包

1.4.8修改app.js文件,并启动服务

1.4.9修改当前ES集群的主节点的配置文件

1.4.10进入ES集群的可视化界面

1.5谷歌(Chrome)浏览器上的Es集群输出插件和ES-head可视化插件

1.5.1打开谷歌浏览器

1.5.2点击右上角的插件按钮,进入插件管理界面,可能需要VPN

1.5.3搜索插件名称,安装两个插件

1.5.4进入ES管理客户端插件,添加新链接,进入管理界面

1.5.5进入ES-head可视化插件,添加新链接,进入ES-head可视化管理界面

1.6输入插件——file

1.6.1简单介绍

1.6.2进入conf.d目录,创建新的配置文件

1.6.3启动配置,观察输出结果

1.7同步日志插件——syslog

1.7.1简单介绍

1.7.2进入conf.d目录下,创建一个rsyslog.conf文件

1.7.3修改server上的日志文件配置rsyslog.conf

1.7.4启动配置,查看输出结果

1.8多行过滤插件——multiline

1.8.1简单介绍

1.8.2进入conf.d目录下,创建一个multiline.conf

1.8.3删除之前的冗余数据

1.8.4启动配置,查看输出结果

1.9过滤插件——grok

1.9.1简单介绍

1.9.2server5安装httpd,并开启服务

1.9.3在默认发布目录下新建一个index.html,用于外机访问

1.9.4使用外机访问server5的 index.html 默认发布页,生成访问日志

1.9.5进入conf.d目录下,新建一个grok.conf配置文件

1.9.6在server5上启动配置,查看输出结果

二.应用日志采集——filebeat

2.1简单介绍

2.2filebeat采集Web日志,输出到ES集群

2.2.1完成任务

2.2.2解压filebeat软件包并开启apache模块

2.2.3修改apache.yml文件配置

2.2.4修改filebeat.yml文件

2.2.5开启filebeat服务

2.2.6查看是否获取到web服务日志

2.3filebeat采集Apache日志,中间由Logstash,最后输出到ES集群(补充)

2.3.1完成任务

2.3.2解压filebeat软件包并开启apache模块

2.3.3修改apache.yml文件配置

2.3.4修改filebeat.yml文件,启动filebeat服务

2.3.5进入server5的配置目录下,新建一个.conf文件

2.3.6查看是否获取到server3的web服务日志

三.数据可视化——Kibana

3.1简单介绍

3.2部署Kibana

3.2.1安装kibana软件包

3.2.2修改kibana.yml文件

3.2.3设置界面语言为简体中文(可选)

3.2.4启动服务,进入kibana可视化界面

3.3kibana快速创建可视化界面

3.3.1创建索引模式

3.3.2创建数据可视化

3.3.3刷新设置

3.3.4创建仪表板


一.数据处理管道——Logstash

官方文档:Logstash Introduction | Logstash Reference [7.6] | Elastichttps://www.elastic.co/guide/en/logstash/7.6/introduction.html

1.1简单介绍

1.说明:Logstash 是一款开源的服务端数据收集引擎和处理器,一个数据处理管道,具备实时流水线功能。Logstash可以动态地整合来自不同数据源的数据,并将其规范化到选择的目标位置。能够清理并简化所有数据,以适应各种高级下游分析和可视化用例。

2.核心工作框架图:

  • input(输入):告诉 Logstash 从哪拿数据。可以是日志文件(file)、syslog、redis、kafka、TCP/UDP、beats(Filebeat)等。
  • filter(过滤/解析):对拿到的数据进行处理,将一段原始文本加工成一段结构化字段
    • grok:正则解析
    • mutate:改字段
    • date:把字符串时间解析成标准时间戳
    • multiline:把散落多行的一段日志合并成一条事件
    • geoip:根据IP解析出地理位置
  • output(输出):将处理完的数据发送到指定的位置,常见的是Elasticsearch上

1.2部署Logstash

1.2.1准备工作

1.在上一章ES集群的四台虚拟机的基础上,新开一台CentOS 7虚拟机,作为Logstash的主机

主机名IP地址角色
server1192.168.7.171elasticsearch
server2192.168.7.172elasticsearch
server3192.168.7.173elasticsearch
server4192.168.7.174cerebro
server5192.168.7.175Logstash

2.五台虚拟机上完成静态IP的设置和域名解析

1.2.2安装Logstash软件包和JDK

说明:Logstash本身不包含JDK,需要手动安装JDK工具包;安装Logstash的软件包版本,必须要和Elasticsearch保持一致

yum install -y jdk-11.0.15_linux-x64_bin.rpm #Java软件开发工具包 yum install -y logstash-7.6.1.rpm #Logstash 7.6.1版本的rpm安装包

1.2.3本地简单测试

说明:在终端界面输入数据,观察有没有返回结果,先不对数据进行处理

/usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }' #启动Logstash,并从键盘读取你输入的内容,再原样打印到屏幕上,用来快速验证Logstash能否正常运行。

-e:直接在命令行中指定 Logstash 配置文件内容

1.3Elasticsearch输出插件与ES集群管理界面

1.3.1简单介绍

1.说明1:Elasticsearch输出插件是Logstash最核心、最常用的输出插件,负责将经过过滤处理后的结构化数据写入Elasticsearch集群,是整个日志监控管道的终点。

2.说明2:ES集群管理界面能够把复杂的集群状态和运维操作,通过图形化的方式呈现出来,方便你进行监控和管理。

3.完成任务:完成Elasticsearch输出插件的配置工作

下面为具体的实现步骤:

1.3.2进入conf.d目录下,新建一个test.conf,用于输入配置信息

说明:将本机终端界面上的数据发送到ES集群中的server1节点上

conf.d目录:我们自定义的管道配置存放目录

cd /etc/logstash/conf.d/ vim test.conf

1.3.3启动test.conf配置,录入数据

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

1.3.4进入Elasticsearch的管理界面

说明:进入cerebro管理工具,接着输入任一集群主节点,进入ES集群的管理界面

1.4Elasticsearch-head插件——可视化插件

1.4.1简单介绍

1.说明:Elasticsearch-head是一款开源的、用于浏览和与Elasticsearch集群进行交互的Web前端可视化工具。在日志监控体系中,它提供了一种比Kibana更轻量的方式来查看集群状态、浏览索引数据和执行基本操作。

2.与Elasticsearch输出插件的区别:Elasticsearch-head 为 Elasticsearch 集群提供可视化管理界面能够直观查看集群状态、索引结构和数据内容,方便开发和运维人员排错。

3.默认端口(port):9100

4.完成任务:完成Elasticsearch-head的部署工作

下面为具体的部署工程:

1.4.2下载并解压phantomjs软件,复制程序到PATH路径下

1.说明:它是一个“无头浏览器”,被 head 项目在安装过程中自动下载和使用,目的是为了完成一些前端资源的预编译或处理工作。

2.作用:elasticsearch本身是一个基于 Node.js 的前端工程。当你执行npm install 来安装它的依赖时,package.json文件中会有一个叫做phantomjs-prebuilt的包。这个包就会去下载 PhantomJS 程序,并可能在安装过程中使用它去执行一些脚本任务

tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 cd phantomjs-2.1.1-linux-x86_64 cp bin/phantomjs /usr/local/bin/ #将程序加入到全局环境变量中

1.4.3安装fontconfig

说明:fontconfig是一个为应用程序提供系统已安装字体清单和配置规则的基础库。当像 Java 这样的程序需要渲染文字或生成图片(比如验证码、报表)时,就会通过fontconfig来查找和使用合适的字体

yum install -y fontconfig

1.4.4启动phantomjs服务

phantomjs

1.4.5下载并解压nodejs软件

说明:Node.js本身是一个基于Chrome V8 引擎JavaScript 运行时环境

作用:Elasticsearch是一个基于Node.js的前端工程,需要 Node.js 提供的环境才能运行起来

1.4.6解压elasticsearch-head软件

unzip elasticsearch-head-master.zip

1.4.7安装当前项目package.json中声明的所有依赖包

cd elasticsearch-head-master/ npm install --registry=https://registry.npmmirror.com/ #使用国内镜像源

1.4.8修改app.js文件,并启动服务

vim _site/app.js npm run start (&) #启动服务,可以放到后台,建议先在终端启动一遍,观察是否有报错 netstat -antlp | grep :9100

1.4.9修改当前ES集群的主节点的配置文件

说明:当主节点切换时,新的主节点配置中也必须包含这两个配置,否则无法启动Elasticsearch-head插件。

vim /etc/elasticsearch/elasticsearch.yml systemctl restart elasticsearch

1.4.10进入ES集群的可视化界面

说明:输入本机的IP加9100端口,进入ES集群的可视化界面;接着输入任一ES集群的节点,进入ES集群

1.5谷歌(Chrome)浏览器上的Es集群输出插件和ES-head可视化插件

说明:谷歌浏览器上自带ES集群的输出插件和可视化插件,只需要安装插件,即可直接进入ES集群的管理界面,无需复杂的配置

1.5.1打开谷歌浏览器

1.5.2点击右上角的插件按钮,进入插件管理界面,可能需要VPN

1.5.3搜索插件名称,安装两个插件

1.5.4进入ES管理客户端插件,添加新链接,进入管理界面

1.5.5进入ES-head可视化插件,添加新链接,进入ES-head可视化管理界面

1.6输入插件——file

1.6.1简单介绍

1.说明:file输入插件是Logstash最核心、最常用的输入插件,负责从指定的文件或目录中读取日志数据,并将其转换为事件(Event)送入Logstash的管道进行处理

2.核心功能:

1.实时追踪:持续监控文件追加新内容,读取后立即发送

2.断点续传:通过.sincedb数据库文件记录每个文件的读取位置,重启后从断点继续,以防数据丢失

3.文件轮转支持:自动监测并处理日志的轮转,确保不丢失数据

4.多文件监听:支持glob模式匹配路径,可同时监控多个目录和文件

下面为具体的实现步骤:

1.6.2进入conf.d目录,创建新的配置文件

完成任务:将server5的本机日志保存到ES集群内

cd /etc/logstash/conf.d vim test.conf

1.6.3启动配置,观察输出结果

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

-f:指定 Logstash 管道的配置文件路径

1.7同步日志插件——syslog

1.7.1简单介绍

1.说明:syslog插件会在 Logstash 节点上模拟出一个 syslog 服务器,它监听一个指定的网络端口,接收来自其他设备或系统发来的 syslog 消息,然后将其转换成 Logstash 的事件进行处理和转发。相当于Logsatsh伪装成了syslog日志服务器

2.核心功能:收集Linux/Unix系统日志,通过配置rsyslog或syslog-ng文件,可以将主机的所有系统日志转发给Logstash处理

下面为具体的实现步骤:

1.7.2进入conf.d目录下,创建一个rsyslog.conf文件

完成任务:同时同步server1,server2,server3的日志到一个日志上,并将该日志保存到ES集群当中

注意:自定义名字,但必须要以.conf结尾

说明:在conf.d目录下,自定义创建一个.conf文件,保存配置

cd /etc/logstash/conf.d/ vim rsyslog.conf

1.7.3修改server上的日志文件配置rsyslog.conf

说明:修改三个server的rsyslog.conf配置,将server1的系统日志发送到远程 Logstash 服务器(server5)

vim /etc/rsyslog.conf systemctl restart rsyslog.service

1.7.4启动配置,查看输出结果

说明:在server1的日志上输入一个server1用于测试,观察 Logsatsh服务器(server5)上能否收到,ES集群中是否存在该内容

server5:

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

server1:

logger server1

server2:

logger server2

server3:

logger server3

1.8多行过滤插件——multiline

1.8.1简单介绍

1.说明:Logstash 专门用来处理多行日志的“粘合剂”,它能把分散在不同行的信息合并成一个完整的事件,方便后续处理

2.工作原理:判断某一行是一行新日志的开始,还是上一行日志的延续

pattern:正则匹配,定义一个正则表达式,用来匹配某一行日志的特征

what:归属方向,决定匹配到的行归属到哪里。

previous:合并到前一行

next:合并到下一行

negate:匹配取反,设为 true 时,匹配逻辑取反,即对没有匹配到 pattern 的行生效。

下面为具体的部署过程:

1.8.2进入conf.d目录下,创建一个multiline.conf

说明:当读到不以 [ 开头的行,Logstash会将这行合并到上一行中,直到再次匹配到下一个以 [ 开头的句子,便于我们查看

vim /etc/logstash/conf.d/multiline.conf

读取的文件内容格式如下:

1.8.3删除之前的冗余数据

说明:当对同一个文件内容进行操作时,如果你之前将文件内容全部读取完,再次读取该文件时,Logstash会自动接着上次终止的地方运行,可能会导致你看不到数据。这里是测试环境,生产环境中请慎重考虑

cd /usr/local/logstash/data/plugins/input/file/ ls -a rm -f 之前的冗余数据

否则可能会出现以下情况:运行程序后没有输出

1.8.4启动配置,查看输出结果

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

1.9过滤插件——grok

1.9.1简单介绍

1.说明:Grok是 Logstash 中最核心、最强大的过滤插件。它能够将非结构化的原始日志(如一行文本)解析成结构化的字段(如 JSON 对象),方便后续在 Elasticsearch 中进行搜索、聚合和分析。

下面为具体的部署过程:

1.9.2server5安装httpd,并开启服务

完成任务:使用外机访问server5本机的httpd默认发布网页,生成访问日志,Logstash读取自身server5的访问日志,对读取的日志进行模板过滤后,再输入到ES集群中存储。

yum install -y httpd #安装httpd systemctl start httpd #开启服务

1.9.3在默认发布目录下新建一个index.html,用于外机访问

echo www.westos.org > /var/www/html/index.html

1.9.4使用外机访问server5的 index.html 默认发布页,生成访问日志

ab -c1 -n 300 http://192.168.7.175/index.html

1.9.5进入conf.d目录下,新建一个grok.conf配置文件

vim /etc/logsatsh/conf.d/grok.conf cat /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns/httpd #查看httpd的模板内容

1.9.6在server5上启动配置,查看输出结果

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

二.应用日志采集——filebeat

官方文档:Filebeat overview | Filebeat Reference [7.6] | Elastichttps://www.elastic.co/guide/en/beats/filebeat/7.6/filebeat-overview.html

2.1简单介绍

1.说明:Filebeat 是一个 Elastic Beat组件;一款轻量级的日志数据转发器,用于转发和集中日志数据。Filebeat 作为代理安装在指定的服务器上,会监控指定的日志文件或位置,收集日志事件,并将其转发到Elasticsearch或 Logstash进行索引

2.工作原理:启动 Filebeat 时,它会启动一个或多个输入,用于查找指定的日志数据位置。对于 Filebeat 找到的每个日志,Filebeat 都会启动一个 Harvester(收割机)。每个 Harvester(收割机) 会读取单个日志以查找新内容,并将新的日志数据发送到 libbeat,libbeat 会聚合事件,并将聚合数据发送到 Filebeat 配置的输出。当filebeat意外崩溃或重启后,Register会读取之前的断点位置,不会再扫一遍,同时能够有效防止重复采集

2.2filebeat采集Web日志,输出到ES集群

2.2.1完成任务

说明:server4上安装filebeat,收集server4上的Apache应用日志信息,之后直接传输给ES集群存储

准备工作:请确认server1上存在httpd服务,并启动

yum install -y httpd #安装httpd服务 yum start httpd #启动服务

2.2.2解压filebeat软件包并开启apache模块

说明:开启apache模块,等于开启了apache采集权限,同时,在该目录下创建一个软链接,指向 apache.yml 文件

注意:apache.yml文件默认不存在,需要你手动启用apache模块

rpm -ivh filebeat-7.6.1-x86_64.rpm cd /etc/filebeat/moudle.d filebeat modules enable apache #启动apache模块

2.2.3修改apache.yml文件配置

说明:修改apache.yml文件,添加应用服务日志路径

vim /etc/filebeat/modules.d/apache.yml #编辑apache.yml文件

2.2.4修改filebeat.yml文件

说明:指明web日志输出的ES集群位置,并完成语法验证

vim /etc/filebeat/filebeat.yml #编辑apache.yml文件 filebeat test config -c /etc/filebeat/filebeat.yml #测试filebeat.yml的语法

2.2.5开启filebeat服务

说明:测试filebeat与ES的连接情况,并开启服务

filebeat test output -c /etc/filebeat/filebeat.yml #测试与 ES 的连接 systemctl enable --now filebeat

2.2.6查看是否获取到web服务日志

说明:进入ES-head可视化界面,查看是否获取到web服务日志

2.3filebeat采集Apache日志,中间由Logstash,最后输出到ES集群(补充)

2.3.1完成任务

说明:server3上安装filebeat,收集server3上的日志信息,传输给server5的logstash,再由logstash处理后,发送给ES集群。

2.3.2解压filebeat软件包并开启apache模块

说明:开启apache模块,等于开启了apache采集权限,同时,在该目录下创建一个软链接,指向 apache.yml 文件

注意:apache.yml文件默认不存在,需要你手动启用apache模块

rpm -ivh filebeat-7.6.1-x86_64.rpm cd /etc/filebeat/moudle.d filebeat modules enable apache #启动apache模块

2.3.3修改apache.yml文件配置

说明:修改apache.yml文件,添加应用服务日志路径

vim /etc/filebeat/modules.d/apache.yml

2.3.4修改filebeat.yml文件,启动filebeat服务

说明:指明web日志输出的Logstash位置,并完成语法验证,启动服务

vim /etc/filebeat/filebeat.yml #编辑apache.yml文件 filebeat test config -c /etc/filebeat/filebeat.yml #测试filebeat.yml的语法 systemctl start filebeat #开启服务

2.3.5进入server5的配置目录下,新建一个.conf文件

说明:切换到server5主机(Logsatsh),进入/etc/logstash/conf.d目录下,创建一个beats.conf(自定义)文件,编辑文件并重启服务

server5:

cd /etc/logstash/conf.d/ vim beats.conf /usr/share/logstash/bin/logstash -rf /etc/logstash/conf.d/beats.conf

参数:

-r:启用配置文件的自动监控和热加载功能。

-f:告诉 Logstash 使用哪个配置文件来启动。

2.3.6查看是否获取到server3的web服务日志

说明:进入ES-head可视化界面,查看是否获取到server3的web服务日志

三.数据可视化——Kibana

3.1简单介绍

1.说明:Kibana 是 Elastic Stack(ELK Stack)中的数据可视化组件,专门用于对 Elasticsearch 中存储的数据进行搜索、分析、图表展示和仪表盘管理。Kibana不存储数据,它只是一个展示层,通过 RESTful API 向 Elasticsearch 发送查询请求,获取数据后以图形化方式呈现

2.默认端口(port):5601

3.2部署Kibana

3.2.1安装kibana软件包

rpm -ivh kibana-7.6.1-x86_64.rpm

3.2.2修改kibana.yml文件

说明:指明kibana连接的ES集群,在kibana.yml文件中任意选填一个ES集群中的主机IP即可

cd /etc/kibana vim kibana.yml

3.2.3设置界面语言为简体中文(可选)

vim /etc/kibana/kibana.yml

3.2.4启动服务,进入kibana可视化界面

说明:启动服务,并检查端口。有了端口后,打开浏览器,输入下载的kibana的主机IP:5601进入kibana主界面

systemctl enable --now kibana netstat -antlp | grep :5601 #5601是kibana服务的默认端口 #或者使用ss命令查看端口 ss -tlp | grep :5601

浏览器输入:

主机IP:5601

3.3kibana快速创建可视化界面

3.3.1创建索引模式

3.3.2创建数据可视化

3.3.3刷新设置

3.3.4创建仪表板

说明:创建仪表板有两种,一种是直接在仪表板里创建新的数据可视化(方法与上面的创建数据可视化一致),另一种是导入之前建过的数据可视化(这里我们选择导入)

返回列表