-
Notifications
You must be signed in to change notification settings - Fork 8.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Logstash pipelines with Elasticsearch output can vanish from Monitoring app #52245
Comments
Pinging @elastic/stack-monitoring (Team:Monitoring) |
Cc @ycombinator |
Here is a Document containing
|
The problem may be that when we have an Elasticsearch plugin that we introduce a Good pipeline document
"Bad" pipeline document
|
I tried a few times to set
After setting the |
@ycombinator I wonder if we should look at the behavior here? Should we prefer |
@cachedout I'm a bit confused. I don't recall us ever implementing a |
@ycombinator Ah, you know what, this is actually my mistake. I had thought that this change extended to Metricbeat modules as well, and specifically to Logstash. (I could have sworn that Logstash was involved in that conversation but I can't find any evidence of that now.) Anyhow, go ahead and disregard my comment. |
@jarpy I might know what's going on here. When you run the good and bad pipelines without the ES output in either of them, and use Metricbeat to monitor them, what cluster do those two pipelines show up under in the Stack Monitoring UI? You can see the cluster ID at the very top of the Logstash Pipeline Listing page as part of the breadcrumb navigation. It will look something like Clusters / CLUSTER_ID_HERE / Logstash. |
Cool, thanks for looking. With the ES output disabled, both pipelines are listed under |
With the output enabled, only one cluster (the |
Thanks. Now when you enable the ES output in the bad pipeline, click on Clusters in the breadcrumb navigation. That will take you to the Cluster Listing page. Do you see two clusters on that page? If so, click the cluster that's not `Standalone Cluster. Do you then see a Logstash section on the next page? If so, click the Pipelines link in the Logstash section. Do you see your bad pipeline (and only your bad pipeline) in there? |
Interesting. So if you click on Clusters at the top of that screenshot you're just brought back to the same page? You don't see the Cluster Listing page with a table showing 2 clusters in it? |
Correct. Clicking |
Ah! The URI is:
Does that imply a filter for the Standalone Cluster? |
I should add that in my actual use-case, I ship data to multiple ES clusters and have multiple pipelines, though only one pipeline contains ES outputs. All monitoring happens on a dedicated monitoring cluster. |
Alright, I think I know why we're not seeing the Cluster Listing page when you click Clusters at the top. I just noticed that in your Metricbeat configuration you are monitoring Logstash, but not Elasticsearch. So what's going on is this:
Obviously, this setup requirement is... not obvious 😄. Before we get to talking about how to solve this issue, could you confirm my theory above? To do this, could you have Metricbeat monitor the same Elasticsearch cluster as the one in your "bad" Logstash pipeline output? Then let me know if you see two clusters (Standalone and another one) when you click on Clusters in the UI breadcrumb nav. |
Very interesting! I added Elasticsearch monitoring (see above patch). The Monitoring interface now displays two clusters, both of which contain the Logstash instance (one-to-many representation of the Logstash instance): The The This one-to-many appearance of the Logstash instance is really interesting. I can also imagine it getting quickly out of hand in my production application, which uses a single LS cluster to route to an ever-growing set of Elasticsearch clusters. My intent is to use Monitoring to monitor Logstash, and only Logstash. |
Right, so what you should see (with Elasticsearch monitoring also enabled for each of those clusters), is that the Logstash pipeline appears under the cluster to which it is sending data. This means, if a single Logstash pipeline sends data to multiple ES clusters, that Logstash pipeline will appear under each of those clusters in the Stack Monitoring UI.
Traditionally, i.e. with the "internal collection" monitoring approach, this has not been a supported use case. Because of the way the Stack Monitoring UI is organized (where data is grouped by a Production ES cluster), it also has been a requirement that that Production ES cluster be monitored as well. With internal collection this hasn't been much of an issue because the monitoring data is shipped from Logstash => Production ES cluster => Monitoring ES cluster. In such a setup, when monitoring collection is enabled on the Production ES cluster, it enables the passing through of the Logstash monitoring data but also enables the collection of the Production ES cluster's monitoring data as well. In the new, "metricbeat collection" approach, we introduced the concept of a "Standalone Cluster". The idea behind this was to group instances of Beats or Logstash that don't have an Elasticsearch cluster anywhere in the picture (e.g. a Beat that's not using Thanks for bringing up this use case. It's up to @elastic/stack-monitoring to decide how we want to handle it but here are my suggestions:
|
I think we should definitely go ahead and do 1 from above, as it will give a consistent experience between logstash and beats. For 2, I agree it's a direction we want to take. I don't know if we have any tickets around this, but maybe @cachedout knows |
I'm using internal monitoring in production right now, and I get an outcome that suits my use case. I figured I was only monitoring Logstash, but...
I realise now that I have been "gaming the system", and the cluster that I think of as the monitoring cluster is self-monitoring, and is thus also the "production cluster" required to make the interface play along. I probably clicked the one-click setup at some point (which works amazingly well). It's just a matter of perspective. Some people have a production cluster that is also a [self-]monitoring cluster. I have a monitoring cluster that is doing enough to qualify as "production". In practice, my goal is just to have a good monitoring view of my Logstash cluster, but I don't mind having the self-monitored Elasticsearch cluster show up, naturally. My production application is essentially "Logstash as a Service", and the downstream Elasticsearch clusters (and other components) are not my concern. Currently, the result is fine when using internal monitoring, but a bit strange when using Metricbeat. |
Oh, I should just mention as a curiosity:
I actually don't do this in my (working) production environment. I do:
|
I'm going to close this issue because it seems like elastic/logstash#11066 fixed the issue. |
Kibana version:
7.5.0
Elasticsearch version:
7.5.0
Server OS version:
Official Docker images
Browser version:
Chromium Version 78.0.3904.108 (Official Build) Arch Linux (64-bit)
Browser OS version:
Arch Linux
Original install method (e.g. download page, yum, from source, etc.):
Offical Docker images
Describe the bug:
When using external monitoring (via Metricbeat) to monitor Logstash pipelines, a pipeline may not appear in the Monitoring application when that pipeline has an Elasticsearch output declared.
Steps to reproduce:
A full, automated reproduction is available as a Docker Compose stack here:
https://github.com/elastic/logstash-external-monitoring-repro
docker-compose up
elastic
, passwordnomnom
Expected behaviour:
Two pipelines are shown (and are, if you comment out the Elasticsearch output in the Logstash pipeline configuration).
Screenshots:
With ES output:
Without ES output:
The text was updated successfully, but these errors were encountered: