说明
以下文档已经可以引导部署,如果您看完后还有疑问,或者需要部署支持,可以私信博主,收费部署。
📝版本信息
官网文档:
官网版本建议:
Java ( >= 8 )
Elasticsearch (6.x or 7.x)
MongoDB (4.0, 4.2 or 4.4)
本文安装版本信息如下:
组件 | 版本号 |
---|---|
Graylog | 4.2.10 |
MongoDB | 4.4.14 |
Elasticsearch | 7.10.2 |
jdk | java-1.8.0-openjdk-headless.x86_64 |
⏰注意:
- 版本选择建议按照上述版本进行,或者参考官网安装版本要求。
Graylog
目前还不支持Elasticsearch7.11
以及更高版本。
📗Graylog单机版本
💡系统配置建议
操作系统 | CPU(核) | 内存(GB) | 磁盘(GB) |
---|---|---|---|
CentOs 7.9 64 位 | 8 | 32 | 500G(根据实际日志量) |
磁盘大小:建议单独一块数据盘,并挂载到
/data
目录
📘相关组件
单机版Graylog
安装涉及到的相关软件:
pwgen
:密码生成jdk
:graylog-server
是java
语言MongoDB
:graylog
配置都存储在MongoDB
中,MongoDB
不存储日志Elasticsearch
:graylog
日志存储在Elasticsearch
中
🎫普通安装
🗒️安装步骤
安装jdk
、pwgen
这个两个是graylog
服务的基础,需要先安装。
# 安装JDK
yum install -y java-1.8.0-openjdk-headless.x86_64
# 安装pwd
yum install -y pwgen
安装MongoDB
- 配置yum仓库
# 修改yum仓库配置
vim /etc/yum.repos.d/mongodb-org.repo
# 加入一下内容
[mongodb-org-4.4]
name=MongoDBRepository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
可以修改
4.2
为其他版本,指定mongo
版本。官网给出的为4.2
- 安装MongoDB
# 安装MongoDB
yum -y install mongodb-org
# 查看版本号
mongo --version
sudo systemctl daemon-reload
# 设置开机自启
sudo systemctl enable mongod.service
# 启动MongoDB
sudo systemctl start mongod.service
# 查看状态
sudo systemctl --type=service --state=active | grep mongod
安装Elasticsearch
📢注意:
Elasticsearch7.11
以及更高版本暂不支持。
- 安装Elastic GPG key并配置yum仓库
# 安装Elastic GPG key
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
# 配置yum仓库.这里这种方式跟vim本质一样都是写数据到/etc/yum.repos.d/elasticsearch.repo中,只不过这种更方便
cat > /etc/yum.repos.d/elasticsearch.repo <<EOF
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
- 安装Elasticsearch
# 安装es
yum -y install elasticsearch-oss
# 修改Elasticsearch配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml_default
sudo tee -a /etc/elasticsearch/elasticsearch.yml > /dev/null <<EOT
cluster.name: graylog
action.auto_create_index: false
EOT
# 启动
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl restart elasticsearch.service
sudo systemctl --type=service --state=active | grep elasticsearch
# 查看版本信息
curl -XGET localhost:9200
📢注意:
oss
版本相对于标准版本看起来少了部分功能,但是支撑graylog
完全够用了。官网安装文档中明确是oss
版本。标准版本也可以使用。tee
命令用于读取标准输入的数据,并将其内容输出成文件。
安装graylog
- 安装
# 安装4.2
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.2-repository_latest.rpm
# 安装graylog服务,包含了插件。如果不需要安装插件,只安装sudo yum install graylog-server
sudo yum install graylog-server graylog-enterprise-plugins graylog-integrations-plugins graylog-enterprise-integrations-plugins
📢注意:
- 安装plugin可能会很慢,一般也用不到。可以直接安装
sudo yum install graylog-server
即可。
- 配置密码
配置password_secret
和root_password_sha2
,未配置graylog
无法启动。文件路径:/etc/graylog/server/server.conf
创建password_secret
,需要使用pwgen
工具
# 生成96的安全密码,将生成的密码配置到password_secret即可。
pwgen -1 -s 96
# 示例结果如下
smypspdHATo9vGHTM6VUl4dtIjaI32okPekLCdQ5yiD7iakUwdY9w9LFH9sVA5qNZ8tFmnq0S65QNnLOxYdyyLMbtWg8H7bk
集群部署,多个节点的password_secret
需要相同,部署启动后这个值不要随便修改,修改后数据库中的所有用户的会话都会失效。
创建root_password_sha2
,也就是admin
账号的登录密码,这里我配置成admin
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
- 配置http_bind_address
文件路径:/etc/graylog/server/server.conf
http_bind_address
需要配置外部可访问到graylog
的IP
和地址,可以是域名或IP
。默认为127.0.0.1:9000
。配置成0.0.0.0:9000
即可。
📢注意:
- 如果需要通过
HTTPS
访问,需要Nginx
进行代理。
- 启动
sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
sudo systemctl --type=service --state=active | grep graylog
安装Kibana【非必要】
安装完上述服务,graylog
相关内容已经安装完毕了,但是生产环境下建议对MongoDB
和Elasticsearch
做授权验证,即增加密码。
现在我们安装一个Kibana
方便查看Elasticsearch
中索引情况和问题排查。
由于在前边安装Elasticsearch
的时候已经配置yum
仓库,这里直接使用yum
安装即可。
# 安装kibana-oss
yum install kibana-oss
# 配置
tee -a /etc/kibana/kibana.yml > /dev/null <<EOF
i18n.locale: "zh-CN"
server.port: 5601
server.host: "0"
elasticsearch.hosts: ["http://127.0.0.1:9200"]
EOF
# 启动
sudo systemctl restart kibana.service
sudo systemctl --type=service --state=active | grep kibana.service
📢注意:
Kibana
的版本必须跟Elasticsearch
版本一致,在安装Elasticsearch
的时候我们安装的是oss
版本,那么Kibana
也必须是这个版本。
上述安装的Elasticsearch
和Graylog
的内存均未做调整,正式环境需要按需调整,具体设置可以参考脚本安装中的脚本内容或者找到对应的配置文件修改即可。
📐脚本安装
以上安装步骤在有网的环境可正常安装,离线环境就无法进行,因此在此过程中,参考了网上相关资料,整理了一份离线版安装脚本。以及记录了在安装过程中出现的问题和解决方案。以下脚本内容跟上述手动安装的脚本内容存在部分版本差异,不过不影响使用。
安装包和脚本下载链接:
Graylog Server 4.2.10单机版安装脚本:
链接:https://pan.baidu.com/s/1jX0vKsIJh_Smf1A3hvvnIA
提取码:gcjk
📌说明:
JDK+pwgen+MongoDB+elasticsearch+graylog-server
的RPM
包 已经使用createrepo
方式打包制作成本地yum
源来实现离线yum
安装。
- 其中
ES
和MongoDB
未做加密认证,因为只监听在本地127.0.0.1
不对外暴露
📃脚本内容
安装脚本install.sh
#!/bin/bash
# 离线安装graylog
if ! egrep "7.[0-9]" /etc/redhat-release &>/dev/null; then
printf -- '\033[31m ERROR: 支持Centos 7版本 \033[0m\n'
exit 1
fi
# 目录不存在,创建目录
function mkdirIfNotExist() {
if [ ! -d "$1" ]; then
echo "mkdir -p $1"
mkdir -p $1
fi
}
# elasticsearch数据目录
elasticsearch_dir="/data/elasticsearch"
elasticsearch_xms="4g"
elasticsearch_xmx="4g"
# graylog-server配置
graylog_server_xms="8g"
graylog_server_xmx="8g"
# 关闭SELINUX
sed -i 's/enforcing/disabled/g' /etc/selinux/config
setenforce 0
# 解压安装包
echo "tar -zxvf GraylogServer4.2.10_install.tar.gz -C /opt/"
tar -zxvf GraylogServer4.2.10_install.tar.gz -C /opt/
# yum仓库备份
echo "yum仓库备份操作..."
yum_repo_backup="/opt/yum_repo_backup"
mkdirIfNotExist ${yum_repo_backup}
echo "mv /etc/yum.repos.d/CentOS*.repo $yum_repo_backup"
mv /etc/yum.repos.d/CentOS*.repo $yum_repo_backup
# 复制新增yum源
echo "cp -f /opt/graylog_local.repo /etc/yum.repos.d/"
cp -f /opt/graylog_local.repo /etc/yum.repos.d/
# 优先级设置
echo "echo "priority=1" >> /etc/yum.repos.d/graylog_local.repo"
echo "priority=1" >>/etc/yum.repos.d/graylog_local.repo
# 安装JDK+pwgen
echo "yum install -y java-1.8.0-openjdk-headless.x86_64"
yum install -y java-1.8.0-openjdk-headless.x86_64
echo "yum install -y pwgen"
yum install -y pwgen
# 安装mongodb-server服务
echo "安装mongodb-server服务..."
echo "yum install -y mongodb-org"
yum install -y mongodb-org
#启动mongodb-server服务
systemctl daemon-reload
systemctl enable mongod.service
systemctl start mongod.service
printf -- "\033[32m mongod 状态: \033[0m\n"
systemctl --type=service --state=active | grep mongod
echo "设置防火墙"
firewall-cmd --add-port=27017/tcp --permanent --zone=public
firewall-cmd --reload
printf -- "\033[32m 安装mongodb-server服务完成... \033[0m\n"
# 安装elasticsearch
echo "安装elasticsearch服务..."
echo "yum install elasticsearch -y"
yum install elasticsearch -y
# 单独创建目录用于存放elasticsearch数据
mkdirIfNotExist ${elasticsearch_dir}/data
mkdirIfNotExist ${elasticsearch_dir}/logs
echo "chown -R elasticsearch:elasticsearch /data/elasticsearch"
chown -R elasticsearch:elasticsearch /data/elasticsearch
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml_default
# 修改elasticsearch相关配置文件
echo "修改elasticsearch相关配置文件"
sed -i "s@#cluster.name: my-application@cluster.name: graylog@g" /etc/elasticsearch/elasticsearch.yml
sed -i "s#path.data: /var/lib/elasticsearch#path.data: /data/elasticsearch/data#g" /etc/elasticsearch/elasticsearch.yml
sed -i "s#path.logs: /var/log/elasticsearch#path.logs: /data/elasticsearch/logs#g" /etc/elasticsearch/elasticsearch.yml
# 修改JVM内存大小
echo "修改elasticsearch的JVM内存大小:-Xms${elasticsearch_xms} -Xmx${elasticsearch_xmx}"
sed -i "s/-Xms1g/-Xms${elasticsearch_xms}/g" /etc/elasticsearch/jvm.options
sed -i "s/-Xmx1g/-Xmx${elasticsearch_xmx}/g" /etc/elasticsearch/jvm.options
# 启动elasticsearch服务
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl restart elasticsearch.service
printf -- "\033[32m elasticsearch 状态: \033[0m\n"
systemctl --type=service --state=active | grep elasticsearch
echo "设置防火墙"
firewall-cmd --add-port=9200/tcp --permanent --zone=public
firewall-cmd --reload
printf -- "\033[32m elasticsearch health:\033[0m\n"
curl -s -XGET 'http://127.0.0.1:9200/_cluster/health?pretty=true'
printf -- "\033[32m elasticsearch nodes info:\033[0m\n"
curl -s -XGET 'http://127.0.0.1:9200/_cat/nodes?v'
printf -- "\033[32m 安装elasticsearch服务完成... \033[0m\n"
# 安装graylog-server服务
echo "安装graylog-server服务..."
yum install graylog-server -y
cp /etc/graylog/server/server.conf /etc/graylog/server/server.conf_default
# 修改graylog-server相关配置文件
echo "修改graylog-server相关配置文件..."
sed -i "s/password_secret =/password_secret = 0pAHJtPdZZUb5yHAvFbBezbWAlQwh9CbRX1rshJEVxM0kV7t0SpIgY5q9tLpVEwWLElhG3EtbvQ03mTm9i0HuvWKwlWgWiIJ/g" /etc/graylog/server/server.conf
sed -i "s/root_password_sha2 =/root_password_sha2 = 12ee4180a0c34f7532c7f222161a7d47974835f9251cdb710741792721510bb4/g" /etc/graylog/server/server.conf
sed -i "s@#root_timezone = UTC@root_timezone = Asia/Shanghai@g" /etc/graylog/server/server.conf
sed -i "s@#http_bind_address = 127.0.0.1:9000@http_bind_address = 0.0.0.0:9000@g" /etc/graylog/server/server.conf
sed -i "s/allow_highlighting = false/allow_highlighting = true/g" /etc/graylog/server/server.conf
# 修改graylog-server启动时JVM内存大小
echo "修改graylog-server启动时JVM内存大小:-Xms${graylog_server_xms} -Xmx${graylog_server_xmx}"
sed -i "s/-Xms1g -Xmx1g/-Xms${graylog_server_xms} -Xmx${graylog_server_xmx}/g" /etc/sysconfig/graylog-server
echo "设置防火墙"
firewall-cmd --add-port=9000/tcp --permanent --zone=public
firewall-cmd --reload
#启动graylog-server服务
systemctl restart graylog-server
systemctl enable graylog-server
printf -- "\033[32m graylog 状态: \033[0m\n"
systemctl --type=service --state=active | grep graylog-server
# yum仓库还原,移除主要是为了安装相关软件
echo "cp /opt/yum_repo_backup/CentOS*.repo /etc/yum.repos.d/"
cp /opt/yum_repo_backup/CentOS*.repo /etc/yum.repos.d/
printf -- "\033[32m 安装graylog-server服务完成...账户/密码:admin/admin123graylog \033[0m\n"
:::danger
📌说明:
- 先移除系统默认的yum仓库,安装成功后,再将原来的yum仓库还原。
:::
卸载脚本uninstall.sh
#!/bin/bash
# 卸载graylog
echo "卸载JDK..."
yum remove -y java-1.8.0-openjdk-headless.x86_64
echo "卸载pwgen"
yum remove -y pwgen
echo "卸载graylog-server"
systemctl stop graylog-server
yum remove -y graylog-server
# 安装elasticsearch
echo "卸载elasticsearch服务..."
systemctl stop elasticsearch.service
yum remove -y elasticsearch
# 卸载mongodb-server服务
echo "卸载mongodb-server服务..."
systemctl stop mongod.service
yum remove -y mongodb-org
# 清理文件
#rm -rf /etc/elasticsearch
#rm -rf /data/elasticsearch
#rm -rf /etc/graylog
printf -- "\033[32m 卸载graylog-server相关服务完成... \033[0m\n"
🧫安装过程
# 解压
unzip GrayLog_Server_4.2.10.zip
cd GrayLog_Server_4.2.10
# 执行安装
./install.sh
🧶密码修改
默认账号密码:admin/admin123graylog
命令:
# 1.执行如下交互式命令,输入密码后获取加密后的数据
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
# 2. 加密后的密码修改。修改/etc/graylog/server/server.conf 中root_password_sha2值
# 查看密码
cat /etc/graylog/server/server.conf |grep 'root_password_sha2'
# 3.重启Graylog服务生效
systemctl restart graylog-server
操作示例:
# 查看状态
systemctl --type=service --state=active | grep -E "graylog-server|mongod|elasticsearch"
# 查看graylog-server状态
systemctl status graylog-server
📌注意:
离线安装时,graylog-server
容易起不来,没有日志打印,一般是java
环境变量问题。graylog
启动脚本中使用的是/usr/bin/java
软连接,如果jdk安装有问题,可能会出现该问题,重新安装jdk
即可。
相关文件:
- java:
/usr/bin/java
、/etc/alternatives/java
、/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64/jre/bin/java
- graylog启动文件:
/usr/share/graylog-server/bin/graylog-server
- 该文件中使用了
/usr/bin/java
解决方案:
安装
jdk
,并将jre/bin/java
软连接到/usr/bin/java
ln -s /opt/jdk1.8.0_311/jre/bin/java /usr/bin/java
安装
jdk
时依赖可能存在问题,不同机器需要的依赖不同。如果启动失败按照上述逻辑处理即可。
☘️配置文件说明
普通安装的graylog
的相关配置文件说明
graylog 相关配置文件 | graylog-server.service :/usr/lib/systemd/system/graylog-server.service 启动文件:/usr/share/graylog-server/bin/graylog-server 配置文件:/etc/sysconfig/graylog-server (JVM参数)日志路径:/var/log/graylog-server/server.log 【log4j2.xml中配置】plugin 路径:/usr/share/graylog-server/plugin |
---|---|
Elasticsearch 相关配置文件 | 配置文件:/etc/elasticsearch/elasticsearch.yml JVM配置:/etc/elasticsearch/jvm.options``/etc/sysconfig/elasticsearch 日志目录:/var/log/elasticsearch |
MongoDB 相关配置文件 | 主要配置文件:/etc/mongod.conf 默认日志文件:/var/log/mongodb/mongod.log 【mongod.conf配置】 |
🐳Docker安装
dokcer
安装可以在开发、测试环境中使用。
使用docker-compose
安装,具体docker-compose
的操作查看03 Docker Compose
GitHub:https://github.com/Graylog2/docker-compose/blob/main/open-core/docker-compose.yml
docker-compose.yml
注意:
- 配置文件中挂载了部分目录,需要提前把配置文件放在宿主机才能启动。具体方案是可以先不挂载,启动后将相关文件复制到宿主机后在改
docker-compose
配置挂载目录后重启即可。
version: '3'
services:
mongo:
image: mongo:4.2
volumes:
- /data/graylog-compose/mongo/data:/data/db
networks:
- graylog
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
volumes:
- /data/graylog-compose/elasticsearch/data:/usr/share/elasticsearch/data
- /data/graylog-compose/elasticsearch/config:/usr/share/elasticsearch/config
- /data/graylog-compose/elasticsearch/plugins:/usr/share/elasticsearch/plugins
environment:
- http.host=0.0.0.0
- transport.host=localhost
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true -Xms512m -Xmx512m"
ports:
- "9200:9200"
ulimits:
memlock:
soft: -1
hard: -1
deploy:
resources:
limits:
memory: 1g
networks:
- graylog
graylog:
image: graylog/graylog:4.2
volumes:
- /data/graylog-compose/graylog/data/config/graylog.conf:/usr/share/graylog/data/config/graylog.conf
environment:
- GRAYLOG_PASSWORD_SECRET=somepasswordpepper
- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
- GRAYLOG_HTTP_EXTERNAL_URI=http://10.0.107.158:29000/ # 这里注意要改ip
- GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai #设置时区
- GRAYLOG_ALLOW_HIGHLIGHTING=true #搜索高亮
entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 -- /docker-entrypoint.sh
networks:
- graylog
#restart: always
depends_on:
- mongo
- elasticsearch
ports:
- 29000:9000
- 5044:5044
- 5044:5044/udp
- 1514:1514
- 1514:1514/udp
- 12201:12201
- 12201:12201/udp
networks:
graylog:
driver: bridge
这个文件里唯一需要改动的就是ip
(本来的端口是9000
的,我由于已经占用了9000
端口了,所以我这里把端口改成了29000
)
写完docker-compose.yml
文件,直接docker-compose up -d
它就启动起来
# 密码生成:
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Graylog访问
单机版安装完启动以后,我们就可以通过ip:port
访问对应的Graylog
后台地址了,没有修改密码的情况下,默认的账号和密码是admin/admin
🧵ES查看工具kibana
Graylog
日志存储使用了elasticsearch
,为了方便查看elasticsearch
索引情况,可以安装Kibana
🎫普通安装
在线安装
也可以参考上边的yum
安装方式。
这里的安装内容与脚本中的版本是一致的。
# 下载
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.2-linux-x86_64.tar.gz
# 解压
tar -zxvf kibana-7.10.2-linux-x86_64.tar.gz
# 用户创建
groupadd kibana
useradd -m -g kibana kibana
passwd kibana
chown -R kibana:kibana kibana-7.10.2-linux-x86_64
#
cd kibana-7.10.2-linux-x86_64/config
# 配置替换
sed -i 's@#elasticsearch.hosts: \["http://localhost:9200"\]@elasticsearch.hosts: \["http://127.0.0.1:9200"\]@g' kibana.yml
sed -i 's@#i18n.locale: "en"@i18n.locale: "zh-CN"@g' kibana.yml
sed -i 's@#server.port: 5601@server.port: 5601@g' kibana.yml
sed -i 's@#server.host: "localhost"@server.host: "0"@g' kibana.yml
# 启动
cd ../bin
su kibana
nohup ./kibana & 2>&1
exit