ELFK集群部署(Filebeat+ELK) 本地收集nginx日志 远程收集多个日志

filebeat是一款轻量级的日志收集工具,可以在非JAVA环境下运行。

因此,filebeat常被用在非JAVAf的服务器上用于替代Logstash,收集日志信息。

实际上,Filebeat几乎可以起到与Logstash相同的作用,

可以将数据转发到Logstash、Redis或者是Elasticsearch中进行直接处理。

为什么要用filebeat来收集日志?为什么不直接使用lohstash收集日志?

因为logstash是jvm跑的,资源消耗比较大,启动一个logstash就需要消耗500M左右的内存

(这就是为什么logstash启动特别慢的原因)。

而filebeat只需要10M左右的内存资源。

常用的ELK日志采集方案中,大部分的做法就是将所有节点的日志内容通过filebeat发送到logstash,

lostash根据配置文件进行过滤,然后将过滤之后的文件传输到elasticsearch中,最后通过kibana展示。

filebeat结合logstash带来的好处?

1、通过logstash,具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,

从而减轻Elasticsearch持续写入数据的压力。

2、从其它数据源(例如数据库,s3对象存储或消息传递队列)中提取

3、将数据发送到多个目的地,例如S3,HDFS(hadoop分部署文件系统)或写入文件

4、使用数据流逻辑组成更复杂的处理管道。

先部署ELK集群

4台机器

####ELK1##

防火墙

改名

更改工作目录

#######同步操作:

安装时间工具

yum install ntpdate -y

ntpdate ntp.aliyun.com

任意一台机器输入data 查看时间是否有一致

####ELK1##################

为了方便识别 修改httpd 和NGINX的工作目录

这个NGINX是yum安装的 工作目录如下

编译安装是 /usr/local/nginx/

页面测试一下端口老师上课改过 nginx是8080(没记录改的过程)

本来nginx的默认端口是80

不输入端口默认是80

######如何来本地收集niginx的日志

设置 filebeat 的主配置文件

给nginx的日志赋权权限 能够读取日志内容

改配置之前 先备份filebeat的配置文件,防止失误

配置输出流

5044是filebeat的默认端口

把outputs的下面elastisearch全部注释掉 因为日志只能发送给一个 这里发送给logstash

打开logstash的注释 修改ip地址

eastiscearch注释掉

修改为

删除下面

查看nginx的日志格式

注意空格 和- 输入下面

注意格式对齐

标识为nginx

索引名字为 192168.233.11_nginx

l类型为nginx

日志来源192.168.233.11

####配置logsatsh

5044是filebeat的默认端口

少了input 在后面截图

input {

beats { port => "5044" }

}

output {

if "nginx" in [tags] {

elasticsearch {

hosts => ["192.168.233.12:9200","192.168.233.13:9200"]

index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"

}

}

stdout {

codec => rubydebug

}

}

#启动 filebeat

开启收集日志

nohup ./filebeat -e -c filebeat.yml > filebeat.out &

nohup 表示在后台记录执行命令的过程

./filebeat 运行文件

-e 使用标准输出的同时进行syslog文件输出

·c 指定配置文件

执行过程输出到filebeat.out这个文件当中,& 后台运行

开一台elk1、查看输出日志的文件

查看日志发现报错

指定配置文件,再指定到数据工作目录

logstash -f file_nginx.conf --path.data /opt/test1 &

这个命令将启动logstash并使用file_nginx.conf作为配置文件,--path.data参数指定了logstash的数据目录为/opt/test1。&符号表示在后台运行logstash

c测试下

索引已经创建成功

kabana也有索引

左边 选定字段

logstash通过filebeat远程收集多个日志

服务器装 mysql nginx httpd

在mysql 上192.168.233.21

日志目录一生成

cat mysql_general.log

目录

创表数据日志已生产

装 nginx httpd

改下端口 防止端口冲突

拖入安装包filebeat

j解压

改名

备份

把这之间注释掉的信息 全部删除 留着没用

注释掉下一个output

打开注释,输入Lostash的IP

开一台mysql、

查看NGINX的日志目录路径格式 给NGINX日志目录授权

查看httpd目录路径格式 给httpd 日志目录授权

查看MySQL的日志目录路径格式,授权

  • type: log

enabled: true

paths:

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

tags: ["nginx"]

fields:

service_name: 192.168.233.21_nginx

log_type: nginx

from: 192.168.233.21

  • type: log

enabled: true

paths:

  • /etc/httpd/logs/access_log

  • /etc/httpd/logs/error_log

tags: ["httpd"]

fields:

service_name: 192.168.233.21_httpd

log_type: httpd

from: 192.168.233.21

  • type: log

enabled: true

paths:

  • /usr/local/mysql/data/mysql_general.log

tags: ["mysql"]

fields:

service_name: 192.168.233.21_mysqld

log_type: mysql

from: 192.168.233.21

标识方便识别 再次修改下

在ELK1 上192.168.233.11

收日志到目录 /opt/log

接着上面 这里的标识也改下

先到mysql上 启动felibeat文件往loastash上发

再到elk1上

指定配置文件,再指定到数据工作目录

这个命令将启动logstash并使用file_nginx.conf作为配置文件,--path.data参数指定了logstash的数据目录为/opt/test2。&符号表示在后台运行logstash

vim filebeat.yml

优化性能:

pipeline.workers 2

该参数用于设置 Logstash 处理事件的工作线程数量。默认值是核心数。

在一个拥有两个核心的系统上,可以设置为 2,以充分利用系统资源。

pipeline.batch.size 125

该参数定义了从输入中检索事件的批量大小,然后将这批事件发送到过滤器和工作线程。

默认值是 125。你可以根据你的需求和系统性能进行调整。

pipeline.batch.delay 50

该参数定义了在轮询下一个事件之前等待的时间,以确保形成一个适当大小的事件批量。

默认值是 50 毫秒。你可以根据实际情况进行调整。

相关推荐
研华嵌入式14 分钟前
Ubuntu 20.04 停止支持怎么办?
linux·运维·ubuntu
是阿威啊26 分钟前
【第二站】本地hadoop集群配置yarn模式
大数据·linux·hadoop·yarn
野熊佩骑32 分钟前
一文读懂运维监控之 Ubuntu22.04安装部署Zabbix监控
linux·运维·服务器·网络·ubuntu·zabbix·database
双层吉士憨包1 小时前
Claude账号共享教程分享
运维·服务器
大聪明-PLUS1 小时前
了解 Docker:镜像是如何创建的
linux·嵌入式·arm·smarc
lllsure1 小时前
Linux 日志管理
linux·运维·服务器
haluhalu.2 小时前
Linux系统下进程池设计与实现详解
linux·运维·服务器
虹梦未来2 小时前
【运维】Ubuntu2404使用新风格更新镜像源
运维·服务器
小麦嵌入式2 小时前
Linux驱动开发实战(十三):RGB LED驱动并发控制——自旋锁与信号量对比详解
linux·c语言·驱动开发·stm32·单片机·嵌入式硬件·物联网
一只旭宝2 小时前
Linux专题四:静态库,动态库,进程进阶以及fork()函数初步
linux·运维