在CentOS 6上将Graylog服务器从1.3.x升级到2.0.x

时间:2020-03-21 11:43:56  来源:igfitidea点击:

将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/