Centos7 deploy graylog3.1

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
 
架构注意事项

Graylog节点应重点关注CPU功能。
Elasticsearch节点应具有尽可能多的RAM和磁盘空间,提供日志文件的持久化存储和检索。
MongoDB只是存储Graylog的元信息和配置数据,不需要很多资源。

本文采用单机最小化安装
在这里插入图片描述
 
 
 

一、基础配置

[root@graylog-server ~]# sed -i "SELINUX=enforcing?SELINUX=disabled?g" /etc/selinux/config
[root@graylog-server ~]# yum -y install java-1.8.0-openjdk-headless.x86_64
[root@graylog-server ~]# yum -y install epel-release
[root@graylog-server ~]# yum -y install pwgen
[root@graylog-server ~]# timedatectl set-timezone Asia/Shanghai
[root@graylog-server ~]# vim /etc/chrony.conf
server ntp.aliyun.com iburst

二、Install mongoDB

[root@graylog-server ~]# vim /etc/yum.repos.d/mongodb-org.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
[root@graylog-server ~]#
[root@graylog-server ~]# yum -y install mongodb-org		#安装最新版
[root@graylog-server ~]# mkdir -p /data/mongodb         #创建mongoDB数据目录
[root@graylog-server ~]# vim /etc/yum.conf	            #防止yum update mongodb版本升级,固定版本
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools

修改mongoDB 数据存放路径

[root@graylog-server ~]# vim /etc/mongod.conf
storage:
  dbPath: /data/mongodb

[root@graylog-server ~]# chown -R mongod: /data/mongodb/
[root@graylog-server ~]# systemctl start mongod    # 会自动加入开机自启,无需enable

设置mongodb安全登录验证账号,安全考虑

[root@graylog-server ~]# mongo
> use admin						#一定要进入admin
> db.createUser({user:'root',pwd:"123456",roles:["root"]})	#先创建超级管理员
Successfully added user: { "user" : "root", "roles" : [ "root" ] }
>
> show users
{
	"_id" : "admin.root",	#此为登录验证的库及用户
	"userId" : UUID("0233926d-4c05-4ec0-b613-6ff86a0cc578"),
	"user" : "root",
	"db" : "admin",
	"roles" : [
		{
			"role" : "root",	# 权限
			"db" : "admin"
		}
	],
	"mechanisms" : [
		"SCRAM-SHA-1",
		"SCRAM-SHA-256"
	]
}
>

再创建graylog DB user,用于graylog连接使用

> use graylog					# 创建库并进入库,一定要进入此库才创建
switched to db graylog
> db.createUser({user:"graylog",pwd:"123456",roles:["readWrite"]})
Successfully added user: { "user" : "graylog", "roles" : [ "readWrite" ] }
>
> show users
{
	"_id" : "graylog.graylog",		# 此为登录验证的库及用户
	"userId" : UUID("01d98759-335c-4f01-838e-bf1d706c00aa"),
	"user" : "graylog",
	"db" : "graylog",
	"roles" : [
		{
			"role" : "readWrite",	# 权限
			"db" : "graylog"
		}
	],
	"mechanisms" : [
		"SCRAM-SHA-1",
		"SCRAM-SHA-256"
	]
}
>

开启mongodb安全认证

security:
  authorization: enabled
  
[root@graylog-server ~]# systemctl restart mongod

测试登录

[root@graylog-server ~]# mongo -u root -p 123456 --authenticationDatabase admin
[root@graylog-server ~]# mongo -u graylog -p 123456 --authenticationDatabase graylog

三、Install Elasticsearch

