Skip to content
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

promtail: Inject tenant ID when receiving X-Scope-OrgID in heroku target #6695

Merged
merged 2 commits into from
Jul 18, 2022

Conversation

thepalbi
Copy link
Contributor

What this PR does / why we need it:
In a recent PR, a new promtail target was added for receiving logs from Heroku HTTPS Drains. This target exposes and http server, which receives request from either Heroku's logging service, or from some other source (a proxy for example). To be able to support multitenancy in this new target, and implementing this in a path consistent with the resto of promtail, this PR extracts the X-Scope-OrgID header from the incoming request, and injects its value in promtail's tenant ID reserver label.

In the future, we'd like to use this same approach in other HTTP-exposing targets, for supporting multitenant promtails.

Which issue(s) this PR fixes:
Follow up of 0e28452
Related to https://github.com/grafana/cloud-onboarding/issues/1839

Special notes for your reviewer:
This is part of this larger approach.

Checklist

  • Documentation added
  • Tests updated
  • Is this an important fix or new feature? Add an entry in the CHANGELOG.md.
  • Changes that require user attention or interaction to upgrade are documented in docs/sources/upgrading/_index.md

@thepalbi thepalbi requested a review from a team as a code owner July 15, 2022 16:44
@MasslessParticle
Copy link
Contributor

👍 This looks consistent with what promtail expects for sending in a multi-tenant situation

Copy link
Contributor

@kavirajk kavirajk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@grafanabot
Copy link
Collaborator

./tools/diff_coverage.sh ../loki-main/test_results.txt test_results.txt ingester,distributor,querier,querier/queryrange,iter,storage,chunkenc,logql,loki

Change in test coverage per package. Green indicates 0 or positive change, red indicates that test coverage for a package fell.

+           ingester	0%
+        distributor	0%
+            querier	0%
+ querier/queryrange	0%
+               iter	0%
+            storage	0%
+           chunkenc	0%
+              logql	0%
+               loki	0%

@kavirajk
Copy link
Contributor

@thepalbi can you rebase to main please? CI failing with some jsonnet checks un-related to your changes. We will merge the PR once CI passes.

@thepalbi thepalbi force-pushed the pablo/inject-tenantid-header branch from 36a7876 to 5f13b70 Compare July 18, 2022 14:26
@grafanabot
Copy link
Collaborator

./tools/diff_coverage.sh ../loki-main/test_results.txt test_results.txt ingester,distributor,querier,querier/queryrange,iter,storage,chunkenc,logql,loki

Change in test coverage per package. Green indicates 0 or positive change, red indicates that test coverage for a package fell.

+           ingester	0%
+        distributor	0%
+            querier	0%
+ querier/queryrange	0%
+               iter	0%
+            storage	0%
+           chunkenc	0%
+              logql	0%
+               loki	0%

@MasslessParticle MasslessParticle merged commit d4cdc37 into main Jul 18, 2022
@MasslessParticle MasslessParticle deleted the pablo/inject-tenantid-header branch July 18, 2022 14:40
DylanGuedes added a commit that referenced this pull request Jul 18, 2022
* Update production-ready Loki in docker-compose (#6691)

* Improved docker-compose setup:

- S3-like storage
- Interactive debugging by optionally exposing dlv ports
- Improve performance
- Use SSD mode (read/write)
- GroupCache
- Latest versions of loki, promtail, grafana
- Scaling

* Adding diagram & updated README

Signed-off-by: Danny Kopping <danny.kopping@grafana.com>

* Upgrade guide

Signed-off-by: Danny Kopping <danny.kopping@grafana.com>

* Adding steps to build debug image

Signed-off-by: Danny Kopping <danny.kopping@grafana.com>

* Add prometheus

Signed-off-by: Danny Kopping <danny.kopping@grafana.com>

* Add datasources and disable Grafana auth

Signed-off-by: Danny Kopping <danny.kopping@grafana.com>

* Add configurable groupcache capacity (#6678)

* Add configurable groupcache capacity

Signed-off-by: Danny Kopping <danny.kopping@grafana.com>

* Improving the verbiage for clarity - thanks Travis!

Changed the default size to 100MB

Signed-off-by: Danny Kopping <danny.kopping@grafana.com>

* Adding config docs

Signed-off-by: Danny Kopping <danny.kopping@grafana.com>

* Removed test - it was pretty redundant, plus groupcache panics if you try init its http server more than once

Signed-off-by: Danny Kopping <danny.kopping@grafana.com>

* updated versions to the latest release v2.6.1 (#6703)

* updated versions to the latest release v2.6.1 (#6705)

* Add function to reset boltDBIndexClientWithShipper singleton

In a downstream project I have a test case that creates multiple stores
with different BoltDB shipper schema configurations. Since the client
for the store is a singleton and is re-used, there needs to be a
function to reset it as well.

This function must only be used in tests.

Signed-off-by: Christian Haudum <christian.haudum@gmail.com>

* promtail: Inject tenant ID when receiving X-Scope-OrgID in heroku target (#6695)

* inject tenant ID header

* fix import order

* Add push route (#6616)

* Loki: Return an __error_details__ label for any line which incurs a __error__ while being processed (#6543)

* adds an __error_details__ label which includes any details available about a logql error.

Signed-off-by: Edward Welch <edward.welch@grafana.com>

* fix lint, changed a test a little

Signed-off-by: Edward Welch <edward.welch@grafana.com>

* reset error details in Reset() function

Signed-off-by: Edward Welch <edward.welch@grafana.com>

* Loki: Do not store exact log line duplicates (now including unordered inserts) (#6642)

* do not insert log lines which are an exact duplicate in both timestamp and log content

Signed-off-by: Edward Welch <edward.welch@grafana.com>

* update test to now ignore dupes pushed out of order

Signed-off-by: Edward Welch <edward.welch@grafana.com>

* make the test unordered to be more thorough

Signed-off-by: Edward Welch <edward.welch@grafana.com>

Co-authored-by: Danny Kopping <danny.kopping@grafana.com>
Co-authored-by: Vladyslav Diachenko <82767850+vlad-diachenko@users.noreply.github.com>
Co-authored-by: Christian Haudum <christian.haudum@gmail.com>
Co-authored-by: Pablo <2617411+thepalbi@users.noreply.github.com>
Co-authored-by: Salva Corts <salva.corts@grafana.com>
Co-authored-by: Ed Welch <edward.welch@grafana.com>
lxwzy pushed a commit to lxwzy/loki that referenced this pull request Nov 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants