Linux怎么安装Graylog日志管理_Linux Graylog部署配置教程【高级】

梦枫小哥_4434

梦枫小哥_4434

2026-03-31

781人浏览

原创

graylog服务无法启动或web不可访问,需依次检查并解决依赖组件缺失、配置错误及端口冲突问题:确保openjdk 11+、mongodb 5.0+、elasticsearch 7.x(如7.17.9)正确安装并运行;配置es禁用安全模块并监听0.0.0.0:9200;生成合法password_secret与root_password_sha2;设置graylog.conf中rest/web监听地址、数据库与es连接;开放防火墙9000/9200/12201端口;可选docker compose快速部署;最后通过/api/system/health验证各组件状态为up。

linux怎么安装graylog日志管理_linux graylog部署配置教程【高级】

如果您在Linux系统上尝试部署Graylog日志管理系统,但服务无法启动或Web界面不可访问,则可能是由于核心依赖组件缺失、配置参数错误或端口冲突所致。以下是解决此问题的步骤:

一、安装并启动基础依赖服务

Graylog运行依赖OpenJDK、MongoDB和Elasticsearch三个核心组件,必须按顺序安装并确保服务正常运行。各组件版本需严格匹配:OpenJDK 11+、MongoDB 5.0+、Elasticsearch 7.x(Graylog 4.x/5.x不兼容ES 8.x或ES 6.x)。

1、安装OpenJDK 11并验证版本:
sudo apt update && sudo apt install -y openjdk-11-jre-headless
java -version | grep "11."

2、安装MongoDB 5.0官方源并启用服务:
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo apt update && sudo apt install -y mongodb-org
sudo systemctl enable mongod && sudo systemctl start mongod

3、安装Elasticsearch 7.17.9(经Graylog 5.2验证兼容性最佳):
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.17.9-amd64.deb
sudo dpkg -i elasticsearch-oss-7.17.9-amd64.deb
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch && sudo systemctl start elasticsearch

二、配置Elasticsearch安全与网络参数

Elasticsearch默认禁用远程访问且未配置Graylog所需索引模板权限,若跳过此步将导致Graylog启动后报“Index creation failed”或“Connection refused”。必须显式启用HTTP访问并关闭X-Pack安全模块(Graylog OSS版不支持ES内置安全认证)。

1、编辑Elasticsearch主配置文件:
sudo nano /etc/elasticsearch/elasticsearch.yml

2、修改以下关键项(取消注释并赋值):
network.host: 0.0.0.0
http.port: 9200
xpack.security.enabled: false
discovery.type: single-node

3、重启Elasticsearch使配置生效:
sudo systemctl restart elasticsearch

三、生成Graylog密钥与管理员凭证

Graylog要求password_secret与root_password_sha2均非空且符合强度要求,否则服务拒绝启动。password_secret用于加密内部令牌,root_password_sha2为管理员密码SHA256哈希值,二者必须通过命令行生成,不可手动填写明文或弱哈希。

1、生成32位随机password_secret:
pwgen -N 1 -s -y 32

2、生成管理员密码哈希(示例密码为MyGr@yL0g2026):
echo -n "MyGr@yL0g2026" | sha256sum | cut -d' ' -f1

3、将输出结果分别填入配置文件对应字段,严禁使用空格、中文、制表符或换行符。

四、配置Graylog主配置文件graylog.conf

配置文件位于/etc/graylog/server/server.conf(RPM安装)或$GRAYLOG_HOME/misc/graylog.conf(源码编译),必须精确设置网络监听、数据库连接及集群标识,任一地址或端口错误都将导致API不可达或UI白屏。

1、设置REST与Web接口监听地址:
rest_listen_uri = http://0.0.0.0:9000/api/
web_listen_uri = http://0.0.0.0:9000/

2、配置MongoDB连接字符串(确保数据库名含下划线且无特殊字符):
mongodb_uri = mongodb://localhost:27017/graylog_production

3、配置Elasticsearch主机列表(多个节点用逗号分隔):
elasticsearch_hosts = http://localhost:9200

4、确认时区与消息保留策略(避免因时区错位导致日志时间戳异常):
timezone = Asia/Shanghai
rotation_strategy = count
max_docs_per_index = 20000000

五、启用防火墙放行关键端口

Linux系统默认启用ufw或firewalld,若未开放Graylog监听端口,外部设备将无法访问Web界面,且日志输入(如GELF UDP 12201)会静默丢弃。必须显式允许TCP 9000、TCP 9200、UDP 12201三个端口,禁止仅开放9000而遗漏其他端口。

1、对于UFW防火墙:
sudo ufw allow 9000/tcp
sudo ufw allow 9200/tcp
sudo ufw allow 12201/udp
sudo ufw reload

2、对于firewalld防火墙:
sudo firewall-cmd --permanent --add-port=9000/tcp
sudo firewall-cmd --permanent --add-port=9200/tcp
sudo firewall-cmd --permanent --add-port=12201/udp
sudo firewall-cmd --reload

六、使用Docker Compose快速覆盖部署

当传统包管理方式出现依赖冲突或路径污染时,Docker Compose提供隔离、可复现的部署环境。该方案绕过系统级Java/Mongo/ES安装,直接拉取官方镜像并绑定数据卷,适合测试环境或CI/CD流水线集成。

1、创建docker-compose.yml文件,内容如下:
version: '3'
services:
  mongo:
    image: mongo:5.0
    volumes:
      - ./data/mongo:/data/db
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.17.9
    environment:
      - http.host=0.0.0.0
      - transport.host=localhost
      - network.host=0.0.0.0
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - ./data/elasticsearch:/usr/share/elasticsearch/data
  graylog:
    image: graylog/graylog:5.2
    environment:
      - GRAYLOG_PASSWORD_SECRET=your_32_char_secret_here
      - GRAYLOG_ROOT_PASSWORD_SHA2=your_hashed_admin_password
    ports:
      - "9000:9000"
      - "12201:12201/udp"

2、执行启动命令:
docker-compose up -d

3、检查容器状态:
docker-compose ps | grep -E "(Up|Exit)"

七、验证Graylog服务健康状态

服务启动后需通过多维度验证其内部组件连通性,仅检查进程存在不足以说明功能正常。Graylog提供内置健康检查端点,返回JSON结构化状态,其中“running”字段必须为true,“elasticsearch”与“mongodb”字段的“status”必须为“up”。

1、等待服务初始化完成(首次启动约需90秒):
sleep 90

2、调用健康检查API:
curl -s http://localhost:9000/api/system/health | python3 -m json.tool

3、重点确认以下字段值:
"cluster_id": "xxxxxx",
"started_at": "2026-03-30T23:45:12.123Z",
"elasticsearch": {"status": "up", "version": "7.17.9"},
"mongodb": {"status": "up", "version": "5.0.22"}

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

2035

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

2982

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

1016

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

3379

7

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

2023.06.14

3483

6

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

2023.10.30

775

4

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

2023.06.14

3483

6

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

2023.10.30

775

4

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1638

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习