ELK+FileBeat日志分析系统(正式环境nginx日志)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: ELK+FileBeat日志分析系统(正式环境nginx日志)

在这里插入图片描述

ELK顾名思义就是:

ElasticSearch、Logstash和Kibana
这里还用到一个插件那就是filebeat进行进行采集日志
添加filebeat插件现在已经是非常提倡的做法

Logstash太耗费cpu 内存等资源了,所以可以通过filebeat来取代它

`
原理就是通过filebeat进行采集日志,发送到logstash主机然后logstash主机收集之后进行过滤发送到es进行分析方便搜索,最后用kibana进行图形化展示`

实验环境为正式环境

节点 服务 IP
proxy02 Nginx / Filebeat 192.168.80.3
log2 ElasticSearch / Logstash / Kibana 192.168.80.52

上传所需要的安装包,放到对应的节点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验步骤

log2需要jdk(java)/es/logstash/kibana

如jdk已经安装直接跳过

[root@elasticsearch-master ~]# java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

安装es

tar zxf elasticsearch-6.3.2.tar.gz
mv elasticsearch-6.3.2 /usr/local/es

调整系统文件描述符的软硬限制

vim /etc/security/limits.conf
 末尾添加
 打开文件的软限制,ES要求系统文件描述符大于65535
* soft nofile 655360
 打开文件的硬限制
* hard nofile 655360
 用户可用进程数软限制
* soft nproc 2048
 用户可用进程数硬限制
* hard nproc 4096
 JVM能够使用最大线程数
echo "vm.max_map_count=655360" >> /etc/sysctl.conf
sysctl -p 

配置Elasticsearch服务环境

useradd es
mkdir -p /es/{data,logs}  # 日志及数据存放目录
chown -R es:es /usr/local/es /es # 使用es用户启动时,权限不对也会报错

网络对时

ntpdate ntp.ntsc.ac.cn

重启log2主机

编辑elasticsearch.yml配置文件,ES默认就是集群模式的,所以只有一个节点也是集群模式

vim /usr/local/es/config/elasticsearch.yml 
 取消注释
cluster.name: my-application
node.name: node-1
 添加
node.master: true
node.data: true
 取消注释并修改
path.data: /es/data
path.logs: /es/logs
network.host: 192.168.80.52   # 改为本机ip
discovery.zen.minimum_master_nodes: 1 # master的最少节点数
 取消注释
http.port: 9200

安装Kibana

tar zxf kibana-6.3.2-linux-x86_64.tar.gz
mv kibana-6.3.2-linux-x86_64 /usr/local/kibana

修改Kibana配置文件

vim /usr/local/kibana/config/kibana.yml
 取消注释
server.port: 5601
server.host: "192.168.80.52"
 用来连接es服务
elasticsearch.url: "http://192.168.80.52:9200"

安装Logstash

tar zxf logstash-6.3.2.tar.gz 
mv logstash-6.3.2 /usr/local/logstash

编辑logstash配置文件

vim /usr/local/logstash/config/logstash.yml 
 取消注释
path.config: /usr/local/logstash/config/*.conf  # 配置文件路径
config.reload.automatic: true  # 开启自动加载配置文件
config.reload.interval: 3s   # 自动加载配置文件时间间隔
http.host: "192.168.80.52"  # 改为本机ip

proxy02需要Filebeat/Nginx
Nginx已经安装跳过
安装Filebeat

tar zxf filebeat-6.3.2-linux-x86_64.tar.gz 
mv filebeat-6.3.2-linux-x86_64 /usr/local/filebeat

整合环境
修改filebeat配置文件,将本机的nginx日志文件打标签为nginx,方便elasticsearch来创建索引
proxy02

vim /usr/local/filebeat/filebeat.yml
 添加注释
 filebeat.inputs:
- type: log
 paths:
    - /var/log/*.log
 添加以下内容为inputs配置
filebeat:
  prospectors:
    - type: log
      paths:
        - /usr/local/nginx/logs/access.log
      tags: ["nginx"]
 修改
  enabled: true # 表示以上配置是否生效
 添加注释
 output.elasticsearch:
  hosts: ["localhost:9200"]
 取消注释
output.logstash:
  hosts: ["192.168.80.52:5044"]  # 该ip为logstash的主机ip

log2
新建nginx-logstash.conf文件,用来匹配日志索引

vim /usr/local/logstash/config/nginx-logstash.conf
添加:
input {
  beats {
    port => 5044  # filebeat端口号
  }
}
 
output {
  elasticsearch { 
    hosts => "192.168.80.52:9200"   # 该ip为elasticsearch的ip和端口
    index => "nginx"  # 数据索引名
  }
}

进行启动
log2
启动es

su es
/usr/local/es/bin/elasticsearch

proxy02
启动filebeat

/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml

log2
启动logstash

/usr/local/logstash/bin/logstash -t /usr/local/logstash/config/nginx-logstash.conf

log2
启动kibana

/usr/local/kibana/bin/kibana
各个服务启动之后阻塞信息都是INFO就没问题,遇到WARN是no route的就关闭防火墙或者放行端口

在访问kibana的ip:5601,http://192.168.80.52:5601
在这里插入图片描述
进入管理界面,通过设置索引样式可以匹配出具体索引的数据
在这里插入图片描述
设置在这个索引里使用时间字段来进行过滤数据
在这里插入图片描述
创建成功
在这里插入图片描述
创建可视化图表
在这里插入图片描述
选择样式为条形图样式
在这里插入图片描述
选择为刚才创建的索引数据生成图表
在这里插入图片描述
右上方可保存图表,自动刷新间隔,时间维度
在这里插入图片描述
在这里插入图片描述

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
9天前
|
Windows Python
如何反向读取Windows系统日志EVTX文件?
以下是如何反向读取Windows系统日志EVTX文件
21 2
|
19天前
|
存储 监控 安全
|
16天前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
16 2
|
27天前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
48 1
|
15天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
131 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
232 3
|
3月前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
134 3
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1638 14
|
1月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
35 0
|
1月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
201 0
下一篇
无影云桌面