Proper allocation of computing resources

Hi community!

I have already installed all-in-one server:

graylog-server 7.1.3
graylog-datanode 7.1.3
mongodb

Hardware of this bare-metal install is - 32thread CPU and 64GB ram

i need proper config to allocate as flexibly as possible this resources.

Now im have stuck with this - all my extractors and pipelines makes my server huge pain cuz i see parsed messages only 1 hour old - others in a queue on parse and about 50million message average on utilization unprocessed messages

i already set at server.conf

processbuffer_processors = 20
outputbuffer_processors = 10**

and this is not make any sense**

hey @igoriceg,

Is this hardware dedicated to Graylog or is does the Data Node and mongo also exist on this node?

What is the heap value assigned to Graylog?

Is the process buffer at 100% and the output buffer empty or is the output buffer also 100%?

It would also be worthwhile to see which streams/pipelines/rules are consuming the most compute. Could you expand on your approach to parsing data, for example, are you separating the logs into individual streams with pipelines attached to those streams so that only the related logs to that processing are being evaluated.

An aggregation like the one below might help give some insight.

@Wine_Merchant

HEAP you mean this?

my concept of logging to graylog is :

grayog receive raw syslog on 514 udp

then i created about 40 extractors which find a string CEF and then via regexp making extracting field

also i have about 10 platforms, which have unique source_ip. so i created on every platform own stream with typical rules - if source ip match - data go to this stream

===========
about pipelines - from all data that coursed on graylog - every message (which have string CEF) - checks via regexp to find a field srcIP, when it finds - makes new field srcIPP. simmilary makes with dstIP

and then i compared fields dstIP and srcIP - and on my rules - this go to specific stream/

its only 1 pipeline with 2 stages inside - check srcip dstip, and then compare values and then writes to stream

all my install is one hardware with 32 threaded cpu 64gb ram. bare metal linux, red hat like

and on this baremetal i have

graylog-server
graylog-datanode
mongodb

this baremetal server is dedicated only for graylog

The fact that output buffer is 100% indicates the issue is with the indexer (Data Node) being unable to keep up with the load.

Generally it is preferred that the components that comprise Graylog (Graylog, Mongo and Data Node) are separated to avoid resource contention.

What heap value is set for Data Node? This will be found under the opensearch_heap option within the datanode.conf file. Also what is your current daily ingest in GB, this can be found under System/Overview.

current value on /etc/graylog/datanode/datanode.conf

opensearch_heap = 31g

can i increase this value up to 60g ?

about ingest

Thanks for providing all this, the heap is as expected which is good to see. However, the ingest is very high for a single node to index.

Realistically, you would want an load balanced setup of 2 - 3 Graylog Nodes and 3 Data Nodes to handle 800GB of ingest per day. Is the current 800GB required are can you reduce this by dropping logs that are not of high value?

if it were 2nodes - how much threaded cpu on ram i need on each node&

Part of the sizing of a cluster is predicated on data retention, for how long you wish to store searchable logs.

The below would be suitable for between 800GB - 1000GB ingest per day, searchable for 30 days with no replicas of the data.

Data Node x3 - 16 vCPU, 64GB RAM, 10TB Data store
Graylog/Mongo x3 - 16 vCPU, 32GB RAM