在Oracle Cloud Infrastructure(OCI)上安装了Graylog 3.0的尝试2
首先
在之前的文章中,试用Graylog的原因实际上有很多含义。
-
- 考虑未来的运用,可能不仅需要进行日志监控,还需要进行分析等吗?(如果只需要监控,可以使用Zabbix等工具,但如果还需要进行分析的话…)
其实我一直想了解Elasticsearch,但没有很清楚它,我能单独操作并理解吗?(虽然我已经接触过Graylog,但是否能理解还不确定,但起码可以作为一个契机)
与日志监控/分析的PaaS产品相比,它的价格会更高吗?(分析是PaaS吗?)
只是简单地想试试日志监控/分析类的开源软件。(稍微理解之后,下一步是ELK Stack了…)
這篇文章是我自己的備忘錄,我想簡單但是總結了上面提到的兩個問題。特別是關於Graylog的初始安裝時要如何設置Elasticsearch。因為只是按照手冊安裝,並沒有完全理解,所以我想一邊總結一邊釐清。(雖然我覺得現在才做可能有些晚,而且可能有很多錯誤。)
而且,这次主要是关于基本结构的理解。(未来,我想要了解Graylog关于Elasticsearch内部进行的操作)
Graylog配置的回顾
可以参考公式手册中关于Graylog的基本配置和大规模配置的说明。(深入洞察的URL也在手册中有提到)
Elasticsearch的基本架构。
-
- Cluster:Nodeの集合体。
-
- Node:Elasticsearch Server。性能分散等はこのNodeを増やして対応する。
-
- Index:Databaseみたいなもの。
-
- Type:Tableみたいなもの。 ← Elasticsearch 6.xから1つのIndexに1つのTypeとなったらしい。今後のロードマップではこのType自体も削除するらしいため、ここではもう触れない。
- Shard:Indexに対しての物理的な分散。(RAIDみたいな感じ)
听说按照粗略分类,可以分成这样。自己连这样的层次都不知道,真可怕。。
Graylog的集群
这是根据安装时在/etc/elasticsearch/elasticsearch.yml中记录的内容。
cluster.name: graylog
這就是情況。我們不特別深入討論它。。
Graylog的节点
因为Elasticsearch本身只安装了一个,所以节点也只有一个。
[opc@graylog ~]$ sudo curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
{
"cluster_name" : "graylog",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 1, ---★1つ
"number_of_data_nodes" : 1, ---★1つ
"active_primary_shards" : 8,
"active_shards" : 8,
"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
}
[opc@graylog ~]$
[opc@graylog ~]$ sudo curl -XGET 'http://localhost:9200/_cat/nodes'
10.0.0.2 19 26 0 0.00 0.00 0.00 mdi
[opc@graylog ~]$
Graylog索引

-
- Index prefix : cluster名と同じになる?
-
- Shards : 4つになるみたい。詳細はShardsの章で。
-
- Replicas : Elasticsearchは読み取り用Shardという位置付けでReplicaが作成される。デフォルトではGraylogは0で作成されるみたい。本格的に考えるなら構築が必須。
-
- Field type refresh interval : デフォルトは5秒。Graylogのマニュアルには書いていない。。。この間隔でRAMバッファの内容がディスクに新しいセグメントとして書き込まれ検索可能になる(らしい)。セグメントが多くなるとマージがされていくみたい。性能考えるとこの辺も要検討ポイントになりそう。
flushについて
refreshについて
これらの書かれ方を見ると、refreshは検索可能になるが、永続的に保持はされないように見えるので注意が必要かも。
Index rotation strategy : デフォルトはMessage Count。データの保持期間のようなもので、この設定だとメッセージ数となる。その他に、サイズや期間での設定が可能。
Max docs per index : 上記のローテーションが実施されるメッセージの数。選択したローテーションタイプでここの表示は変わる(はず)。
Index retention strategy : デフォルトはDelte。ローテーションの方式についてで、この場合は削除される。他にもCloseやArchiveもあるらしい。
Max Number of indices : デフォルトは20。ローテーションしたIndexが20に達すると、古い物から削除されていく。

