70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据相关的知识,希望对你有一定的参考价值。

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_elastic

Kibana 图形显示

Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch协作,可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作,您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。

  • 安装并配置 Kibana
  • 注意: Kibana的版本要和 Elasticsearch 相同的版本,否则可能会出错
#下载地址:
https://www.elastic.co/cn/downloads/kibana
https://mirrors.tuna.tsinghua.edu.cn/elasticstack/

#安装前确认Elasticsearch版本
[root@KibanaAndCerebro ~]#curl http://192.168.11.200:9200

"name" : "es-node1",
"cluster_name" : "es-cluster",
"cluster_uuid" : "K0Ot8jy7TAGjhrNXt7y1SA",
"version" :
"number" : "8.6.1", #版本号
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "180c9830da956993e59e2cd70eb32b5e383ea42c",
"build_date" : "2023-01-24T21:35:11.506992272Z",
"build_snapshot" : false,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
,
"tagline" : "You Know, for Search"


#包安装对应版本的Kibana
[root@KibanaAndCerebro ~]#wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/8.x/apt/pool/main/k/kibana/kibana-8.6.1-amd64.deb && dpkg -i kibana-8.6.1-amd64.deb
--2023-02-25 12:37:15-- https://mirrors.tuna.tsinghua.edu.cn/elasticstack/8.x/apt/pool/main/k/kibana/kibana-8.6.1-amd64.deb
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 2402:f000:1:400::2, 101.6.15.130
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|2402:f000:1:400::2|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 228571944 (218M) [application/octet-stream]
Saving to: ‘kibana-8.6.1-amd64.deb’

kibana-8.6.1-amd64.deb 100%[=================================================================================================>] 217.98M 65.7MB/s in 3.6s

2023-02-25 12:37:19 (60.9 MB/s) - ‘kibana-8.6.1-amd64.deb’ saved [228571944/228571944]

Selecting previously unselected package kibana.
(Reading database ... 73289 files and directories currently installed.)
Preparing to unpack kibana-8.6.1-amd64.deb ...
Unpacking kibana (8.6.1) ...
Setting up kibana (8.6.1) ...
Creating kibana group... OK
Creating kibana user... OK
Created Kibana keystore in /etc/kibana/kibana.keystore

#修改配置
[root@KibanaAndCerebro ~]#vim /etc/kibana/kibana.yml
[root@KibanaAndCerebro ~]#grep "^[^#]" /etc/kibana/kibana.yml
server.host: "0.0.0.0" #修改此行的监听地址,默认为localhost,即:127.0.0.1:5601
server.publicBaseUrl: "http://kibana.mooreyxia.org" #修改此行为kibana域名或ip
elasticsearch.hosts: ["http://192.168.11.200:9200","http://192.168.11.201:9200","http://192.168.11.202:9200"] #修改此行,指向ES任意服务器地址或多个节点地址实现容错,默认为localhost
logging:
appenders:
file:
type: file
fileName: /var/log/kibana/kibana.log
layout:
type: json
root:
appenders:
- default
- file
pid.file: /run/kibana/kibana.pid
i18n.locale: "zh-CN" #修改此行,使用"zh-CN"显示中文界面,默认英文

