在CentOS 6上安装Graylog Server 1.x

时间:2020-03-21 11:45:26  来源:igfitidea点击:

安装Graylog2日志管理平台以收集,索引和分析数据。

Graylog 1.3.x被称为Graylog2.
请检查本文以将Graylog从1.3.x升级到2.0.x。

意见建议

为下面概述的安装点使用单独的逻辑卷。
请注意,卷大小在很大程度上取决于要发送的日志量。

  • '/var/lib/mongo'-30GB
  • '/var/lib/elasticsearch'-100GB
  • '/var/lib/graylog-server'-20GB

我们已将SELinux设置为强制模式。

EPEL储存库和工具

CentOS Extras储存库包括一个安装EPEL的软件包:

# yum install epel-release

工具

我们将需要以下内容:

# yum install wget vim pwgen

安装Java

从CentOS更新存储库安装Java:

# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

安装Elasticsearch

下载并安装公共签名密钥:

# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

创建“ /etc/yum.repos.d/elasticsearch.repo”存储库文件:

# cat << EOL > /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-1.7]
name=Elasticsearch repository for 1.7.x packages
baseurl=http://packages.elastic.co/elasticsearch/1.7/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
EOL

通过yum安装elasticsearch:

# yum install -y elasticsearch

配置Elasticsearch

对于Elasticsearch而言,唯一重要的事情是我们设置了与Elasticsearch配置中Graylog2将使用的集群名称完全相同的集群名称(“ cluster.name:graylog”)。

打开'/etc/elasticsearch/elasticsearch.yml'。
设置集群名称:

cluster.name: graylog2

禁用动态搜索:

script.disable_dynamic: true

锁定内存:

bootstrap.mlockall: true

禁用多播:

discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["localhost:9300"]

Elasticsearch堆大小默认最小为256M,最大为1G。
建议将ES_HEAP_SIZE设置为可用内存的50%,但不要超过31GB。
打开“/etc/sysconfig/elasticsearch”并添加以下行:

ES_HEAP_SIZE=4G
MAX_OPEN_FILES=64000

Elasticsearch必须同时打开许多文件,并且需要更高的打开文件限制,这是常规操作系统默认设置所允许的。

我们将配置安全限制文件“ /etc/security/limits.conf”,以允许最多64000个打开文件描述符。

# echo "elasticsearch soft nofile 64000" >> /etc/security/limits.conf ;\
echo "elasticsearch hard nofile 64000" >> /etc/security/limits.conf

启用并启动Elasticsearch服务:

# chkconfig --add elasticsearch
# service elasticsearch start

测试服务:

# curl -X GET 'http://127.0.0.1:9200/_cluster/health?pretty=true'
{
"cluster_name" : "graylog2",
"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
}

如果我们需要删除所有索引,请执行以下操作:

# curl -XDELETE 'http://localhost:9200/_all'

当需要重置数据库时,我们发现它对开发非常有用。

安装MongoDB

在撰写本文时,当前稳定的MongoDB是v3.0。

为稳定的mongodb版本创建存储库文件:

# cat << EOL > /etc/yum.repos.d/mongodb.repo
[mongodb-stable]
name=MongoDB Repository
#baseurl=https://repo.mongodb.org/yum/redhat/6/mongodb-org/stable/x86_64/
baseurl=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1
EOL

安装MondoDB:

# yum install -y mongo-10gen-server mongo-10gen

配置MongoDB

我们将MongoDB身份验证设置为false:

# egrep '^bind|^auth' /etc/mongod.conf
bind_ip=127.0.0.1
auth=false

配置SELinux以允许MongoDB侦听端口27017.

# yum -y install policycoreutils-python
# semanage port -a -t mongod_port_t -p tcp 27017

CentOS 6设置的最大进程限制为1024,它将覆盖ulimit设置。
添加名为'/etc/security/limits.d/90-nproc.conf'的文件,并添加新的软和硬nproc值,以增加mongod用户的进程限制:

