-
Notifications
You must be signed in to change notification settings - Fork 75
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
WIP: add configuration management and authentication features #57
Conversation
Resolves: epoch8#54, epoch8#55, epoch8#56 More info: This commit adds the support for the configuration of the exporter via `prometheus_exporter` section of Airflow configuration. The keys with `expose_` prefix enable or disable the exposure of certain class of metrics. For example, Airflow variables-related metrics are not exposed by default. However, with `expose_variables` set to `True`, the exporter will start exposing the metrics. Similarly, by default, the exporter exposes scheduler-related metrics. However, with `expose_scheduler` set to `False`, the exporter will not export them. Additionally, when `expose_config` is being enabled, the exporter will expose a subset of `core` and `prometheus_exporter` configuration settings. ``` [prometheus_exporter] auth_enabled = True auth_token = 4e1dba1c-2b66-4275-b8ae-292ee9665fa1 expose_variables = True expose_config = False expose_scheduler = False ``` It is possible to disable the exporter: ``` [prometheus_exporter] disabled = True ``` When authentication is enabled, the metrics are accessible via: ```bash curl -v -H 'Authorization: Bearer 4e1dba1c-2b66-4275-b8ae-292ee9665fa1' https://localhost:8443/admin/metrics/ ``` Also, when the authentication is enabled, Prometheus scrape job might look like this: ```yaml - job_name: 'airflow_exporters' metrics_path: /admin/metrics/ scheme: https tls_config: insecure_skip_verify: true bearer_token: '4e1dba1c-2b66-4275-b8ae-292ee9665fa1' scrape_interval: 5m static_configs: - targets: - '127.0.0.1:8443' labels: environment: 'dev' relabel_configs: - source_labels: [__address__] regex: "^(.*):(.*)$" target_label: instance replacement: ${1} - source_labels: [instance] regex: "^(127.0.0.1)$" target_label: instance replacement: "airflow" ```
@greenpau nice job! Is it ready for review? |
@elephantum , not yet. I will ping you when it is done. |
beb1e85
to
39cbac1
Compare
@elephantum , conceptually, you could try reviewing the exporter. Also, do you think it is the code or the test itself causing the below? |
It is difficult to review this PR because you did so many changes at once + renamed files. Let’s discuss if it is possible to split this PR into several that are incremental and change only small parts of code at a time. |
@elephantum, unfortunately, I don’t have much time to work on splitting it. By and large, it has these major changes:
Additionally, it:
|
Resolves: #54, #55, #56
More info:
This commit adds the support for the configuration of the exporter via
prometheus_exporter
section of Airflow configuration.The keys with
expose_
prefix enable or disable the exposure of certain classof metrics. For example, Airflow variables-related metrics are not exposed by
default. However, with
expose_variables
set toTrue
, the exporter will startexposing the metrics. Similarly, by default, the exporter exposes scheduler-related
metrics. However, with
expose_scheduler
set toFalse
, the exporter willnot export them.
Additionally, when
expose_config
is being enabled, the exporter will exposea subset of
core
andprometheus_exporter
configuration settings.It is possible to disable the exporter:
When authentication is enabled, the metrics are accessible via:
curl -v -H 'Authorization: Bearer 4e1dba1c-2b66-4275-b8ae-292ee9665fa1' https://localhost:8443/admin/metrics/
Also, when the authentication is enabled, Prometheus scrape job
might look like this: