当前位置:首页 > 技术 > 正文内容

Graylog分布式日志管理集群搭建指南

访客 技术 2026年7月8日 1
Graylog是一种开源的日志聚合、分析与展示工具,具有低成本和高性能的特点。
Graylog相较于ELK:
Graylog需要将日志源收集到graylog-server进行处理,并使用Elasticsearch存储数据。同时,Graylog自带Web界面,功能类似于Kibana。
集群架构参考:
官方文档链接:Graylog官方文档
部署节点规划:
IP 作用
192.168.122.71 Graylog、MongoDB、Nginx
192.168.122.72 Graylog、MongoDB
192.168.122.73 Graylog、MongoDB
192.168.122.74 Elasticsearch
192.168.122.75 Elasticsearch
192.168.122.76 Elasticsearch
前置准备:

sudo systemctl status firewalld
# 确保防火墙已关闭:Active: inactive (dead)
cat /etc/selinux/config
# 确保SELinux已关闭:SELINUX=disabled
java -version
# 确保JDK版本为1.8或更高
MongoDB集群配置:
MongoDB用于存储Graylog的配置数据(如用户信息和流配置),而非日志数据本身。

# 安装MongoDB
sudo yum install -y mongodb-org

# 创建目录
mkdir -p /work/mongo/{data,log}
touch /work/mongo/log/mongod.log

# 配置mongod.conf
systemLog:
  destination: file
  logAppend: true
  path: /work/mongo/log/mongod.log

storage:
  dbPath: /work/mongo/data
  journal:
    enabled: true

net:
  port: 27017
  bindIp: 0.0.0.0

replication:
  replSetName: rs0
初始化MongoDB集群:

mongo
rs.initiate({
   _id: "rs0",
   members: [{ _id: 0, host: "192.168.122.71:27017" }]
})
rs.add("192.168.122.72")
rs.add("192.168.122.73")
rs.status()

use graylog
db.createUser({
    user: "graylog",
    pwd: "password",
    roles: ["readWrite", "dbAdmin"]
})
Elasticsearch集群部署:
Graylog 3.0要求Elasticsearch版本不低于5.6.13且不支持7.x。

# 下载并解压
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.tar.gz
tar -zxf elasticsearch-6.4.3.tar.gz

# 编辑配置文件
cluster.name: graylog
node.name: graylogXX
node.master: true
node.data: true
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
path.data: /work/elasticsearch-6.4.3/data
path.logs: /work/elasticsearch-6.4.3/logs
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.122.74:9300", "192.168.122.75:9300", "192.168.122.76:9300"]

# 启动服务
bin/elasticsearch -d
Graylog集群安装:

# 安装Graylog
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.0-repository_latest.rpm

# 生成密码密钥
pwgen -N 1 -s 96
echo -n admin | sha256sum

# 编辑配置文件
is_master = true
password_secret = YOUR_GENERATED_SECRET
root_password_sha2 = YOUR_SHA256_PASSWORD_HASH
root_timezone = Asia/Shanghai
http_bind_address = 0.0.0.0:9000
elasticsearch_hosts = http://192.168.122.74:9200,http://192.168.122.75:9200,http://192.168.122.76:9200
mongodb_uri = mongodb://graylog:password@192.168.122.71:27017,192.168.122.72:27017,192.168.122.73:27017/graylog

# 启动服务
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
Nginx负载均衡配置:

upstream graylog_servers {
    least_conn;
    server 192.168.122.71:9000 max_fails=3 fail_timeout=30s;
    server 192.168.122.72:9000 max_fails=3 fail_timeout=30s;
    server 192.168.122.73:9000 max_fails=3 fail_timeout=30s;
}

server {
    listen 9100;
    server_name 192.168.122.71;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Graylog-Server-URL http://$server_name/;
        proxy_pass http://graylog_servers;
    }
}
通过Logstash转发日志到Graylog:
Graylog使用GELF协议接收日志消息,需在Logstash中配置输出插件。

output {
    gelf {
        host => "graylog_ip_address"
        port => 12201
    }
    stdout { codec => rubydebug }
}

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。