ELK7.x日志系统搭建 2. Nginx、Cluster等日志收集

简介: ELK7.x日志系统搭建 2. Nginx、Cluster等日志收集

ELK7.x日志系统搭建 2. Nginx、Cluster等日志收集

接着上篇文章,我们把环境搭建好后,我们需要对一些应用程序进行日志收集了,方便我们对整个项目的监控和管理。虽然这种东西在单节点项目上带来的好处比带来的成本要低的低,但是对于我们开发一些分布式的项目是有极大的便利的。

我们想象一个场景:为了高性能我们引入了负载均衡 + N个服务器副本,如果程序出现错误,我们首先得先定位到是哪台服务器,然后定位到哪个程序,最后查看对应日志,开始排错。这样中心化系统的好处就体现出来了。

我们接下来用前面的两个节点分别部署了 nginx,然后使用 logstash 收集信息到 es

Logstash说明

logstash 分为三个处理阶段,inputfilteroutput

特点:

  • 输入和输出可以是标准输入输出
  • 可以建立TCP或者UDP连接进行监听获取信息
  • 可以从rediskafka获取信息

在我们进行日志收集的时候,面对各种应用程序日志输出都需要输送到 ES 里面,但是日志文件的格式化输出方式却是各有千秋。那么这个时候我们收集日志只有两种处理方式:

  • 不修改源日志格式 简单的说就是在logstash中转通过 grok方式进行过滤处理,将原始无规则的日志转换为规则日志(Logstash自定义日志格式)

这样 Logstash 会通过 grok 来处理分析,对线上业务无任何影响;但是在高压环境下,Logstash 中的 grok 会成为性能瓶颈,最终会阻塞正常的日志输出,所以,在 Logsatsh 中,尽量不要使用 grok 过滤功能,这样就等于可以跳过 filter 阶段

  • 修改源日志格式 将需要的日志格式进行规则输出,logstash只负责日志的收集和传输,不对日志做任何过滤处理(生产者自定义日志格式)

这个就是在收集生产日志的过程中,自定义(format)日志格式,虽然有一定的工作量,但是优势很明显,因为是实现定义好了日志输出格式, logstash 那就只负责收集和传输了,这样大大减轻了 logstash 负担,可以更高效的收集和传输日志;是企业首选方案

我们的例子都以配置好的日志格式进行传输,有兴趣了解 grok 的去官网看看

收集多节点nginx日志

  • 配置nginx日志输出
##
# Log Format
##
log_format json '{"@timestamp":"$time_iso8601",'
                    '"@version":"1",'
                    '"client":"$remote_addr",'
                    '"url":"$uri",'
                    '"status":"$status",'
                    '"domain":"$host",'
                    '"host":"$server_addr",'
                    '"size":$body_bytes_sent,'
                    '"responsetime":$request_time,'
                    '"referer": "$http_referer",'
                    '"ua": "$http_user_agent"'
        '}';
##
# Logging Settings
##
access_log /var/log/nginx/access.log json;
error_log /var/log/nginx/error.log error;
  • 配置 logstash

vi ./conf.d/nginx-access.conf

input{
    file {
        path => "/var/log/nginx/access.log"
        type => "nginx-access-log"
        start_position => "beginning"
        stat_interval => "2"
        codec => "json" #  通用选项,用于输入数据的编解码器。 可以直接使用json做解码
    }
}
output{
   elasticsearch{
        hosts => ["192.168.179.124:9200"]        #elasticsearch服务器地址
        user => "elastic"
        password => "${ES_PWD}"
     index =>"nginx-access-log-%{+YYYY.MM.dd}.log"
   }
}
  • 测试配置文件

./bin/logstash -f conf.d/ -t

Sending Logstash logs to /home/test/logstash-7.6.0/logs which is now configured via log4j2.properties
[2020-06-26T09:19:40,683][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2020-06-26T09:19:43,158][INFO ][org.reflections.Reflections] Reflections took 55 ms to scan 1 urls, producing 20 keys and 40 values 
Configuration OK
[2020-06-26T09:19:49,466][INFO ][logstash.runner          ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

成功,可以启动了

收集es集群日志

我们把日志配置到了 /elk/logs 下面,可以看到, es 日志直接就是 json 版本的,就不需要我们进行 filter

  • 配置 logstash
input{
    file {
        path => "/elk/logs/elk-application_server.json"
        type => "elk-log"
        start_position => "beginning"
        stat_interval => "2"
        codec => "json"
    }
}
output{
   elasticsearch{
        hosts => ["192.168.179.124:9200"]        #elasticsearch服务器地址
        user => "elastic"
        password => "${ES_PWD}"
        index =>"elk-log-%{+YYYY.MM.dd}.log"
   }
}

两个节点,每个都安装了 nginx ,都编写了配置文件,我们需要在 kibana 上创建索引模式等等等,最后我们看一下效果

本来是准备全套收集一下日志,但是机器不允许, 本身 es 这套就比较费内存,加上机器上还有一些其他的,差点机器连 logstash 都跑不起来,所以更多姿势需要大家查阅一下官网或者其他文档资料哦。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
7月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
1199 64
搭建ELK日志收集,保姆级教程
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
900 90
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
网络安全
window系统下安装elk
本文介绍了Elasticsearch、Logstash和Kibana(统称ELK栈)8.17.3版本的安装与配置流程。主要内容包括: - **Elasticsearch**:详细描述了从下载到启动服务的步骤,以及`elasticsearch.yml`的关键配置项,并提供了Postman操作示例及常见问题解决方案。 - **Logstash**:涵盖了插件安装、配置文件`logstash.conf`编写及其启动命令。 - **Kibana**:讲解了下载、配置`kibana.yml`和启动过程,确保与Elasticsearch正确连接。
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
1336 3
|
存储 监控 安全
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
520 9
|
11月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1063 54