Graylog Documentation
对于日志监控业界常用的有ELK、Loki、Graylog等系统,最近在做技术选型时,对比了各个系统的情况,Graylog的一体化方案很符合现有需求。Graylog算是轻量级的ELK,也有很多企业在使用Graylog查看日志和监控业务日志。Graylog中文资料相对较少,在技术选型和开发过程中对资料进行整理。Graylog包含了告警、归档(商业版)、面板、日志查看、Rest API、组管理等功能。本文主要介绍Graylog的相关组件和基本流程。
Graylog: Industry Leading Log Management & SIEM
Graylog 是一个开源的日志聚合、分析、审计、展现和预警工具。
在功能上来说,和 ELK 类似,但又比 ELK 要简单很多。依靠着更加简洁,高效,部署使用简单的优势很快受到许多人的青睐。当然,在扩展性上面确实没有比 ELK 好,但是其有商业版本可以选择。
部署 graylog 最简单的架构就是单机部署,复杂的也是部署集群模式,架构图示如下所示。我们可以看到其中包含了三个组件,分别是 Elasticsearch、MongoDb 和 Graylog。
其中,Elasticsearch 用来持久化存储和检索日志文件数据(IO 密集),MongoDb 用来存储关于 Graylog 的相关配置信息,而 Graylog 来提供 Web 界面和对外接口(CPU 密集)。
数据处理流程:
日志消息通过各种Input输入到Graylog中进行处理;
可以通过Extractors进行正则、Json等形式解析;
通过Streams进行规则匹配分流,对Stream可以配置Pipeline进行数据过滤,最终数据会到到不同的index中;
根据新建index时配置的策略,在elasticsearch的索引中;
告警(Alert)基于Stream进行设置。
官方安装文档https://docs.graylog.org/v1/docs/centos
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
安装jdk
sudo yum -y install java-1.8.0-openjdk-headless.x86_64
安装epel-release
sudo yum -y install epel-release
安装pwgen
sudo yum -y install pwgen
Graylog 5.0与MongoDB 5.x-6.x兼容
配置MongoDB YUM源
vim /etc/yum.repos.d/mongodb-org.repo
添加以下内容
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
安装MongoDB
sudo yum -y install mongodb-org
设置开机自启、启动MongoDB
sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl start mongod.service
sudo systemctl --type=service --state=active | grep mongod
安装Elasticsearch
Elasticsearch 7.10.2是唯一与Graylog 5.0兼容的版本
首先,安装 Elasticsearch GPG 密钥:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
配置Elasticsearch YUM源
vim /etc/yum.repos.d/elasticsearch.repo
添加以下内容
[elasticsearch-7.10.2]
name=Elasticsearch repository for 7.10.2 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
安装Elasticsearch 7.10.2版本
sudo yum -y install elasticsearch-oss
安装完毕需要修改Elasticsearch 7.10.2 配置文件
vim /etc/elasticsearch/elasticsearch.yml
在 elasticsearch.yml 文件末尾追加 内容
cluster.name: graylog
action.auto_create_index: false
设置开机自启、并启动Elasticsearch
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl restart elasticsearch.service
sudo systemctl --type=service --state=active | grep elasticsearch
安装Graylog
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-5.0-repository_latest.rpm
sudo yum install graylog-server
安装完成后,首先生成password_secret密码
牢记这个随机生成的秘钥,最好复制保存下来
是一串加密后的密钥,后续要写进配置文件中的
pwgen -N 1 -s 96
生成root_password_sha2 密码(修改图中 "yourpassword" 为你自己定义的密码)(同样是一串加密后的密钥,也是要写进配置文件的)
echo -n yourpassword | sha256sum
生成密码的时候不能把这个 - 复制进配置文件里,不然登录的时候报错密码有问题
编辑Graylog配置文件
vim /etc/graylog/server/server.conf
修改以下几项(下面需要修改的几组数据,有些前面有 # 的记得把前面的 # 删掉)
#秘钥
#上文中生成的两串密钥,填写在参数后面即可
password_secret = (这里写最上面生成的那串密钥)
root_password_sha2 = (这里写密码的那串密钥,那个 - 横杠不要复制进来)
#时区
root_timezone = PRC
#elasticsearch相关设置
elasticsearch_hosts = http://127.0.0.1:9200
elasticsearch_shards =1
elasticsearch_replicas = 0
#数据库连接设置
mongodb_uri = mongodb://localhost/graylog
#网络相关设置
http_bind_address = 0.0.0.0:9000
设置开机自启、并启动Graylog
sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
sudo systemctl --type=service --state=active | grep graylog
至此,安装结束,接下来就是web界面的操作
登录
http://ip:9000
默认管理员用户名admin,密码为root_password_sha2步骤配置设定的密码
新增日志收集输入任务,首先在“system"中勾选input
因为网络设备的使用syslog协议传输日志,使用udp514,在Inputs中选择“Syslog UDP"
完成后点击launch new input进行下一步编辑
1、勾选global,代表全局,单服务器部署
2、bind address保持0.0.0.0默认,代表收集任何ip地址的日志
3、port 为1514,一般网络设备的 syslog默认配置为514,完成iptables重定向到1514定向到514,linux特权端口问题
iptables -t nat -A PREROUTING -p tcp --dport 514 -j REDIRECT --to 1514
iptables -t nat -A PREROUTING -p udp --dport 514 -j REDIRECT --to 1514
service iptables save
修改图中标注参数,其他保持默认即可
完成配置后,启动input
systemctl stop graylog #停止服务
rpm -qa | grep graylog #显示已安装包
rpm -e --nodeps $(rpm -qa | grep graylog) #卸载包
rpm -qa | grep graylog #检查卸载
rm -rf /etc/graylog/server/server.conf #删除配置文件
find / -name graylog* #查询残余文件,有就删除
systemctl stop elasticsearch #停止服务
rpm -qa | grep elasticsearch #显示已安装包
rpm -e --nodeps $(rpm -qa | elasticsearch) #卸载包
rpm -qa | grep elasticsearch #检查卸载
rm -rf /etc/elasticsearch/elasticsearch.yml #删除配置文件
find / -name elasticsearch* #查询残余文件,有就删除
systemctl stop mongod #停止服务
rpm -qa | grep mongod #显示已安装包
rpm -e --nodeps $(rpm -qa | mongod) #卸载包
rpm -qa | grep mongod #检查卸载
rm -rf /var/log/mongodb/mongod.log #删除配置文件
find / -name mongo* #查询残余文件,有就删除