三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Linux学习14-logstash插件,日志采集及可视化,ES数据备份与集群监控

Linux学习14-logstash插件,日志采集及可视化,ES数据备份与集群监控

logstash插件

file输入插件

从本地文件系统中读取日志内容,类似于 tail -f 命令,持续监控文件新增内容并采集

编辑之前的conf.d文件

指定读取本机系统日志文件,指定从头开始读取,创建syslog

启动 Logstash 进程,将服务器上的 /var/log/messages 历史日志全部抓取出来,在屏幕上显示的同时发送到远程的 Elasticsearch 集群中存储

浏览器访问elastic search-head192.168.154.170:9100,出现syslog

sincedb文件一共6个字段
1.inode编号
2.文件系统的主要设备号
3.文件系统的次要设备号
4.文件中的当前字节偏移量
5.最后一个活动时间戳(浮点数)
6.与此记录匹配的最后一个已知路径
.sincedb文件保存文件读取进度,避免数据冗余读取

这里删除.sincedb文件使其强制从头读取,若之前配置文件出错且读取,也需删除该文件

syslog 插件

通过网络协议(TCP/UDP)接收远程设备发送的 syslog 日志,监听指定端口,以实现采集多个 主机的日志

再次修改es.conf

其他三个sever上修改rsyslog服务的配置文件

去掉以下行的注释,开启udp服务,监听514端口

将这里IP改为sever5IP

重启服务

sever5上出现提示

浏览器上已经可以看到来自sever1(167)的日志信息,其他两个sever相同

多行过滤插件

将属于同一条日志的多行内容合并为一行,避免一条日志被拆分成多条事件

从sever1将被采集的日志文件放到 Logstash 能读取到的位置

新建文件

