对于日志监控业界常用的有ELK、Loki、Graylog等系统,最近在做技术选型时,对比了各个系统的情况,Graylog的一体化方案很符合现有需求。Graylog算是轻量级的ELK,也有很多企业在使用Graylog查看日志和监控业务日志。Graylog中文资料相对较少,在技术选型和开发过程中对资料进行整理。Graylog包含了告警、归档(商业版)、面板、日志查看、Rest API、组管理等功能。本文主要介绍Graylog的相关组件和基本流程。
官方:https://docs.graylog.org/
Graylog 开源版官网: https://www.graylog.org/
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
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
sudo yum -y install java-1.8.0-openjdk-headless.x86_64
sudo yum -y install epel-release
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 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
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
以下是我随机生成的,示例,不要使用
6Z06fZHU2DwuOf9X8fhnvphCd3OM7oqwLECRRcejvjpieSvVtwu08yHYHIKDi56bAxRvtCOZ3xKKiBqyt00XYCgVa0oETB0L
生成root_password_sha2 密码
echo -n yourpassword | sha256sum
修改图中yourpassword为你自己定义的密码
牢记生成的密钥
编辑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界面的操作
浏览器输入服务器IP地址登录web界面
http://ip:9000
默认管理员用户名admin,密码为root_password_sha2步骤配置设定的密码
目前graylog没有中文版,英文不好的使用edge打开,翻译网页
新增日志收集输入任务
因为网络设备的使用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
网络设备侧进行日志服务器配置
注意,此处有大坑
华为交换机向日志服务器发送日志默认以UTC时间发送,会导致Graylog中收集的日志数据比实际的少8小时
所以交换机侧进行如下配置
info-center loghost x.x.x.x local-time
配置完毕回到Graylog界面,点击show received message,即可看到收集的日志信息
卸载graylog
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* #查询残余文件,有就删除
卸载ES
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* #查询残余文件,有就删除
卸载MONGODB
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* #查询残余文件,有就删除