设置Graylog2日志分析器以存储和搜索日志错误
Graylog2是一个开源日志分析器工具,它使用MongoDB和ElasticSearch来存储和搜索日志错误。
开发人员主要使用它来检测和修复其应用程序中的错误。
与其他日志分析器工具相比,Graylog是一种更加成品和“企业就绪”的产品。
使用的版本:
Oracle Java:1.8.0_101
Graylog:2.0.3
Elasticsearch:2.3.3
MongoDB:3.2.9
1.准备工作
本教程中描述的安装需要具有至少4GB 内存的Ubuntu 16.
如果系统受内存大小限制,则可以考虑添加服务器的交换内存。
让我们首先更新和升级Ubuntu 16.04(Xenial Xerus)
root@ip-172-31-18-24:~# apt-get update && apt-get upgrade
接下来,通过更新/etc/hostname和/etc/hosts来配置服务器的FQDN。
我们将选择主机名作为graylog2,并选择域名作为theitroad.com。
我们可以根据自己的选择选择这两个值。
root@ip-172-31-18-24:~# vi /etc/hostname graylog2
更新/etc/hosts
root@ip-172-31-18-24:~# vi /etc/hosts 127.0.0.1 localhost 172.31.18.24 graylog2.theitroad.com graylog2
如果我们使用的是任何基于云的服务,请确保已将preserve_hostname的值从false更改为true。
root@ip-172-31-18-24:~# vim /etc/cloud/cloud.cfg .................. .................. preserve_hostname: true .................. ..................
重新启动服务器使更改生效。
root@ip-172-31-18-24:~# reboot
重新引导后,检查服务器的标准域名。
ubuntu@graylog2:~$hostname graylog2 ubuntu@graylog2:~$hostname -f graylog2.theitroad.com
2.安装JDK
Elasticsearch需要Java,因此我们将安装Oracle Java 8,因为Elastic推荐这样做。
但是,它也可以与OpenJDK一起很好地工作。
添加私有软件包归档文件webupd8team/java
root@graylog2:~# sudo add-apt-repository ppa:webupd8team/java root@graylog2:~# sudo apt-get update
安装Oracle Java8
root@graylog2:~# sudo apt-get install oracle-java8-installer
在安装上述程序时接受许可证并将Oracle Java8设置为默认JVM
root@graylog2:~# sudo apt-get install oracle-java8-set-default
现在检查JAVA的版本
root@graylog2:~# java -version java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
3.安装Elasticsearch
通过获取GPG签名密钥开始安装elasticsearch。
root@graylog2:~# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add OK
通过执行以下命令,将Eleasticsearch存储库添加到apt数据库。
root@graylog2:~# echo "deb https://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch.list deb https://packages.elastic.co/elasticsearch/2.x/debian stable main
更新apt数据库缓存并安装Elasticsearch
root@graylog2:~# apt-get update && sudo apt-get install elasticsearch
使Elasticsearch在系统启动时自动启动。
root@graylog2:~# systemctl enable elasticsearch
在配置elasticsearch时,设置集群名称(例如“ theitroad”)很重要。
我们将添加的仅有的两个其他参数是network.host和Discovery.zen.ping.unicast.hosts。
在Elasticsearch的配置文件中添加以下参数并保存。
root@graylog2:~# vi /etc/elasticsearch/elasticsearch.yml cluster.name: theitroad network.host: 127.0.0.1 discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
重新启动Elasticsearch服务以读取新配置。
root@graylog2:~# service elasticsearch restart
等待几秒钟,让Elasticsearch完全重启。
Elastisearch在端口9200上侦听以处理HTTP请求。
使用CURL测试elasticsearch。
root@graylog2:~# curl -X GET http://localhost:9200 { "name" : "Royal Roy", "cluster_name" : "theitroad", "version" : { "number" : "2.4.0", "build_hash" : "ce9f0c7394dee074091dd1bc4e9469251181fc55", "build_timestamp" : "2015-08-29T09:14:17Z", "build_snapshot" : false, "lucene_version" : "5.5.2" }, "tagline" : "You Know, for Search" }
确保群集名称在上面显示为“ theitroad”
现在使用CURL测试Elasticsearch集群的运行状况。
root@graylog2:~# curl -XGET 'http://localhost:9200/_cluster/health?pretty=true' { "cluster_name" : "theitroad", "status" : "green", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 0, "active_shards" : 0, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 }
上面的输出应显示为“绿色”状态
4.安装MongoDB
通过导入公钥开始安装MongoDB
root@graylog2:~# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 Executing: /tmp/tmp.iUI8C11LIe/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 gpg: requesting key EA312927 from hkp server keyserver.ubuntu.com gpg: key EA312927: public key "MongoDB 3.2 Release Signing Key <[email protected]>" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)
通过使用以下命令创建/etc/apt/sources.list.d/mongodb-org.list文件,在apt数据库中添加mongodb存储库。
root@graylog2:~# echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org.list deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.2 main
现在,使用以下命令安装MongoDB。
root@graylog2:~# sudo apt-get update root@graylog2:~# sudo apt-get install mongodb-org
使用以下任何命令启动MongoDB。
root@graylog2:~# systemctl start mongod OR root@demohost:/etc/init.d# /etc/init.d/mongod start * Starting database mongod [ OK ]
最后在系统启动期间启用它。
root@graylog2:~# systemctl enable mongod mongod.service is not a native service, redirecting to systemd-sysv-install Executing /lib/systemd/systemd-sysv-install enable mongod
5.安装Graylog
要安装graylog2,请下载并安装graylog 2.x存储库。
root@graylog2:~# wget https://packages.graylog2.org/repo/packages/graylog-2.0-repository_latest.deb root@graylog2:~# dpkg -i graylog-2.0-repository_latest.deb
在Ubuntu 16.04中预安装了对apt的HTTPS支持,如果缺少该支持,请安装它并更新apt数据库。
root@graylog2:~# sudo apt-get install apt-transport-https root@graylog2:~# apt-get update
现在,使用以下命令安装Graylog服务器。
root@graylog2:~# sudo apt-get install graylog-server
在配置Graylog2服务器时,我们需要提供root用户(admin)的密码和一个用于保护用户密码的密码。
因此,我们需要安装密码生成器来为我们生成密码。
使用以下命令安装pwgen。
我们需要管理员密码才能登录Graylog2的Web界面。
请记住,我们不能使用Web界面更改管理员密码。
我们需要手动编辑此变量以更改管理员密码。
root@graylog2:~# apt-get install pwgen
首先生成一个秘密。
root@graylog2:~# pwgen -N 1 -s 96 GSaULswcGz31ZCdd7aKhLNNx1aIflUSItH8TS1mY2Vnl8r4IkKTQKV4T9Jw3C1Jzmo7Jd1R1oqmRBavncIP8ExAqtijnfA68
现在为root用户生成密码,例如:admin
root@graylog2:~# echo -n password.123 | sha256sum 90dd9a873ed29902c543fe5cbb0a01268e7a7adadfc91bb135e800e1260f5cb2
graylog2服务器配置的主要部分是在/etc/graylog/server /中配置server.conf
root@graylog2:~# vim /etc/graylog/server/server.conf
我们将从在/etc/graylog/server/server.conf中设置管理员密码和秘密密钥开始。
将以上两个密码分别粘贴到password_secret和root_password_sha2参数中。
password_secret = GSaULswcGz31ZCdd7aKhLNNx1aIflUSItH8TS1mY2Vnl8r4IkKTQKV4T9Jw3C1Jzmo7Jd1R1oqmRBavncIP8ExAqtijnfA68 root_password_sha2 = 90dd9a873ed29902c543fe5cbb0a01268e7a7adadfc91bb135e800e1260f5cb2
以下URI将用于接收消息,并且所有收集者都必须可以访问该URI。
rest_listen_uri = http://172.31.18.24:12900/
以下URI是REST API传输地址。
默认为rest_listen_uri的值
rest_transport_uri = http://graylog2.theitroad.com:12900/
Web界面侦听URI,它将用于访问浏览器中的graylog界面。
web_listen_uri = http://172.31.18.24:9000/
elasticsearch_shards定义Elasticsearch集群中的节点数,我们只有一个节点,将其值设置为1.
elasticsearch_shards = 1
这是我们索引的副本数,群集中只有一个节点。
将其值设置为0。
elasticsearch_replicas = 0
我们在配置elasticsearch时设置的Elasticsearch集群名称。
elasticsearch_cluster_name = theitroad
Graylog服务器将尝试使用多播模式自动查找Elasticsearch节点。
但是对于较大的网络,建议使用最适合生产的单播模式。
elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300
禁用多播
elasticsearch_discovery_zen_ping_multicast_enabled = false
在Graylog中为Elasticsearch客户端绑定地址。
我们可以跳过此步骤,让Elasticsearch自动选择这些值。
elasticsearch_network_host = 127.0.0.1 elasticsearch_network_bind_host = 127.0.0.1 elasticsearch_network_publish_host = 127.0.0.1
重新启动Graylog2,等待几秒钟以完全启动它。
root@graylog2:~# systemctl daemon-reload root@graylog2:~# systemctl restart graylog-server OR root@demohost:~# /etc/init.d/graylog-server start
6.配置防火墙
打开TCP端口9000(Graylog Web界面)和UDP端口514(Rsyslog),以分别允许进入Graylog2 Web界面和Rsyslog的通信。
对于IPTABLES用户
root@demohost:~# vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT root@demohost:~# iptables-save > /etc/iptables/rules.v4 root@demohost:~# service iptables-persistent restart
对于UFW用户
root@demohost:~# sudo ufw allow 9000/tcp root@demohost:~# sudo ufw allow 514/udp root@demohost:~# sudo ufw reload
7.配置Rsyslog
Rsyslog随ubuntu一起提供,因此我们不必安装它。
使用以下命令在服务器中列出此软件包。
root@graylog2:~# dpkg -l rsyslog
如果以上命令返回空白输出,则通过在终端中执行以下命令来安装rsyslog。
root@graylog2:~# apt-get install rsyslog root@graylog2:~# systemctl start rsyslog root@graylog2:~# netstat -alnp |grep 514 tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 13549/rsyslogd tcp6 0 0 :::514 :::* LISTEN 13549/rsyslogd
一旦确定rsyslog在Graylog2服务器中正在运行,就让我们对其进行配置,以便Rsyslog将日志发送到Graylog2.
编辑/etc/rsyslog.conf并从以下各行中删除注释。
root@graylog2:~# vi /etc/rsyslog.conf module(load="imuxsock") # provides support for local system logging module(load="imklog") # provides kernel logging support module(load="immark") # provides --MARK-- message capability # provides UDP syslog reception module(load="imudp") input(type="imudp" port="514") # provides TCP syslog reception module(load="imtcp") input(type="imtcp" port="514")
接下来编辑/etc/rsyslog.d/50-default.conf并注释以下标准日志文件以禁用本地日志。
#auth,authpriv.* /var/log/auth.log #*.*;auth,authpriv.none -/var/log/syslog #cron.* /var/log/cron.log #daemon.* -/var/log/daemon.log #kern.* -/var/log/kern.log #lpr.* -/var/log/lpr.log #mail.* -/var/log/mail.log #user.* -/var/log/user.log
现在,在文件末尾添加以下行,以便rsyslog将日志数据发送到graylog服务器的端口号5140。
*.* @graylog2.theitroad.com:5140;GRAYLOG2
接下来,为rsyslog创建一个名称为90-graylog2.conf的模板文件,并添加以下信息。
root@graylog2:~# vi /etc/rsyslog.d/90-graylog2.conf $template GRAYLOGRFC5424,"<%PRI%>%PROTOCOL-VERSION% %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n" $PreserveFQDN on
重新启动Rsyslog
root@graylog2:~# systemctl restart rsyslog
在访问Graylog2 Web界面之前,请确保每个进程(例如elasticsearch,mongoDB,Graylog服务器及其Web界面)均已启动。
使用netstat命令检查它。
root @ graylog2:~netstat -pltn
8.访问Graylog Web界面
打开我们喜欢的浏览器,并将其指向http://YOUR-FQDN:9000。
我们将浏览器指向http://graylog2.theitroad.com:9000
以我们在步骤5中配置的admin和密码登录
单击系统->概述,并确保elasticsearch群集为绿色。
单击系统->输入,将输入选择为“ Syslog UDP”,然后单击“启动新输入”。
在第7步中配置Rsyslog时,提供标题名称,绑定地址为0.0.0.0或者127.0.0.1,端口号为我们在/etc/rsyslog.conf中定义的端口5140。
单击底部的“保存”。
保存后,请确保其正在运行。
现在测试Graylog2,我们将使用util-linux软件包的一部分的logger,将自动日志数据发送到Graylog服务器的UDP端口514.
thegeek@demohost:~$logger --server graylog2.theitroad.com --port 514 test Final message from VULTR123
像上面一样发送更多的自动化日志数据。
发送少量日志数据后,“吞吐量”部分的“网络IO”将显示日志数据的大小,直到接收到为止。
点击“显示收到的消息”