Graylog的分片
虽然在索引章节中已经提及,但是Shard有四个,而Replicate的Shard没有。
[opc@graylog ~]$ sudo curl -XGET 'http://localhost:9200/_cat/shards'
messages_0 3 p STARTED 0 261b 127.0.0.1 sVkZ3BV
messages_0 1 p STARTED 0 261b 127.0.0.1 sVkZ3BV
messages_0 2 p STARTED 0 261b 127.0.0.1 sVkZ3BV
messages_0 0 p STARTED 0 261b 127.0.0.1 sVkZ3BV
graylog_0 3 p STARTED 5777 1.1mb 127.0.0.1 sVkZ3BV
graylog_0 1 p STARTED 5695 776kb 127.0.0.1 sVkZ3BV
graylog_0 2 p STARTED 5725 758kb 127.0.0.1 sVkZ3BV
graylog_0 0 p STARTED 5728 791.8kb 127.0.0.1 sVkZ3BV
[opc@graylog ~]$
graylog_0有4个分片。
其包括索引名称、分片编号、主/副本信息、状态、文档数量、大小、IP地址和节点名称。
默认情况下,它们物理上被放置在以下位置。
[opc@graylog ~]$ sudo ls -l /var/lib/elasticsearch/nodes/0/indices/EXDuCrKOQ9OwDJZpplNWRA
total 0
drwxr-xr-x. 5 elasticsearch elasticsearch 49 Mar 15 05:58 0
drwxr-xr-x. 5 elasticsearch elasticsearch 49 Mar 15 05:58 1
drwxr-xr-x. 5 elasticsearch elasticsearch 49 Mar 15 05:58 2
drwxr-xr-x. 5 elasticsearch elasticsearch 49 Mar 15 05:58 3
drwxr-xr-x. 2 elasticsearch elasticsearch 24 Mar 20 10:31 _state
尝试向群集中添加节点
因为我对结构有一点了解,所以我想在默认设置上添加节点到集群中。
在Oracle云基础架构(OCI)上创建实例后,根据以前的文章首先安装Java和Elasticsearch。通常,据说Elasticsearch会自动配置集群结构,只要在网络上存在相同的集群名称。但是由于无法使用多播,在没有使用多播的情况下,我们需要自己进行配置。(需要注意的是,任何云厂商都不能使用多播)。
如何向集群中添加节点
如果能够添加Compute,然后在初始服务器和添加的服务器上执行以下操作。
[opc@graylog ~]$ sudo vi /etc/elasticsearch/elasticsearch.yml
【以下を追加】
node.name: node-1 または node-2
network.hosts: 0.0.0.0 ---※1
discovery.zen.ping.unicast.hosts: ["**最初のサーバー**", "**追加したサーバー**"] ---※2
【ここまで】
※1:後々、面倒なのでListenを0.0.0.0にした。
※2:Internal IPアドレスで設定。
[opc@graylog ~]$ sudo systemctl restart elasticsearch.service
[opc@graylog ~]$
[opc@graylog ~]$ curl -XGET 'http://localhost:9200/_cat/nodes'
10.0.0.10 17 16 1 0.62 0.26 0.12 mdi - node-2 ---★Nodeが追加された
10.0.0.2 13 26 2 0.26 0.25 0.19 mdi * node-1
[opc@graylog ~]$
[opc@graylog ~]$ curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
{
"cluster_name" : "graylog",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 2, ---★nodeが追加された
"number_of_data_nodes" : 2, ---★nodeが追加された
"active_primary_shards" : 8,
"active_shards" : 8,
"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
}
[opc@graylog ~]$
接着,我們將在第一個伺服器上執行以下操作:
[opc@graylog ~]$ sudo vi /etc/graylog/server/server.conf
【以下を修正】
elasticsearch_hosts = http://"**最初のサーバー**":9200,http://"**追加したサーバー**":9200
【ここまで】
[opc@graylog ~]$ sudo systemctl restart graylog-server.service
[opc@graylog ~]$
我们来确认一下最后Shard的布局是否有改变。也从最初的服务器开始确认。
[opc@graylog ~]$ curl -XGET 'http://localhost:9200/_cat/shards'
messages_0 2 p STARTED 0 261b 10.0.0.2 node-1
messages_0 1 p STARTED 0 261b 10.0.0.10 node-2
messages_0 3 p STARTED 0 261b 10.0.0.2 node-1
messages_0 0 p STARTED 0 261b 10.0.0.10 node-2
graylog_0 2 p STARTED 5845 1.1mb 10.0.0.2 node-1
graylog_0 1 p STARTED 5822 786.4kb 10.0.0.10 node-2
graylog_0 3 p STARTED 5906 1.1mb 10.0.0.2 node-1
graylog_0 0 p STARTED 5833 1.1mb 10.0.0.10 node-2
[opc@graylog ~]$
就像上面所示的那样,分片现在已经在节点1和2上进行了分散。
最后
我对Elasticsearch的基础了解已经可以了,下一步我想要确认一下日志设置等方面的内容。