在CentOS 7上安装Graylog Server 1.x
安装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