#启动 Kibana 服务并验证
[root@KibanaAndCerebro ~]#systemctl enable --now kibana
Created symlink /etc/systemd/system/multi-user.target.wants/kibana.service → /lib/systemd/system/kibana.service.
[root@KibanaAndCerebro ~]#systemctl status kibana
● kibana.service - Kibana
Loaded: loaded (/lib/systemd/system/kibana.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2023-02-25 13:07:38 UTC; 7s ago
Docs: https://www.elastic.co
Main PID: 1149 (node)
Tasks: 11 (limit: 3366)
Memory: 149.0M
CPU: 8.104s
CGroup: /system.slice/kibana.service
└─1149 /usr/share/kibana/bin/../node/bin/node /usr/share/kibana/bin/../src/cli/dist

Feb 25 13:07:38 KibanaAndCerebro systemd[1]: Started Kibana.
Feb 25 13:07:41 KibanaAndCerebro kibana[1149]: [2023-02-25T13:07:41.172+00:00][INFO ][node] Kibana process configured with roles: [background_tasks, ui]

[root@KibanaAndCerebro ~]#ss -ntlp |grep node
LISTEN 0 511 0.0.0.0:5601 0.0.0.0:* users:(("node",pid=1149,fd=57))

[root@KibanaAndCerebro ~]#pstree -p | grep node
|-node(1149)-+-node(1155)
| |-node(1156)
| |-node(1157)
| |-node(1158)
| |-node(1159)
| |-node(1160)
| |-node(1161)
| |-node(1162)
| |-node(1163)
| `-node(1164)

#默认以kibana用户启动服务
[root@KibanaAndCerebro ~]#id kibana
uid=111(kibana) gid=113(kibana) groups=113(kibana)

[root@KibanaAndCerebro ~]#ps aux |grep node
kibana 1149 13.5 13.6 11723140 408436 ? Ssl 13:07 0:45 /usr/share/kibana/bin/../node/bin/node /usr/share/kibana/bin/../src/cli/dist
root 1180 0.0 0.0 4020 2072 pts/0 S+ 13:13 0:00 grep --color=auto node

#访问前DNS解析
[root@KibanaAndCerebro ~]#cat /etc/hosts | grep 192
192.168.11.203 cerebro.mooreyxia.org
192.168.11.203 kibana.mooreyxia.org
  • 向Kibana中添加Elasticsearch集群监测

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_Elastic_02

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_Elastic_03

添加Elasticsearch集群监测

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_数据_04

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_elastic_05

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_数据_06

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_数据_07

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_数据_08

管理Elasticsearch索引

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_数据_09

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_elastic_10

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_elastic_11



Beats 收集数据

Beats 是一个免费且开放的平台,集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。

虽然利用 logstash 就可以收集日志,功能强大,但由于 Logtash 是基于Java实现,需要在采集日志的主机上安装JAVA环境

logstash运行时最少也会需要额外的500M的以上的内存,会消耗比较多的内存和磁盘空间,可以采有基于Go开发的 Beat 工具代替 Logstash 收集日志,部署更为方便,而且只占用10M左右的内存空间及更小的磁盘空间。

#Github 链接
https://github.com/elastic/beats

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_Elastic_12

  • Beats的常用服务
  • filebeat:收集日志文件数据。最常用的工具
  • packetbeat:用于收集网络数据。一般用zabbix实现此功能
  • metricbeat:从OS和服务收集指标数据,比如系统运行状态、CPU 内存利用率等。
  • winlogbeat: 从Windows平台日志收集工具。
  • heartbeat: 定时探测服务是否可用。支持ICMP、TCP 和 HTTP,也支持TLS、身份验证和代理
  • auditbeat:收集审计日志
  • Functionbeat:使用无服务器基础架构提供云数据。面向云端数据的无服务器采集器,处理云数据
  • 利用 Filebeat 收集日志
  • filebeat 支持从日志,Syslog,Redis,Docker,TCP,UDP,标准输入等读取数据,再输入至Elasticsearch,logstash,Redis,Kafka等
  • Filebeat的工作方式如下:
  • 启动Filebeat时,它将启动一个或多个输入进,这些输入将在为日志数据指定的位置中查找。
  • 对于Filebeat所找到的每个日志,Filebeat都会启动收集器harvester进程。
  • 每个收集器harvester都读取一个日志以获取新内容,并将新日志数据发送到libbeat
  • libbeat会汇总事件并将汇总的数据发送到为Filebeat配置的输出。
  • Filebeat 官方说明
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-overview.html

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_elastic_13

  • 包安装 Filebeat
#下载成功后解压
[root@web01 ~]#wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/8.x/apt/pool/main/f/filebeat/filebeat-8.6.1-amd64.deb && dpkg -i filebeat-8.6.1-amd64.deb
--2023-02-25 13:56:35-- https://mirrors.tuna.tsinghua.edu.cn/elasticstack/8.x/apt/pool/main/f/filebeat/filebeat-8.6.1-amd64.deb
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 2402:f000:1:400::2, 101.6.15.130
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|2402:f000:1:400::2|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 41772972 (40M) [application/octet-stream]
Saving to: ‘filebeat-8.6.1-amd64.deb’

filebeat-8.6.1-amd64.deb 100%[=================================================================================================>] 39.84M 46.4MB/s in 0.9s

2023-02-25 13:56:37 (46.4 MB/s) - ‘filebeat-8.6.1-amd64.deb’ saved [41772972/41772972]

Selecting previously unselected package filebeat.
(Reading database ... 70994 files and directories currently installed.)
Preparing to unpack filebeat-8.6.1-amd64.deb ...
Unpacking filebeat (8.6.1) ...
Setting up filebeat (8.6.1) ...

#默认没有启动
[root@web01 ~]#systemctl enable --now filebeat
Synchronizing state of filebeat.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable filebeat
Created symlink /etc/systemd/system/multi-user.target.wants/filebeat.service → /lib/systemd/system/filebeat.service.

#filebeat以root身份启动
[root@web01 ~]#ps aux|grep filebeat
root 1528 0.2 5.1 1282348 103548 ? Ssl 14:21 0:00 /usr/share/filebeat/bin/filebeat --environment systemd -c /etc/filebeat/filebeat.yml --path.home /usr/share/filebeat --path.config /etc/filebeat --path.data /var/lib/filebeat --path.logs /var/log/filebeat
root 1539 0.0 0.1 4020 2132 pts/0 S+ 14:23 0:00 grep --color=auto filebeat
  • 配置Filebeat
  • Filebeat的 默认配置文件是/etc/filebeat/filebeat.yml,遵循YAML语法。
#默认filebeat.yml
[root@web01 ~]#grep -Ev "#|^$" /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream
id: my-filestream-id
enabled: false
paths:
- /var/log/*.log
filebeat.config.modules:
path: $path.config/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
output.elasticsearch:
hosts: ["localhost:9200"]
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~

-----------------------------------
#选项说明
input_type: log
#指定输入类型
paths
#支持基本的正则,所有golang glob都支持,支持/var/log/*/*.log
encoding
#plain, latin1, utf-8, utf-16be-bom, utf-16be, utf-16le, big5, gb18030, gbk, hzgb-2312,euc-kr, euc-jp, iso-2022-jp, shift-jis, and so on
exclude_lines
#支持正则 排除匹配的行,如果有多行,合并成一个单一行来进行过滤
include_lines
#支持正则 include_lines执行完毕之后会执行exclude_lines。
exclude_files
#支持正则 排除匹配的文件
exclude_files: [.gz$]
tags
#列表中添加标签,用过过滤
filebeat.inputs:
- paths: ["/var/log/app/*.json"]
tags: ["json"]
fields
#可选字段,选择额外的字段进行输出
#可以是标量值,元组,字典等嵌套类型
ignore_older
#可以指定Filebeat忽略指定时间段以外修改的日志内容
#文件被忽略之前,确保文件不在被读取,必须设置ignore older时间范围大于close_inactive
#如果一个文件正在读取时候被设置忽略,它会取得到close_inactive后关闭文件,然后文件被忽略
close_*
#close_ *配置选项用于在特定标准或时间之后关闭harvester。 关闭harvester意味着关闭文件处理程序。 如果在harvester关闭后文件被更新,则在scan_frequency过后,文件将被重新拾取。 但是,如果在harvester关闭时移动或删除文件,Filebeat将无法再次接收文件,并且harvester未读取的任何数据都将丢失。
close_inactive
#启动选项时,如果在制定时间没有被读取,将关闭文件句柄
#读取的最后一条日志定义为下一次读取的起始点,而不是基于文件的修改时间
#如果关闭的文件发生变化,一个新的harverster将在scan_frequency运行后被启动
#建议至少设置一个大于读取日志频率的值,配置多个prospector来实现针对不同更新速度的日志文件
#使用内部时间戳机制,来反映记录日志的读取,每次读取到最后一行日志时开始倒计时
#使用2h 5m 来表示
recursive_glob.enabled
#递归匹配日志文件,默认false
close_rename
#当选项启动,如果文件被重命名和移动,filebeat关闭文件的处理读取
close_removed
#当选项启动,文件被删除时,filebeat关闭文件的处理读取
#这个选项启动后,必须启动clean_removed
close_eof
#适合只写一次日志的文件,然后filebeat关闭文件的处理读取
close_timeout
#当选项启动时,filebeat会给每个harvester设置预定义时间,不管这个文件是否被读取,达到设定时间后,将被关闭
close_timeout 不能等于ignore_older,会导致文件更新时,不会被读取
#如果output一直没有输出日志事件,这个timeout是不会被启动的,至少要要有一个事件发送,然后haverter将被关闭
#设置0 表示不启动
clean_inactived
#从注册表文件中删除先前收获的文件的状态
#设置必须大于ignore_older+scan_frequency,以确保在文件仍在收集时没有删除任何状态
#配置选项有助于减小注册表文件的大小,特别是如果每天都生成大量的新文件
#此配置选项也可用于防止在Linux上重用inode的Filebeat问题
clean_removed
#启动选项后,如果文件在磁盘上找不到,将从注册表中清除filebeat
#如果关闭close removed 必须关闭clean removed
scan_frequency
#prospector检查指定用于收获的路径中的新文件的频率,默认10s
document_type
#类型事件,被用于设置输出文档的type字段,默认是log
harvester_buffer_size
#每次harvester读取文件缓冲字节数,默认是16384
max_bytes
#对于多行日志信息,很有用,最大字节数
json
#这些选项使Filebeat解码日志结构化为JSON消息,逐行进行解码json
keys_under_root
#设置key为输出文档的顶级目录
overwrite_keys
#覆盖其他字段
add_error_key
#定义一个json_error
message_key
#指定json 关键建作为过滤和多行设置,与之关联的值必须是string
multiline
#控制filebeat如何处理跨多行日志的选项,多行日志通常发生在java堆栈中
multiline.pattern: ^\\[
multiline.negate: true
multiline.match: after
上面匹配是将多行日志所有不是以[符号开头的行合并成一行它可以将下面的多行日志进行合并成一行
multiline.pattern
指定匹配的正则表达式,filebeat支持的regexp模式与logstash支持的模式有所不同
pattern regexp
multiline.negate
定义上面的模式匹配条件的动作是 否定的,默认是false
假如模式匹配条件^b,默认是false模式,表示讲按照模式匹配进行匹配 将不是以b开头的日志行进行合并如果是true,表示将不以b开头的日志行进行合并
multiline.match
#指定Filebeat如何将匹配行组合成事件,在之前或者之后,取决于上面所指定的negate
multiline.max_lines
#可以组合成一个事件的最大行数,超过将丢弃,默认500
multiline.timeout
#定义超时时间,如果开始一个新的事件在超时时间内没有发现匹配,也将发送日志,默认是5s
tail_files
#如果此选项设置为true,Filebeat将在每个文件的末尾开始读取新文件,而不是开头
#此选项适用于Filebeat尚未处理的文件
symlinks
#符号链接选项允许Filebeat除常规文件外,可以收集符号链接。收集符号链接时,即使为符号链接的路径,
Filebeat也会打开并读取原始文件。
backoff
#backoff选项指定Filebeat如何积极地抓取新文件进行更新。默认1s
#backoff选项定义Filebeat在达到EOF之后再次检查文件之间等待的时间。
max_backoff
#在达到EOF之后再次检查文件之前Filebeat等待的最长时间
backoff_factor
#指定backoff尝试等待时间几次,默认是2
harvester_limit
#harvester_limit选项限制一个prospector并行启动的harvester数量,直接影响文件打开数
enabled
#控制prospector的启动和关闭
filebeat global
spool_size
#事件发送的阀值,超过阀值,强制刷新网络连接
filebeat.spool_size: 2048
publish_async
#异步发送事件,实验性功能
idle_timeout
#事件发送的超时时间,即使没有超过阀值,也会强制刷新网络连接
filebeat.idle_timeout: 5s
registry_file
#注册表文件的名称,如果使用相对路径,则被认为是相对于数据路径
#有关详细信息,请参阅目录布局部分 默认值为$path.data/registry
filebeat.registry_file: registry
config_dir
#包含额外的prospector配置文件的目录的完整路径
#每个配置文件必须以.yml结尾
#每个配置文件也必须指定完整的Filebeat配置层次结构,即使只处理文件的prospector部分。
#所有全局选项(如spool_size)将被忽略
#必须是绝对路径
filebeat.config_dir: path/to/configs
shutdown_timeout
#Filebeat等待发布者在Filebeat关闭之前完成发送事件的时间。
Filebeat General
name
#设置名字,如果配置为空,则用该服务器的主机名
name: "my-shipper"
queue_size
#单个事件内部队列的长度 默认1000
bulk_queue_size
#批量事件内部队列的长度
max_procs
#设置最大使用cpu数量

案例: 利用 Filebeat 收集系统日志到 ELasticsearch

#Filebeat收集的日志在Elasticsearch中默认生成的索引名称为
filebeat-<版本>-<时间>-<ID>
  • 修改配置
[root@web01 ~]#vim /etc/rsyslog.conf
*.* /var/log/system.log

[root@web01 ~]#cp /etc/filebeat/filebeat.yml,.bak
#删除所有原有内容,只添加下面内容
[root@web01 ~]#> /etc/filebeat/filebeat.yml
[root@web01 ~]#vim /etc/filebeat/filebeat.yml
[root@web01 ~]#cat /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true #开启日志
paths:
- /var/log/system.log #指定收集的日志文件
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
hosts: ["192.168.11.200:9200","192.168.11.201:9200","192.168.11.202:9200"] #指定ELK集群任意节点的地址和端口,多个地址容错
[root@web01 ~]#filebeat test config -c filebeat.yml
Config OK
[root@web01 ~]#systemctl restart filebeat
  • 插件查看索引

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_数据_14

  • 通过 Kibana 查看收集的日志信息

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_Elastic_15

  • 创建Kibana视图

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_elastic_16

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_elastic_17

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_elastic_18

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_数据_19

  • 查看之前的索引数据

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_elastic_20

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_elastic_21

测试

[root@web01 ~]#echo "hello,mooreyxia" > /var/log/system.log

70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据_数据_22

我是moore,大家一起加油!!!

以上是关于70-日志分析系统ELK-Kibana数据可视化展示Filebeat采集的数据的主要内容,如果未能解决你的问题,请参考以下文章

ELK-Kibana7.7应用

Flask + echarts 轻松搞定 nginx 日志可视化

大数据可视化助力智能工业大发展

能源管控系统开发,BI大数据可视化管理分析平台开发

利用 ELK系统分析Nginx日志并对数据进行可视化展示

ELK日志分析系统(实例!!!)