input { file { ... } }:指定 Logstash 去读取 /var/log/my-es.log 这个文件,并且从文件开头开始读取
codec => multiline:Elasticsearch 的日志通常包含多行报错信,如果一行不是以 [ 开头(negate => true),就把它合并到上一行去,保证一条完整的报错日志不会被拆散
output { elasticsearch { ... } }:指定 Logstash 把处理好的数据发送到 IP 为 192.168.154.167 (sever1)的 Elasticsearch 服务器,并按天建立索引

开始读取

来到浏览器界面,已经出现myeslog,查看中间的数据列表,可以看到原始日志的长度,包含很多换行和报错堆栈,但在列表中只显示为一条记录

grok过滤插件

将非结构化的纯文本日志解析为结构化的字段(key-value),方便后续在 Elasticsearch 中搜索和聚合

sever5下载httpd服务,设置开机自启

写入测试页

模拟请求,访问此站点生成日志信息

‘新建文件

编辑文件

输入(Input):配置 file 插件读取 /var/log/httpd/access_log,是 Apache 服务器记录用户访问请求的标准日志文件,start_position => "beginning" 表示从文件头开始读取历史数据
过滤(Filter):使用了 Grok 插件。利用预定义的正则表达式模式 %{HTTPD_COMBINEDLOG},将一行杂乱的文本日志自动拆解为结构化字段(如 IP、时间、请求路径、状态码等)
输出(Output):将处理好的数据发送到sever1的9200端口的 Elasticsearch 集群,并按天创建索引

运行logstash,开始读取文件

浏览器查看新出现的apachelog,发现原本是一整行文本的日志(message 字段),现在被拆分成了独立的字段

filebeat日志采集

Filebeat 是一个 Elastic Beat组件;一款轻量级的日志数据转发器,用于转发和集中日志数据。Filebeat 作为代理安装在指定的服务器上,会监控指定的日志文件或位置,收集日志事件,并将其转发到Elasticsearch或 Logstash进行索引
Filebeat 的工作原理:启动 Filebeat 时,它会启动一个或多个输入,用于查找指定的日志数据位置。对于 Filebeat 找到的每个日志,Filebeat 都会启动一个 Harvester(收割机)。每个 Harvester(收割机) 会读取单个日志以查找新内容,并将新的日志数据发送到 libbeat,libbeat 会聚合事件,并将聚合数据发送到 Filebeat 配置的输出

filebeat采集web服务日志

官网

https://www.elastic.co/guide/en/beats/filebeat/7.6/filebeat-module-apache.html

下载文件

安装,激活apache模块

编辑apache配置文件

加入正确日志和错误日志的路径

输出到ES:

修改filebeat的配置文件

主机改为sever1

检查配置文件的语法和与ES的连接

启动服务,设置开机自启

输出到logstash

sever5新建文件

监听5044端口

以自动重载模式启动 Logstash,并加载beats.conf

浏览器访问,查看apache

修改filebeat输出

把 Filebeat 发送数据的目标从Elasticsearch改成了 Logstash

成功

kibana数据可视化

Kibana 是 ELK 架构中的可视化展示层,Elasticsearch 负责存数据,Logstash 负责处理数据,Kibana 负责看数据

部署

下载软件包

安装

切目录,修改配置文件

主机为本机

ES节点ip

设置中文

启动服务,设置开机自启

查看端口情况

浏览器访问

定制数据可视化

最下方齿轮标志

索引模式

创建索引模式

搜索apache-*

默认参数

网站访问量

左边菜单第二个

进行压力测试,此时保证sever5上beat.conf处于运行状态(ES按天结算,每天需写入新数据才能有记录)

、保存

访问量排行榜

选择创建的

设置X轴为客户端

因为笔者只用到了sever5做压力测试,所以图看起来是一整块,但从x轴可以看出已经设置成功

保存

创建dashboard

左侧菜单第三个

创建新仪表盘

点击添加

将刚才的两个指标加入

新建

出现仪表盘,保存

ES数据备份与恢复

Elasticsearch(ES)的数据备份与恢复主要通过 快照(Snapshot) 和 恢复(Restore) 机制实现,依赖于共享存储仓库(如本地文件系统、S3、HDFS 等)

配置快照仓库

sever4下载nfs服务端

创建新目录,提升权限

创建新目录,后续 ES 的快照数据都会存放在这个共享目录

内容如图

启动nfs

所有ES节点进行配置

创建新目录

挂载

更新ES节点配置

修改配置文件

修改路径

重启服务

左侧扳手标志打开开发工具(输入命令时其中不能出现中文)

临时禁止副本分片的自动分配,只保留主分片分配能力

ES集群重启之后恢复默认值

通过 API 创建仓库

继续在kibana的开发工具

如果上一步报错的话,回到所有ES节点提升权限,记得检测是否挂载

成功输出

验证仓库是否创建成功

创建快照

备份所有索引,名称自定义(笔者使用了日期)

备份指定索引

成功

查看快照状态

列出仓库中所有快照

查看单个快照详情

监控快照进度

恢复整个快照

将快照中的所有索引恢复到集群(若索引已存在,默认不覆盖,需指定rename_pattern重命名)

笔者这里索引存在,所以报错

避免报错的方法

删除快照

ES集群监控

启用xpack认证

sever1生成证书,生成ES集群通信SSL加密证书,实现xpack.security传输加密,集群节点之间走TLS加密通信

生成 CA 根证书文件 elastic‑stack‑ca.p12,两个选项默认回车

使用刚才的CA根证书,签发集群节点证书,依旧默认回车

把节点证书复制到 ES 配置目录,修改文件所有者为elasticsearch用户

修改配置文件

添加ES 安全加固 ,快照仓库,跨域支持配置

之后重启服务

若重启失败且报错原因为超时,可以按照以下方式防止触发systemd的启动超时机制,以免被系统强制终止

重新加载缓存后再启动服务

拷贝证书到其它集群节点

sever2,3配置

写入

重启服务

等待所有集群节点重启成功后,设置认证账户密码

ES启用xpack之后,其它服务都需要配置认证

head插件:

正常访问无法连接

在url中带上用户名和密码后成功连接

也可以先去访问ES节点,出现登录界面

cerebro访问:

启动

登录

url中加用户名和密码

使用新的密码和用户名

成功

logstash访问:

修改文件

加入用户名和密码

查看是否启动成功

成功

kibana访问:

修改文件

加入用户名和密码

重启服务

查看端口

浏览器访问

使用新密码和用户名

成功

metricbeat监控

首先使用内部检测,然后进入设置模式

倒数第二个

三个ES节点都需要设置

下载软件包

安装,启动xpack认证模块,修改配置文件

修改用户名和密码(图中注释记得去掉)

切目录,修改配置文件

修改IP和用户名,密码

启动服务,设置开机自启

点击“使用Metricbeat监测”,按照指引进行

成功,最后退出设置模式

ES日志采集

sever1安装filebeat,修改elasticsearch的模块配置

写入日志路径

再修改filebeat的配置文件

修改ES的IP和用户名,密码,注意这里冒号后要有空格

启动服务

将文件复制到sever2,3,确保剩余节点也安装filebeat,注意启动模块

浏览器访问,堆栈监测界面点击概览,查看日志

← 返回列表