[root@graylog-server ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
[root@graylog-server ~]# vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/oss-6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

[root@graylog-server ~]# yum -y install elasticsearch-oss		# 安装最新版本

修改Elasticsearch配置

[root@graylog-server ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: graylog
path.data: /data/elasticsearch		# 数据保存路径
action.auto_create_index: false		# 最后一行添加


[root@graylog-server ~]# mkdir /data/elasticsearch
[root@graylog-server ~]# chown -R elasticsearch: /data/elasticsearch/ 
[root@graylog-server ~]# systemctl start elasticsearch
[root@graylog-server ~]# systemctl enable elasticsearch

四、Install graylog

[root@graylog-server ~]# rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.1-repository_latest.rpm 
[root@graylog-server ~]# yum -y install graylog-server

PS: password_secret和root_password_sha2设置是强制性的,没有它们,Graylog将无法启动
 
生成password_secret密码

[root@graylog-server ~]# pwgen -N 1 -s 96
d0ns2jgaRAOYDMelv6YWgh5m7YopDS00e266jqDLfMPMGvjVb5VaEi6TPk6hUUmaJXtM6VlJ62DHt3utPZhlx715wBcGzKoG

生成root_password_sha2密码 (Web登录密码)

[root@graylog-server ~]# echo -n "123456" | sha256sum | cut -d" " -f1
9d36cb9d20d5262d868ce87baa69b048bfc65a6d02feaef35f46a7e467adace9

修改graylog配置

[root@graylog-server ~]# vim /etc/graylog/server/server.conf

在这里插入图片描述

root_timezone = Asia/Shanghai
mongodb_uri = mongodb://graylog:123456@localhost:27017/graylog
http_bind_address = 0.0.0.0:9999						#安全考虑,修改端口
elasticsearch_hosts = http://127.0.0.1:9200
elasticsearch_shards = 1

PS: 如果mongodb用户密码使用了特殊字符,则连接mongodb使用%+字符的十六进制数;如:@ = %40

[root@graylog-server ~]# systemctl start graylog-server
[root@graylog-server ~]# systemctl enable graylog-server
[root@graylog-server ~]# firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=9999
[root@graylog-server ~]# firewall-cmd --permanent --add-port=9999/tcp  #添加端口才能转发,暂时不知道原因
[root@graylog-server ~]# firewall-cmd –reload

web login
http://IP:80       #做了端口转发

默认管理员用户名admin,密码为root_password_sha2配置设定的密码
在这里插入图片描述
在这里插入图片描述

五、Install Graylog Sidecar

以下操作在后端Server上执行(以收集graylog server为列)

Graylog Sidecar是一个轻量级配置管理系统,适用于不同的日志收集器,也称为后端。Graylog节点充当包含日志收集器配置的集中式集线器。在支持的消息生成设备/主机上,Sidecar可以作为服务(Windows主机)或守护程序(Linux主机)运行。运行在不同机器上进行日志的采集并发送到graylog server
在这里插入图片描述
1、安装Sidecar、filebeat
 
PS:我用的是filebeat进行日志采集,如果用nxlog进行采集,同样的需要安装nxlog程序
 
sidecar download url:https://github.com/Graylog2/collector-sidecar/releases
filebeat download url:https://www.elastic.co/cn/downloads/beats/filebeat

安装

[root@graylog-server ~]# rpm -ivh graylog-sidecar-1.0.2-1.x86_64.rpm
[root@graylog-server ~]# rpm -ivh filebeat-7.1.0-x86_64.rpm

手动创建server_api_token
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@graylog-server ~]# vim /etc/graylog/sidecar/sidecar.yml
server_url: "http://xxx.xxx.xxx.xx:9999/api/"	#graylog server ip:port/api/
server_api_token: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
node_name: "Server_name"
update_interval: 10
send_status: true

 
说明:
server_url: 这个填 Graylog-server 的地址
server_api_token: 当前这台 Sidecar 自己的秘钥
node_name: 用于辨识是从哪个 Sidecar node 发来的消息。这个很有必要设置一下,做图表统计会用到。
update_interval: 多久 Sidecar 向 Graylog 报告一次自己的运行状况,以及抓取最新下发的配置文件。没明说单位,推测是秒。
send_status: 是否向 Graylog 报告自己的状态信息。
 

root@graylog-server ~]# graylog-sidecar -service install
[root@graylog-server ~]# systemctl start graylog-sidecar

在这里插入图片描述
2、配置日志收集
 
2.1、配置input
 
PS:我用的是filebeat进行日志采集,所以选择的是Beats
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
 
说明:
Title: Input 的标题。这个可以随便写,稍后可以改
Bind Address: 是否固定监听 IP。比如写成本机内网 IP,或者一个域名,默认 0.0.0.0 代表不固定
Port: 监听哪个端口。也就是 Inputs 开放哪个端口用于接收 Sidecar 的日志推送,稍后可以改
Recive Buffer Size: 最大允许的接收器缓存大小。相当于一次超过这个数值的日志包推过来会失效,通常来说基本达不到这个极限,单位 Byte,默认1048576,也就是 1MB,稍后可以改
No. of worker threads: 这个用于指定有多少个线程在处理日志接收。超大并发量的可以酌情调整,稍后可以改
在这里插入图片描述
2.2、配置Filebeat
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建一个graylog server var,后续client可以直接调用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# Needed for Graylog
fields_under_root: true
fields.collector_node_id: ${sidecar.nodeName}
fields.source: ${sidecar.nodeName}
fields.gl2_source_collector: ${sidecar.nodeId}

