Graylog日志管理单机部署、日志节点的Sidecar配置以及简单的警告事件邮件发送

应该是上个星期的上个星期,下了个任务,要做Graylog的部署以及文档,emmm….带log,肯定是和日志有关系了呗,不过也没听过啊,去搜了一下,确实,也不少帖子博客相关的都有安装部署,还是yum安装,这不简单去了么,赶紧屡了一遍,接下来直接就照着做了,但是,奈何公司的网不行呢,我yum配置完了,install全失败,没整;之后发现还有好多是docker的方法,可以啊,来试试(其实看到docker我就知道也差不多了,因为我镜像就没下成功过),试了一下,真行啊,果然不行。

安装部署主要需要3个软件,MongoDB、Elasticsearch以及Graylog,当时测试时只有Graylog的yum安装是成功的,所以,顺便就把相关的rpm包下载留下来,其实MongoDB的yum安装也是没什么问题的,不过我自己的环境不稳定,直接用在官网下的tgz包安装的;

 

由于我自己的情况受限,就尽可能使用我这里行得通的方法来安装了:

(如果网络环境允许,官方 //docs.graylog.org/en/4.0/pages/installation.html 的方法是非常方便的)

部署环境是一台虚拟机,CentOS7,之后准备几个可能需要单独下载的包,之后就是各种安装时需要的其他依赖包,版本根据自己需求而定:

(这里说一下,我是测试环境,下面步骤中安装都是yum install或解压即用的方式,因为要写文档上交,所以肯定以后会有内网环境安装部署的情况,把整个过程需要的安装包都留下来是有必要的,之后可以在内网环境下部署本地yum仓库,使用yum install进行安装就方便多了,可以使用 yumdownloader 或修改 /etc/yum.conf 中 keepcache=1 保留缓存包)

GPG-KEY-elasticsearch(Elastic GPG的密钥 rpm –import //artifacts.elastic.co/GPG-KEY-elasticsearch ,可以使用wget或curl -o . 下载

elasticsearch-7.11.1-linux-x86_64.tar.gz(官网下载 //www.elastic.co/cn/downloads/elasticsearch )

filebeat-6.6.0-x86_64.rpm(官方提供 //www.elastic.co/cn/downloads/beats/filebeat )

mongodb-linux-x86_64-enterprise-rhel70-4.4.3.tgz(官网下载 //www.mongodb.com/try/download/enterprise 或 //www.mongodb.com/download-center/enterprise/releases/archive)

graylog-server-4.0.5-1.noarch.rpm(官方给的yum源下载保留的,下载官方的压缩包也可以)

graylog-sidecar-1.0.2-1.x86_64.rpm(官方提供 //github.com/Graylog2/collector-sidecar/releases )

graylog_sidecar_installer_1.0.2-1.exe(官方提供 //github.com/Graylog2/collector-sidecar/releases ,这是windows安装的包)

 

 

下面是我自己的安装部署流程 (点击传送):

文档内容依次是:—> 服务端的安装部署

                             —> CentOS端的Sidecar安装及Web界面设置

                             —> Windows端的Sidecar安装及Web界面设置

                             —> Web界面设置简单的警告事件及邮件发送

 


 

服务端的安装部署

 –返回目录–

 

配置部分系统资源,并安装各种依赖包:

    ##修改部分系统资源呢配置
[root@graylog ~]# vi /etc/security/limits.conf
*       soft    nofile  65536
*       hard    nofile  65536
*       soft    nproc   65536
*       hard    nproc   65536

[root@graylog ~]# vi /etc/sysctl.conf
vm.max_map_count=262144

[root@graylog ~]# sysctl -p


    ##关闭透明大页
    ##(关闭透明大页主要是MongoDB的运行问题,若本机不做其他服务的运行,MongoDB数据库负载不大,则可以不进行关闭,)
[root@graylog ~]# cat /sys/kernel/mm/transparent_hugepage/enabled 
[always] madvise never

[root@graylog ~]# vi /etc/default/grub
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never"

[root@graylog ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

##安装java
-1.8.0-openjdk及其他依赖包 [root@graylog ~]# yum install -y java-1.8.0-openjdk vim ntpdate pwgen cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl net-snmp openldap openssl xz-libs net-snmp 这里我们可以重启一下机器,上面系统资源配置是重启生效,但是不重启也不会影响下面的安装。

 

安装MongoDB:

    ##解压文件,并创建所需组、用户以及目录
[root@graylog ~]# tar -xvf mongodb-linux-x86_64-enterprise-rhel70-4.4.3.tgz -C /usr/local/
[root@graylog ~]# cd /usr/local/
[root@graylog local]# mv mongodb-linux-x86_64-enterprise-rhel70-4.4.3 mongodb
[root@graylog local]# cd
[root@graylog ~]# groupadd -r mongod
[root@graylog ~]# useradd -r -g 996 -u 996 -s /bin/false -d /var/lib/mongo mongod(UID、GID根据实际情况)
[root@graylog ~]# mkdir -pv /var/lib/mongo
[root@graylog ~]# mkdir -pv /var/log/mongodb
[root@graylog ~]# chown -R mongod:mongod /var/lib/mongo
[root@graylog ~]# chown -R mongod:mongod /var/log/mongodb


    ##修改命令PATH路径
[root@graylog ~]# vi /etc/profile
export PATH=/usr/local/mongodb/bin:$PATH

[root@graylog ~]# source /etc/profile


    ##编辑配置文件
[root@graylog ~]# vi /etc/mongod.conf
systemLog:path: 
    /var/log/mongodb/mongod.log
storage:
    dbPath: /var/lib/mongo


    ##启动数据库并设置开机启动
[root@graylog ~]# mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

[root@graylog ~]# vi /etc/rc.local
/usr/local/mongodb/bin/mongod -f /etc/mongod.conf

[root@graylog ~]# chmod +x /etc/rc.d/rc.local


    ##查看数据库是否运行
[root@graylog ~]# ps -ef | grep mongo

 

安装Elasticsearch

    ##安装Elastic GPG密钥,解压文件
[root@graylog ~]# rpm --import GPG-KEY-elasticsearch
    ##或是联网环境下,直接在线导入
[root@graylog ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
[root@graylog ~]# useradd ela
    ##为ela用户设置个密码
[root@graylog ~]# passwd ela
[root@graylog ~]# tar -xvf elasticsearch-7.11.1-linux-x86_64.tar.gz -C /home/ela
[root@graylog ~]# chown ela:ela /home/ela/elasticsearch-7.11.1 -R
    ##Elasticsearch不允许使用root用户启动,会报各种错,如不能创建进程,找不到JAVA路径等,启动需要以普通用户身份执行,所以之前创建的用户,为了使服务正常启动,同时注意软件目录的所属问题,不是普通用户所属依然会报错
[root@graylog ~]# su - ela
[ela@graylog ~]$ mv elasticsearch-7.11.1 elasticsearch


    ##启动服务并设置开机启动
[ela@graylog ~]$ /home/ela/elasticsearch/bin/elasticsearch &
    ##切换为root用户
[ela@graylog ~]$ su -
[root@graylog ~]# vi /etc/rc.local
su - ela -c '/home/ela/elasticsearch/bin/elasticsearch &'


    ##查看服务是否启动运行
[root@graylog ~]# ps -ef | grep ela
(Elasticsearch运行进程信息特别长,一下就能看到,若没有,需要排错,查看权限等)

 

安装Graylog

    ##安装Graylog,有rpm包,安装就方便多了,包名称补全按照实际情况做
[root@graylog ~]# yum localinstall graylog-server-4.0.5-1.noarch.rpm


    ##修改Graylog配置文件
[root@graylog ~]# vi /etc/graylog/server/server.conf
    ## passworde_secret可以通过命令:pwgen -N 1 -s 96 来随机生成,根据实际情况填写
password_secret = 6Z06fZHU2DwuOf9X8fhnvphCd3OM7oqwLECRRcejvjpieSvVtwu08yHYHIKDi56bAxRvtCOZ3xKKiBqyt00XYCgVa0oETB0L
    ## admin用户生成密码,请记住你的密码,请根据实际情况填写编码并记录正常不加密的密码,配置文件中填写加密后的字符串(密码生成命令:echo -n 123123 | sha256sum)
root_password_sha2 = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
    ## 时区写现在的就行(亚洲/上海)
root_timezone = Asia/Shanghai
    ## elasticsearch 相关配置
    ## 单机本地配置,则填写本地127地址即可,默认9200端口不改
elasticsearch_hosts = //127.0.0.1:9200
elasticsearch_shards =1 
elasticsearch_replicas = 0
    ## mongodb 连接配置,单机本机mongodb,没有设置验证
mongodb_uri = mongodb://localhost/graylog
    ## 电子邮件smtp,设置为自己的邮箱smtp服务,enabled=true为开启邮箱发送功能
transport_email_enabled = true
    ## 开启smtp功能的邮箱,一般都是官方的地址,不同服务商端口号可能不同,示例是网易邮箱,端口465
transport_email_hostname = smtp.163.com
transport_email_port = 465
transport_email_use_auth = true
transport_email_use_tls = false
transport_email_use_ssl = true
    ## auth_username为发送邮件的邮箱,根据实际情况填写
transport_email_auth_username = 发件人@163.com
    ## 这个是开启smtp功能后给的验证密码,并不是你本身登录的密码
transport_email_auth_password = FJSLKJSJGFLKSJG
transport_email_subject_prefix = [graylog]
transport_email_from_email = 发件人@163.com
    ## 配置地址,服务端本机ip+port
http_bind_address = 192.168.3.134:9000

    ##若需要则手动添加java路径,启动没有报错则不要配置,一般都不出错
[root@graylog ~]# vi /etc/sysconfig/graylog-server
JAVA=/usr/bin/java(根据实际情况修改)


    ##启动服务
[root@graylog ~]# systemctl enable graylog-server
[root@graylog ~]# systemctl start graylog-server

 

测试登录
浏览器访问://192.168.3.134:9000(访问自己的IP啊)
账户:admin(初始设置,直接填写)
密码:123123(本机实验,实际情况就是需要加密的设定密码)

 

注意事项:
1. 系统的资源配置修改为65536,否则可能触发MongoDB和Elasticsearch运行错误;
2. Elasticsearch服务一定以普通用户运行,不能以root用户执行启动,软件目录的所有者必须是也是运行的普通用户,如执行 chown ela:ela /home/ela/elasticsearch-7.11.1 -R ;
3. Graylog服务运行后Web访问会有一定延迟,但不超过1分钟,若长时间没有进入,显示拒绝连接,多是server.conf配置文件的IP地址填写不正确导致,文档配置中所有192等开头的IP地址均为要根据实际情况修改的,而127.0.0.1和0.0.0.0或localhost则不做修改;
4. 本文档为所有服务均在一个服务器主机的情况,若需要将某个服务分到另外的主机上,一定要对应好server.conf中各个服务的衔接IP地址;

 

 

 

 

 到这,服务端的操作就完成了,你可以访问到你的网页,但是现在还没有配置日志节点,每个需要收集日志的节点主机均需要配置Sidecars;

 

  –返回目录–


 

CentOS端的Sidecar安装及Web界面设置

  –返回目录–

 

接下来我们来配置Sidecars,服务上了,收不到日志,就是浪费电,目前我自己测试配置了Linux的CentOS7端和自己的windows主机的日志;

下面的步骤大部分为我的截图,Web界面的操作,若是写可能有些不清楚;

 

官方的安装文档中的图非常清除的描述了各个主机之间与服务安装的关系和连接情况:

( //docs.graylog.org/en/4.0/pages/sidecar.html )

每个日志源端均需要配置一个Sidecar服务,其是负责联系服务端进行日志传输工作的;

 

 

 

 

 

 

 

节点安装Sidecar服务并进行配置

    ##此包通过官方给的GitHub地址下载,其中有版本对照,参照官方(//docs.graylog.org/en/4.0/pages/sidecar.html),顺便可以把windows的也下下来
[root@mysql57 ~]# rpm -ivh graylog-sidecar-1.0.2-1.x86_64.rpm


    ##获得值后返回命令行填写配置文件
[root@mysql57 ~]# vi /etc/graylog/sidecar/sidecar.yml
    ## 该处填写为服务端的IP地址及端口号,后面的/api/不要删除
server_url: "//192.168.3.134:9000/api/"
    ## 该值即为之前在Web界面创建并生成的令牌值,一定要对应,否则不能连接
server_api_token: "1457n0qgqanf2emv65btu3fsd41gps23521aqbv2v23vcipi5cj0"
    ## 该值为本节点在Web界面展示的源端名称,注意与其他节点区分
node_name: "mysql57"
    ## 打开此选项
send_status: true


    ##安装服务并启动
[root@mysql57 ~]# graylog-sidecar -service install
[root@mysql57 ~]# systemctl start graylog-sidecar
    ##(配置文件若更改需要重新启动一次服务)
[root@mysql57 ~]# systemctl enable graylog-sidecar
    ##(记得配置开机自动启动,否则开机后sidecar服务不运行,服务端不能获取到该节点日志)


    ##安装日志获取的依赖软件
[root@mysql57 ~]# rpm -ivh filebeat-6.6.0-x86_64.rpm

 

 

 

 

 

 

 

 

 

至此,我们在CentOS7上面部署节点Sidecar的操作就结束了,其中日志的路径和类型等根据自己实际情况来做改变,不过一般的日志选Beats都可以。

 

  –返回目录–


 

Windows端的Sidecar安装及Web界面设置

  –返回目录–

 

接下来是windows的节点,来安装Sidecar软件

在安装软件之前,根据我们前面设置好的Inputs(依然选择使用Beats)来指定一个端口给windows,并需要确认已经创建了Token并获取了值
之后在windows主机上安装Sidecar软件,双击 graylog_sidecar_installer_1.0.2-1.exe ,
进入后下一步到下图界面进行参数配置,正确输入后进行Install,之后完成即可;

 

以管理员身份运行cmd进行服务安装并启动

 

安装服务

C:\Program Files\graylog\sidecar\graylog-sidecar.exe -service install

启动服务

C:\Program Files\graylog\sidecar\graylog-sidecar.exe” -service start

 

按windows键 + R 并输入 services.msc 进入服务管理界面

 

找到Graylog Sidecar服务,并确认其启动并属于 自动 启动类型

 

之后就是Web端配置获取信息了

 

 

 

 

 

 

 

 

到此,我们又能获取到windows上面的日志了;

以上是从服务端再到客户端日志节点的安装部署,其中很多配置都要根据自己所在的实际情况去填写或选择。

 

  –返回目录–


 

Web界面设置简单的警告事件及邮件发送

  –返回目录–

 

配置中有许多自定义键值,基本为非必要字段,可以不进行添加,有相关需求可以自行进行添加,Email的相关变量附加到本文档结尾,由于翻译问题,可能会出现偏差;

更详细的参数描述或使用方法偏多,请前往至官网阅读://docs.graylog.org/en/4.0/pages/alerts.html#fields

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是警报事件邮件的发送设置,当你收到测试邮件的时候就已经证明服务与你的邮箱可以正常联系了,不过还是要注意警报事件的设置;

以下是官方文档中键值变量的翻译,是我拿谷歌翻译直接翻译的,有的读起来都不太明白,没办法,英语水平极度有限(没有翻译软件帮助,我基本都看不懂),最好是去官网仔细研究一下;

事件定义元数据
有关创建警报的事件定义的信息。
event_definition_id (字符串)-事件定义的数据库ID
event_definition_type(字符串)-事件定义类型的内部名称(aggregation-v1或correlation-v1)
event_definition_title (字符串)-在用户界面中设置的标题
event_definition_description (字符串)-在用户界面中设置的描述
job_definition_id (字符串)-与计划的事件定义关联的内部作业定义ID
job_trigger_id (字符串)-与作业的当前执行关联的内部ID

 

活动数据
event 该事件存储在Graylog中

id (字符串)-存储事件的消息ID
event_definition_id(字符串)-与event_definition_id元数据部分中的相同
event_definition_type(字符串)-与event_definition_type元数据部分中的相同
origin_context(字符串)-创建此事件的消息或事件的URN(event或message)。可以为空
timestamp(DateTime)-该事件描述的时间戳,可以设置为基础事件或消息(请参阅参考资料origin_context)
timestamp_processing (DateTime)-该事件的时间戳由Graylog创建
timerange_start(DateTime)-用于创建此事件的数据Graylog窗口的开始。可以为空
timerange_end(DateTime)-用于创建此事件的数据Graylog窗口的末尾。可以为空
streams -(字符串)-事件存储在其中的流ID的列表
source_streams (字符串)-事件提取数据的流ID的列表
alert(布尔)-是否将此事件视为警报。始终true用于具有通知的事件定义
message (字符串)-描述此事件的人性化消息
source (字符串)-创建此事件的Graylog服务器的主机名
key_tuple (字符串)-组成事件键的值列表
key (字符串)-事件的键为单个字符串
priority (长整数)-事件的优先级值
fields (Map <String,String>)-附加到事件的自定义字段

积压
backlog (消息摘要列表)-导致生成此警报的消息或事件的列表
id (字符串)-消息ID
index(字符串)-消息存储在其中的索引的名称。与一起使用id可在Graylog中唯一标识消息
source(字符串)-source消息的字段
message(字符串)-message消息的字段
timestamp(DateTime)-timestamp消息的字段
stream_ids (字符串)-消息的流ID
fields (Map <String,Object>)-可以迭代消息的其余字段

 

 –返回目录–