What is beats plugin for logstash? - elasticsearch

I saw that logstash is used for sync data between a sql server and Elastic Search 5
In this example , it is shown that Logstash can use jdbc plugin for importing data from a database
But when I look at the available plugins, I notice one plugin named Beats,
it look like to also be used for importing data
I propapbly missanderstood , so is anybody acn explain me whatr the use of Beats plugin and hos is it used by logstash please?

Logstash currently has 52 ways of getting input. As you've seen, jdbc and beats are two. Each of the inputs serves a different use case. As described in the doc, jdbc is used to "ingest data in any database with a JDBC interface" while beats is used to "receive events from the Elastic Beats framework".
Depending on your needs, you would choose the appropriate input plugin.

Related

Where does Beats send the data?

I have a theoretical question about Beats.
If I understand correctly, Logstach allows to easily parse the received data and ingest it to ElasticSearch. So my question is, does Beats send the retrieved information directly to a Logstach profile or does Beats itself modify the data and ingest it directly into ElasticSearch?
Thanks in advance for your help
EDIT :
Important message
To summarize, when I configure Filebeat, I only fill in the
information from Elastic Cloud as output. That is to say the cloud ID
and the password of elasticsearch. So I don't fill in any output
information. My question is, when I use a module (Fortinet for
example), will Filebeat process the information and send it directly
to ElasticSearch or will it send it to Logstach by default? I need to
try to understand as much as possible to write a paper on this.
You can have both the option, you can send the data from beats to directly Elasticsearch or send it to logstash where again in logstash configuration you can mention which Elasticsearch it needs to send the data.
Refer configure the output page for more details and configurations ie Elasticsearch, kafka, redis, console etc.

How to sync with data from oracle to elastic search

I need to sync my oracle data with elastic search , when i search on net i found 3 ways it can be done
Using Logstash JDBC input plugin
Using Kafka connect JDBC
Using Elasticsearch JDBC input plugin
I am using jdk1.8 and elsaticsearch 7.2.
I want to use through JDBC input plugin i search for installer and steps to configure , not able to found .
Can you please guide me on that.
I would have gone for the Logstash JDBC input plugin plugin. Should be pretty straight forward and the continuous syncing is well documented.
PS: "Elasticsearch JDBC input plugin" are you sure there is such a thing? Generally you don't want to do any blocking (especially IO) calls in Elasticsearch — that's why Rivers were removed and we're careful not to add any such problems again.

Can Kafka be used as a messaging service between oracle and elasticsearch

Can Kafka be used as a messaging service between oracle and elastic search ? any downsides of this approach?
Kafka Connect provides you a JDBC Source and an Elasticsearch Sink.
No downsides that I am aware of, other than service maintenance.
Feel free to use Logstash instead, but Kafka provides better resiliency and scalability.
I have tried this in the past with Sql server instead of Oracle and it works great, and I am sure you could try the same approach with Oracle as well since I know the logstash JDBC plugin that I am going to describe below has support for Oracle DB.
So basically you would need a Logstash JDBC input plugin https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html that points to your Oracle DB instance and pushes the rows over to Kafka using the Kafka Output plugin https://www.elastic.co/guide/en/logstash/current/plugins-outputs-kafka.html.
Now to read the contents from Kafka you would need, another Logstash instance(this is the indexer) and use the Kafka input plugin https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kafka.html. And finally use the Elastic search output plugin in the Logstash indexer configuration file to push the events to Elastic Search.
So the pipeline would look like this,
Oracle -> Logstash Shipper -> Kafka -> Logstash Indexer -> Elastic search.
So overall I think this is a pretty scalable way to push events from your DB to Elastic search. Now, if you look at downsides, at times you can feel that there are one too many components in your pipeline and can be frustrating especially when you have failures. So you need to put in appropriate controls and monitoring at every level to make sure you have a functioning data aggregation pipeline that is described above. Give it a try and good luck!

Should I use elastic search for logging without logstash

I'm planning on using Elasticsearch to log all my application activities (like an audit log).
Considering how I have direct control over the application, should I directly push the data into Elasticsearch using their REST APIs or should I somehow use Logstash to feed data into Elasticsearch?
Is there any reason I should use Logstash when I can directly push data into Elasticsearch? It's an additional layer to manage.
If you need to parse different log formats (eventlog, syslog and so on), support different transports (UDP, TCP and so on) and log outputs use Logstash. If http is good for you and you collect logs only from one application use ES directly. Logstash is an additional tool. Details are here.

Why install logstash if I can just send the data through REST to elasticsearch?

I installed elasticsearch and kibana, and I'm following the tutorial.
https://www.elastic.co/guide/en/elasticsearch/reference/current/_index_and_query_a_document.html
And I'm perfectly inserting and reading data, e.g.:
PUT /customer/external/1?pretty
{
"name": "John Doe"
}
So, that makes me wonder, what do I need logstash or filebeats for?
My plan is to log each web request on a website to elasticsearch for analytics.
Do I need to install logstash? I don't understand what would I need it for.
(I don't plan to store it on a file)I will read the request info(e.g. ip address, time, user_id, etc) from a PHP script and simply send it through a HTTP REST REQUEST...as the example above to the elasticsearch server which will save the data anyway. So, I don't see any reason to store the data on the webserver(that is data duplicity), and If I wanted to, why would I need logstash anyway...I can just read a .log file and send it to elasticsearch....like this example: https://www.elastic.co/guide/en/elasticsearch/reference/current/_exploring_your_data.html
No, you do not have to install Logstash, if you plan to collect, normalize and write your application data yourself. As you correctly assumed, Logstash would be a replacement for your PHP script.
Nevertheless, you might still consider to have a look at Logstash. Since it is developed and maintained by same company taking care of Elastic Search, you could benefit from upcoming changes and optimizations.
As you can read from the introduction, Logstash is a tool to read data from multiple sources, normalize it and write the result to multiple destinations. For more details on which sources, filters and oputputs Logstash offers, you should also take a look at the pipeline documentation.

Resources