filebeat.inputs:
- input_type: log
  paths:
    - /var/log/graylog-server/server.log
    - /var/log/mongodb/mongod.log
  type: log
output.logstash:
   hosts: ["${user.Graylog_IP}"]
path:
  data: /data/graylog-sidecar/collectors/filebeat/data
  logs: /data/graylog-sidecar/collectors/filebeat/log

PS:fields.source: ${sidecar.nodeName} #一定要留意加入这行配置!否则日志展示界面 “Source” 会提示 “unknown”
 
点击右上角的 Administration ,进入管理界面,找到刚连接上来的后端Sidecar,点击那个 filebeat 勾选上,在右侧下拉菜单中点击 Configuration,点击我们刚写好的配置文件

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
这时候我们就能在 Search 页面看到日志进来的消息了
在这里插入图片描述
PS:自动在graylog server生成5044 port
firewall-cmd --permanent --add-port=5044/tcp,后续client与5044 connection

在这里插入图片描述
如果使用syslog收集日志请查看我的另外一篇文章syslog collect log

六、日志规整

 
1、添加Search数据到dashboard
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、新建 Pipeline
 
点击 System 选项卡,找到“Pipeline”。
点击“Add new pipeline”:
Title: Pipeline 的标题.稍后可以改。
Description: 描述。稍后可以改。
 
创建后,点击右上角的 “Manage rules” ,点击 “Create Rule”,创建一条新的 Pipeline 规则
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

// 这个 fields 的名称写法跟你在 search 页面上看到的名字一致

rule "funciton RemoveFields"      // 规则名,起头句。
when                          // 一个判断条件,逻辑很简单。
    has_field("message")   //当存在 fields("message") 时,也可以设为其他的 fields。
then
// 以下为删除linux fields
    remove_field("@metadata_beat");
    remove_field("@metadata_type");
    remove_field("@metadata_version");
    remove_field("@timestamp");
    remove_field("agent_ephemeral_id");
	remove_field("agent_hostname");
    remove_field("agent_id");
    remove_field("agent_version");
	remove_field("beats_type");
	remove_field("collector_node_id");
    remove_field("ecs_version");
	remove_field("log_offset");
	//以下为删除windows fields
	remove_field("beat_hostname");
	remove_field("beat_name");
	remove_field("beat_version");
	remove_field("computer_name");
	remove_field("event_data_Binary");
	remove_field("event_id");
	remove_field("keywords");
	remove_field("level");
	remove_field("process_id");
	remove_field("provider_guid");
	remove_field("record_number");
	remove_field("source_name");
	remove_field("tags");
	remove_field("thread_id");
end

在这里插入图片描述
这时候还没有分配让 Pipeline 处理哪个信息流。这里回到 Manage Pipeline 页面,点击右侧的 Edit
在这里插入图片描述
在新页面中,点击 Edit connections,点击你要处理的信息流,比如 All message
在这里插入图片描述在这里插入图片描述然后点击 Add new stage,指定 Pipeline 处理这个信息流时的执行步骤
 
说明:
Stage: 步骤顺序。输入 “1” ,表示第一步执行本操作
Stage rules: 执行哪一个 “Rule”。在下拉里选择刚才写的脚本,表示执行 function RemoveFields 这个 rule,稍后可以改。
Continued processing next stage when: 当满足什么条件时,流转到下一 Stage(不是当前 Stage)操作。因为 Stage 可以建立多个,单个 Stage 里的 Rule 也是可以多选的,所以这里有两个选框:
○ All rules on this stage match the message: “所有的rule都执行完毕后,进行下一个 Stage”
◎ At least one of the rules on this stage matches the message: “只要有一个rule执行完毕,就进入下一个 Stage”
因为我们只有一个 Rule 也只有一个 Stage,所以这里选什么都没差,有多 Stage 需求的可以注意一下这里的配法。
 

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
Stage 配好后,Pipeline 是直接生效的,不需要点什么操作了.
这时候回到 Search 界面,随便点击一条最新的消息展开看,可以看到消息短了很多,许多 Fields 都被删掉了。
在这里插入图片描述 
 
graylog 要学习的内容还有很多,后续还会继续更新此博文

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值