在CentOS 7上安装Graylog Server 1.x

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

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

Graylog v1.3.x被称为Graylog2.

LVM设置(可选)

对于下面概述的安装点,我们使用单独的逻辑卷。
请注意,卷大小在系统之间有所不同,并且在很大程度上取决于要发送的日志量。

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

设置:

# vgcreate vg_graylog /dev/sdc
# lvcreate --name lv_mongo --size 30G vg_graylog
# lvcreate --name lv_elasticsearch --size 100G vg_graylog
# lvcreate --name lv_graylog-server --size 20G vg_graylog
# mkfs.ext4 -m0 -L mongo /dev/vg_graylog/lv_mongo
# mkfs.ext4 -m0 -L elasticsearch /dev/vg_graylog/lv_elasticsearch
# mkfs.ext4 -m0 -L graylog-server /dev/vg_graylog/lv_graylog-server
# tune2fs -c 50 -i 180d /dev/vg_graylog/lv_mongo
# tune2fs -c 50 -i 180d /dev/vg_graylog/lv_elasticsearch
# tune2fs -c 50 -i 180d /dev/vg_graylog/lv_graylog-server
# mkdir /var/lib/{mongo,elasticsearch,graylog-server}
# mount /dev/vg_graylog/lv_mongo /var/lib/mongo/
# mount /dev/vg_graylog/lv_elasticsearch /var/lib/elasticsearch/
# mount /dev/vg_graylog/lv_graylog-server /var/lib/graylog-server/

更新fstab。

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

EPEL储存库和工具

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

# yum install epel-release

安装Java

安装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

安装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服务:

# systemctl enable elasticsearch
# systemctl restart elasticsearch

测试服务:

# curl -X GET 'http://127.0.0.1:9200/'
{
  "status" : 200,
  "name" : "John Doe",
  "cluster_name" : "graylog2",
  "version" : {

"number" : "1.7.3",

"build_hash" : "05d4530971ef0ea46d0f4fa6ee64dbc8df659682",

"build_timestamp" : "2014-10-15T09:14:17Z",

"build_snapshot" : false,

"lucene_version" : "4.10.4"
  },
  "tagline" : "You Know, for Search"
}

如果我们需要删除所有索引,那么了解以下内容将很有用:

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

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

安装MongoDB

撰写本文时,当前稳定的MongoDB:v3.2.

创建一个mongodb稳定的存储库文件:

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

安装MondoDB:

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

配置MongoDB

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

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

CentOS 7设置的最大进程限制为4096,它将覆盖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

在启动时启用并启动服务:

# systemctl enable mongod
# systemctl start mongod

安装和配置Graylog2

添加存储库:

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

使用Web前端安装Graylog服务器:

# yum install -y graylog-server graylog-web pwgen

配置Graylog服务器

生成用于以下目的的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

确保is_master设置为true:

is_master = true

配置旧索引保留策略

保留策略取决于要求。

在我们的例子中,我们已经为elasticsearh挂载点'/var/lib/elasticsearch'分配了100GB的存储空间,并考虑到该数字来配置Graylog。

我们希望在当前活动索引达到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

配置Java参数

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

PermSize=128m MaxPermSize=256m

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

-Xms1G -Xmx2G

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

启动Graylog2服务

在启动时启用并启动服务:

# systemctl enable graylog-server
# systemctl start graylog-server

配置Graylog2 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"

在启动时启用并启动服务:

# systemctl enable graylog-web
# systemctl start graylog-web

Web界面将在端口9000上侦听。
将浏览器指向该端口。

我们可能需要为此配置防火墙:

# iptables -A INPUT -s 10.0.0.0/8 -p tcp -m multiport --dports 9000 -j ACCEPT

使用用户名admin和我们在server.conf中的root_password_sha2上配置的密码登录。

使用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>

确保代理模块已加载:

# httpd -M|grep proxy_module
Syntax OK
 proxy_module (shared)
 proxy_http_module (shared)

在启动时启用并重新启动服务:

# systemctl enable httpd
# systemctl restart httpd

我们可能需要为此配置防火墙:

# iptables -A INPUT -s 10.0.0.0/8 -p tcp -m multiport --dports 80,443 -j ACCEPT