日志分离与 Graylog 集成

码农资讯网 阅读:218 2025-07-24

本文由 码农资讯网 撰写,介绍如何将 Nginx 日志分离并与 Graylog 日志分析系统集成,实现集中化日志管理、搜索与可视化。通过本教程,你将掌握从 Nginx 配置日志输出到 Graylog 收集与分析的完整流程,是运维工程师必备的实战技能之一。


一、为什么要做日志分离

在实际生产环境中,Nginx 默认将所有访问日志写入同一文件,如 /var/log/nginx/access.log,随着流量增加日志会迅速膨胀:

  • 日志难以快速分析和搜索。

  • 不同服务日志混在一起,不便于追踪问题。

  • 不支持实时告警和可视化分析。

通过 日志分离 + Graylog,可实现:

  • 针对不同域名、服务生成独立日志文件。

  • 使用 Graylog 统一收集日志,支持搜索、过滤和可视化。

  • 配置告警机制快速发现异常。


二、Nginx 日志分离配置

假设我们有两个站点:site1.comsite2.com,可以在 nginx.conf 或独立的虚拟主机配置文件中进行日志分离:

server {
    server_name site1.com;
    access_log /var/log/nginx/site1_access.log main;
    error_log  /var/log/nginx/site1_error.log;
    ...
}

server {
    server_name site2.com;
    access_log /var/log/nginx/site2_access.log main;
    error_log  /var/log/nginx/site2_error.log;
    ...
}

技巧: 通过 log_format 自定义日志格式,便于 Graylog 更好解析:

log_format json_combined escape=json
  '{ "@timestamp": "$time_iso8601", '
  '"remote_addr": "$remote_addr", '
  '"request": "$request", '
  '"status": "$status", '
  '"body_bytes_sent": "$body_bytes_sent", '
  '"http_referer": "$http_referer", '
  '"http_user_agent": "$http_user_agent" }';

然后使用 access_log /var/log/nginx/site1_access.log json_combined;


三、安装与配置 Graylog

Graylog 依赖 ElasticsearchMongoDB

  1. 安装 MongoDB:

    sudo apt install -y mongodb
  2. 安装 Elasticsearch(建议 7.x 版本):

    sudo apt install -y elasticsearch
  3. 安装 Graylog:

    wget https://packages.graylog2.org/repo/packages/graylog-4.0-repository_latest.deb
    sudo dpkg -i graylog-4.0-repository_latest.deb
    sudo apt update && sudo apt install -y graylog-server

启动服务:

sudo systemctl enable graylog-server
sudo systemctl start graylog-server

访问 http://<server_ip>:9000 即可进入 Graylog 控制台。


四、配置日志输入(Input)

在 Graylog Web 控制台:

  1. 进入 System → Inputs

  2. 选择 GELF UDPGELF TCP 输入。

  3. 配置监听端口(如 12201)。

Nginx 可以通过 rsyslogFilebeat 将日志转发至 Graylog。


五、通过 Filebeat 发送日志

推荐使用 Filebeat 将 Nginx 日志推送到 Graylog:

sudo apt install filebeat

编辑 /etc/filebeat/filebeat.yml

filebeat.inputs:
  - type: log
    paths:
      - /var/log/nginx/*.logoutput.logstash:
  hosts: ["127.0.0.1:5044"]

配合 Logstash 将数据转成 Graylog 可解析的 GELF 格式。


六、日志可视化与告警

Graylog 集成 Elasticsearch 索引后,可以:

  • 使用搜索功能快速过滤 5xx 错误。

  • 配置 Dashboard 实时展示流量趋势。

  • 设置告警规则,在请求异常增多时发送通知(Email、Slack 等)。


七、总结

通过 Nginx 日志分离Graylog 集成,我们实现了日志的集中收集、实时分析与可视化,大幅提升运维效率。
更多 Nginx教程运维日志分析方案,请访问 码农资讯网(www.codesou.cn)


标签: Nginx
声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!