# echo "mongod soft nproc 32000" >>/etc/security/limits.d/90-nproc.conf ;\
echo "mongod hard nproc 32000" >>/etc/security/limits.d/90-nproc.conf

为mongod用户设置软和硬nofile值:

# echo "mongod soft nofile 64000" >> /etc/security/limits.conf ;\
echo "mongo hard nofile 64000" >> /etc/security/limits.conf

编辑'/boot/grub/grub.conf',然后将transparent_hugepage = never添加到内核行:

kernel /vmlinuz-2.6.32-504.30.3.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=uk LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root rd_NO_DM rhgb quiet transparent_hugepage=never

编辑“ /etc/rc.local”并在“ exit 0”之前添加以下内容:

if test -f /sys/kernel/mm/transparent_hugepage/khugepaged/defrag; then
echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi

这些应该修复以下警告:

WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'
WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.

启用并启动服务:

# chkconfig --add mongod
# service mongod start

查看:

# mongo
MongoDB shell version: 3.0.5
connecting to: test
> exit
bye

安装和配置Graylog2服务器

添加Graylog v1.3的存储库:

# rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-1.3-repository-el7_latest.rpm

安装Graylog服务器:

# yum install -y graylog-server pwgen

生成一个password_secret:

# sed -ie "s/^password_secret =.*/password_secret = $(pwgen -N 1 -s 96)/g" /etc/graylog/server/server.conf

设置管理员帐户密码:

# PASSWD=$(echo -n changeme|sha256sum|awk '{print }')
# sed -ie "s/^root_password_sha2 =.*/root_password_sha2 = $PASSWD/g" /etc/graylog/server/server.conf

禁用统计信息:

# echo "usage_statistics_enabled" = false >>/etc/graylog/server/server.conf

默认发现模式是多播。
Graylog将尝试自动查找其他Elasticsearch节点。
当所有内容都在同一系统上运行时,这通常可以正常工作,但是在较大的网络拓扑中运行时,很快会出现问题。
文档建议将单播用于生产设置。

在Graylog中配置Zen单播发现,打开'/etc/graylog/server/server.conf'并添加以下几行:

elasticsearch_discovery_zen_ping_multicast_enabled = false
elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300

还添加根电子邮件地址并设置时区:

root_email = "Hyman@theitroad"
root_timezone = GMT

将MongoDB身份验证设置为false:

mongodb_useauth = false

确保is_master设置为true:

is_master = true

我们希望在当前活动索引达到10GB(大约)时旋转它,并且我们希望总共保留9个索引。
当达到最大索引数时,我们要删除最旧的索引。

打开“ /etc/graylog/server/server.conf”并设置以下参数以实现上述目的:

rotation_strategy = size
elasticsearch_max_size_per_index = 10737418240
elasticsearch_max_number_of_indices = 9
retention_strategy = delete
elasticsearch_index_prefix = graylog2

打开“/etc/sysconfig/graylog-server”,然后从8.0中删除了支持,从GREYLOG_SERVER_JAVA_OPTS中删除以下参数:

PermSize=128m MaxPermSize=256m

另外,将Xms和Xmx设置为如下所示:

-Xms2G -Xmx4G

这将允许使用4GB的内存。

启动服务:

# /etc/init.d/graylog-server start

检查是否有明显的错误:

# tail -f /var/log/graylog-server/server.log

安装和配置Graylog2 Web界面

安装Graylog Web前端:

# yum install graylog-web

将URI设置为localhost:

# sed -ie "s/^graylog2-server\.uris=.*/graylog2-server\.uris=\"http:\/\/127.0.0.1:12900\/\"/g" /etc/graylog/web/web.conf

设置应用程序密码:

# sed -ie "s/^application\.secret=.*/application\.secret=\"$(pwgen -N 1 -s 96)\"/g" /etc/graylog/web/web.conf

另外,在“ /etc/graylog/web/web.conf”文件中设置时区:

timezone="Europe/London"

