在CentOS 6上将Graylog服务器从1.3.x升级到2.0.x
将Graylog2升级到Graylog(听起来令人困惑,我知道)。
我们将升级之前设置的Graylog 1.3.x到Graylog2.0.x。
官方的升级说明可以在这里找到:http://docs.graylog.org/en/2.0/pages/upgrade.html。
升级到Graylog 2.0.x而不是Graylog 2.1.x的原因是,默认情况下,Graylog 2.0.x仍对REST API和Web界面使用单独的侦听器。
从Graylog 2.1.0开始,可以在同一主机/端口组合上同时运行REST API和Web界面,现在这是默认设置。
升级到Graylog 2.0.x本身是一项重大更改,因此我们希望使事情变得尽可能简单。
之后,我们将升级到2.1.x。
软件
本文使用的软件:
- 最低CentOS 6.8
- Elasticsearch 1.7.6->将升级到Elasticsearch 2.4.2
- Graylog服务器1.3.4->将升级到Graylog服务器2.0.3
- Graylog Web 1.3.4->将被删除
- Java 1.8.0 OpenJDK->不变
- MongoDB 3.2.11->没有变化
SELinux设置为强制模式。
防火墙已打开,并配置为允许TCP端口9000和12900上的传入流量。
Graylog服务器的内部IP为10.8.143.13.
MongoDB的
Graylog 2.x需要MongoDB 2.4或者更高版本。
我们已经在3.2上了,因此不需要更改。
# mongo --version MongoDB shell version: 3.2.11
Elasticsearch 2.x
Graylog 2.0.0及更高版本需要Elasticsearch2.x。
Elasticsearch迁移插件
首先要做的是在现有的Elasticsearch 1.x集群升级到Elasticsearch 2.x之前,使用Elasticsearch迁移插件来突出显示一些潜在的陷阱。
在尝试升级之前,请执行此操作!
# find/-name plugin -type f /usr/share/elasticsearch/bin/plugin
# cd /usr/share/elasticsearch/
# ./bin/plugin -i migration -u https://github.com/elastic/elasticsearch-migration/releases/download/v1.18/elasticsearch-migration-1.18.zip
运行插件:http://localhost:9200/_plugin/migration
在我们的案例中,没有发现任何问题,我们可以继续前进。
完成后删除该插件,因为它与Elasticsearch 2.x不兼容:
# ./bin/plugin remove migration
Elasticsearch配置更改
打开Elasticsearch配置文件'/etc/elasticsearch/elasticsearch.yml'进行编辑,然后将network.host值设置为非本地主机地址。
禁用script.disable_dynamic,因为它已弃用。
在启动Elasticsearch 2.x之前,请确保已执行这些操作。
这些是我们的参考设置,来自文件'/etc/elasticsearch/elasticsearch.yml':
cluster.name: graylog2 network.host: 10.8.143.13 discovery.zen.ping.multicast.enabled: false discovery.zen.ping.unicast.hosts: ["10.8.143.13:9300"]
请注意现有的群集名称graylog2,我们不会对其进行更改。
文件'/etc/sysconfig/elasticsearch'的内容:
ES_HEAP_SIZE=4g ES_STARTUP_SLEEP_TIME=5 MAX_OPEN_FILES=65536
Elasticsearch相关的安全限制'/etc/security/limits.conf':
elasticsearch soft nofile 65536 elasticsearch hard nofile 65536 elasticsearch soft memlock unlimited elasticsearch hard memlock unlimited
索引范围类型
在更新到Elasticsearch 2.x之前,需要执行此步骤!
# curl -XGET localhost:9200/_all/_mapping/index_range; echo {}
如果输出为{},则我们不受影响,可以跳过此步骤。
否则,我们将需要删除index_range类型,Graylog不再使用它。
Graylog索引模板
删除索引模板:
# curl -X DELETE http://localhost:9200/_template/graylog-internal {"acknowledged":true}
Graylog将在下次启动时自动创建新的索引模板。
索引保留和旋转设置
在2.0.x中,索引旋转和保留设置已从Graylog服务器配置文件移至数据库,并且现在可以通过Web界面进行配置。
从1.x版本升级并修改了所有轮换/保留设置后,我们需要确保将旧设置保留在配置文件中,以便迁移过程将这些旧设置添加到数据库中。
否则,保留过程将使用默认设置,并且可能会删除很多索引。
Yum仓库
编辑文件“ /etc/yum.repos.d/elasticsearch.repo”以包括新的Elasticsearch 2.x存储库:
[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=0 [elasticsearch-2.x] name=Elasticsearch repository for 2.x packages baseurl=https://packages.elastic.co/elasticsearch/2.x/centos gpgcheck=1 gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch enabled=1
安装Elasticsearch:
# yum clean all # yum install elasticsearch # service elasticsearch restart
检查是否有明显的问题:
# tail -f /var/log/elasticsearch/graylog2.log
# curl -X GET 'http://10.8.143.13:9200/' { "name" : "Ororo Munroe", "cluster_name" : "graylog2", "cluster_uuid" : "59OCRIl5SOu8I61teQLpjQ", "version" : { "number" : "2.4.2", "build_hash" : "161c65a337d4b422ac0c805f284565cf2014bb84", "build_timestamp" : "2015-11-17T11:51:03Z", "build_snapshot" : false, "lucene_version" : "5.5.2" }, "tagline" : "You Know, for Search" }
# curl -X GET 'http://10.8.143.13:9200/_cluster/health?pretty' { "cluster_name" : "graylog2", "status" : "green", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 20, "active_shards" : 20, "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 }
如果Elasticsearch群集状态为红色,请注意,它需要几分钟的时间才能变为绿色。
Graylog 2.0.x
删除旧的Graylog 1.3存储库,然后为2.0安装新的存储库。
# yum remove graylog-1.3-repository-el6 # rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-2.0-repository_latest.rpm
也请删除Graylog Web软件包,因为它与Graylog 2.0.x不兼容。
# yum remove graylog-web
安装Graylog(这将升级到版本2.0.x):
# yum clean all # yum install graylog-server
完成后,打开文件“ /etc/graylog/server/server.conf”进行编辑,然后进行以下设置:
is_master = true node_id_file = /etc/graylog/server/node-id password_secret = <passwd> root_password_sha2 = <passwd> rest_listen_uri = http://10.8.143.13:12900/ rest_transport_uri = http://10.8.143.13:12900/ web_listen_uri = http://10.8.143.13:9000/ elasticsearch_index_prefix = graylog2 elasticsearch_cluster_name = graylog2 elasticsearch_discovery_zen_ping_multicast_enabled = false elasticsearch_discovery_zen_ping_unicast_hosts = 10.8.143.13:9300 elasticsearch_cluster_discovery_timeout = 10000 mongodb_useauth = false mongodb_uri = mongodb://localhost/graylog2
请注意,我们不会将集群名称或者数据库都从graylog2更改为graylog。
重新启动服务:
# service graylog-server restart
检查问题:
# tail -f /var/log/graylog-server/server.log
# curl -X GET 'http://10.8.143.13:12900/system/cluster/node' {"cluster_id":"6ddf78b8-3fae-43aa-a3d2-8cdf7ddca900","node_id":"604e0a3a-891b-47ef-a08e-66c68e604b82","type":"server","transport_address":"http://10.8.143.13:12900/","last_seen":"2015-12-12T18:20:27.000Z","short_node_id":"604e0a3a","hostname":"vm-graylog","is_master":true}
完成所有操作后,我们应该能够在http://10.8.143.13:9000/上登录Graylog WebUI。
将Graylog 2.0.x升级到2.1.x
一旦一切工作都按预期进行,并且对升级到版本2.0.x感到满意,我们就可以升级到2.1.x。
我们需要添加一个新的存储库:
# rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-2.1-repository_latest.rpm
升级Graylog。
这将保留我们现有的配置。
# yum clean all # yum install graylog-server
重新启动服务:
# service graylog-server restart
(可选)要在同一端口上运行REST API和Web界面,我们将需要以下内容:
rest_listen_uri = http://10.8.143.13:9000/api/ web_enable = true web_listen_uri = http://10.8.143.13:9000/ web_endpoint_uri = http://10.8.143.13:9000/api/ rest_transport_uri = http://10.8.143.13:9000/api/