打开'/etc/sysconfig/graylog-web'并调整Java堆大小:

GRAYLOG_WEB_JAVA_OPTS="-Xms512M -Xmx1G"

启动服务:

# /etc/init.d/graylog-web start

Web界面将在端口9000上侦听。
将浏览器指向该端口。
使用用户名admin和我们在server.conf中的root_password_sha2上配置的密码登录。

检查是否有明显的错误:

# tail -f /var/log/graylog-web/server.log

调优Java内存

对于具有8GB 内存的VM。

弹性搜索

# grep ^ES_HEAP /etc/sysconfig/elasticsearch
ES_HEAP_SIZE=4G

Graylog服务器

# grep Xms /etc/sysconfig/graylog-server
GRAYLOG_SERVER_JAVA_OPTS="-Xms2G -Xmx4G -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSConcurrentMTEnabled -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC -XX:-OmitStackTraceInFastThrow"

Graylog

# grep Xms /etc/sysconfig/graylog-web
GRAYLOG_WEB_JAVA_OPTS="-Xms512M -Xmx1G"

使用HTTPS为Graylog配置Apache

安装httpd和mod_ssl软件包,并生成一个自签名SSL证书:

# yum install -y httpd mod_ssl
# cd /etc/ssl/certs
# openssl req -x509 -newkey rsa:2048 -keyout graylog.key \
  -out graylog.crt -days 1368 -nodes
# chmod 0640 graylog.key

打开“ /etc/httpd/conf.d/graylog2.conf”并添加以下内容:

NameVirtualHost *:443
ServerName localhost
<VirtualHost *:443>
  ServerName graylog.example.com
  ServerAlias graylog.example.com
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLCertificateFile /etc/ssl/certs/graylog.crt
  SSLCertificateKeyFile /etc/ssl/certs/graylog.key
  ProxyRequests Off
  <Proxy *>

Order deny,allow

Allow from all
  </Proxy>
  ProxyPass/http://localhost:9000/
  ProxyPassReverse/http://localhost:9000/
  <Location

Order allow,deny
   Allow from all
  </Location>
</VirtualHost>
<VirtualHost *:80>
  ServerName graylog.example.com
  Redirect/https://graylog.example.com/
</VirtualHost>

重新启动Web服务器。

配置Graylog2以接收消息

Syslog UDP输入

要添加输入以接收系统日志消息,请单击右侧“系统”菜单中的“输入”。

从下拉菜单中,选择“ Syslog UDP”,然后单击“启动新输入”。

将弹出“启动新的输入系统日志UDP”窗口,输入以下信息:

Title: syslog
Port: 514
Bind address: 0.0.0.0

然后单击启动。
要从Linux主机发送系统日志(rsyslog),请使用:

$template GRAYLOGRFC5424,"< %PRI%>%PROTOCOL-VERSION% %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n"
*.* @graylog.example.org:514;GRAYLOGRFC5424

GELF输入

以下“ nxlog.conf”配置读取Windows EventLog并将其以GELF格式发送到Graylog2服务器。

define ROOT C:\Program Files (x86)\nxlog
Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log
SuppressRepeatingLogs TRUE
<Extension gelf>
  Module xm_gelf
</Extension>
<Input eventlog>
  # For Windows XP, 2000 and 2003 use the following:
  # Module im_mseventlog
  Module im_msvistalog
  ReadFromLast FALSE
  SavePos TRUE
  PollInterval 5
  # Uncomment the following to collect specific event logs only
  Query <QueryList>\
  <Query Id="0">\
  <Select Path="Application">*</Select>\
  <Select Path="System">*</Select>\
  <Select Path="Security">*</Select>\
  <Select Path="Microsoft-Windows-TerminalServices-Gateway/Operational">*</Select>\
  </Query>\
  </QueryList>
</Input>
<Output graylog>
  Module om_udp
  Host graylog.example.com
  Port 12201
  OutputType GELF
</Output>
<Route 1>
  Path eventlog => graylog
</Route>