diff --git a/Makefile b/Makefile index 04b3bff8..5b24f973 100644 --- a/Makefile +++ b/Makefile @@ -28,10 +28,15 @@ clean: ## Cleanup .PHONY: check check: check-poetry check-helm ## Check requirements -.PHONY: init ## Initialize environment -init: +.PHONY: init +init: ## Initialize environment poetry install - $(ANSIBLE_VENV)/bin/pre-commit install + $(VENV)/bin/pre-commit install + +# .PHONY: init ## Initialize environment +# init: +# poetry install +# $(ANSIBLE_VENV)/bin/pre-commit install # ==================================== # H E L M diff --git a/charts/thanos-mixin/Chart.yaml b/charts/thanos-mixin/Chart.yaml index 849d902f..8baf67aa 100644 --- a/charts/thanos-mixin/Chart.yaml +++ b/charts/thanos-mixin/Chart.yaml @@ -28,7 +28,7 @@ keywords: # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.7.0 +version: 0.8.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/charts/thanos-mixin/README.md b/charts/thanos-mixin/README.md index 80a03537..f79cfc35 100644 --- a/charts/thanos-mixin/README.md +++ b/charts/thanos-mixin/README.md @@ -1,6 +1,6 @@ # thanos-mixin -![Version: 0.7.0](https://img.shields.io/badge/Version-0.7.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.17.1](https://img.shields.io/badge/AppVersion-0.17.1-informational?style=flat-square) +![Version: 0.8.0](https://img.shields.io/badge/Version-0.8.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.17.1](https://img.shields.io/badge/AppVersion-0.17.1-informational?style=flat-square) A Helm chart for Thanos Mixin diff --git a/charts/thanos-mixin/templates/alerts.yaml b/charts/thanos-mixin/templates/alerts.yaml index 28c00356..e0b66efa 100644 --- a/charts/thanos-mixin/templates/alerts.yaml +++ b/charts/thanos-mixin/templates/alerts.yaml @@ -2,7 +2,7 @@ apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: - name: {{ printf "%s-%s" (include "thanos-mixin.fullname" .) "alerts" | trunc 63 | trimSuffix "-" }} + name: {{ printf "%s-%s" (include "thanos-mixin.fullname" .) "rules" | trunc 63 | trimSuffix "-" }} namespace: {{ include "thanos-mixin.namespace" . }} labels: app: {{ include "thanos-mixin.name" . }} @@ -16,12 +16,12 @@ metadata: {{- end }} spec: groups: - - name: thanos-compact.rules + - name: thanos-compact rules: - alert: ThanosCompactMultipleRunning annotations: - description: No more than one Thanos Compact instance should be running at once. - There are {{`{{`}}$value{{`}}`}} + description: No more than one Thanos Compact instance should be running at once. There are {{`{{`}} $value {{`}}`}} + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanoscompactmultiplerunning summary: Thanos Compact has multiple instances running. expr: sum(up{job=~"thanos-compact.*"}) > 1 for: 5m @@ -30,6 +30,7 @@ spec: - alert: ThanosCompactHalted annotations: description: Thanos Compact {{`{{`}}$labels.job{{`}}`}} has failed to run and now is halted. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanoscompacthalted summary: Thanos Compact has failed to run ans is now halted. expr: thanos_compact_halted{job=~"thanos-compact.*"} == 1 for: 5m @@ -37,7 +38,8 @@ spec: severity: warning - alert: ThanosCompactHighCompactionFailures annotations: - description: Thanos Compact {{`{{`}}$labels.job{{`}}`}} is failing to execute {{`{{`}}$value | humanize{{`}}`}}% of compactions. + description: Thanos Compact {{`{{`}}$labels.job{{`}}`}} is failing to execute {{`{{`}} $value | humanize {{`}}`}}% of compactions. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanoscompacthighcompactionfailures summary: Thanos Compact is failing to execute compactions. expr: | ( @@ -51,7 +53,8 @@ spec: severity: warning - alert: ThanosCompactBucketHighOperationFailures annotations: - description: Thanos Compact {{`{{`}}$labels.job{{`}}`}} Bucket is failing to execute {{`{{`}}$value | humanize{{`}}`}}% of operations. + description: Thanos Compact {{`{{`}}$labels.job{{`}}`}} Bucket is failing to execute {{`{{`}} $value | humanize {{`}}`}}% of operations. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanoscompactbuckethighoperationfailures summary: Thanos Compact Bucket is having a high number of operation failures. expr: | ( @@ -65,18 +68,18 @@ spec: severity: warning - alert: ThanosCompactHasNotRun annotations: - description: Thanos Compact {{`{{`}}$labels.job{{`}}`}} has not uploaded anything for 24 - hours. + description: Thanos Compact {{`{{`}}$labels.job{{`}}`}} has not uploaded anything for 24 hours. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanoscompacthasnotrun summary: Thanos Compact has not uploaded anything for last 24 hours. - expr: (time() - max(max_over_time(thanos_objstore_bucket_last_successful_upload_time{job=~"thanos-compact.*"}[24h]))) - / 60 / 60 > 24 + expr: (time() - max(max_over_time(thanos_objstore_bucket_last_successful_upload_time{job=~"thanos-compact.*"}[24h]))) / 60 / 60 > 24 labels: severity: warning - - name: thanos-query.rules + - name: thanos-query rules: - alert: ThanosQueryHttpRequestQueryErrorRateHigh annotations: - description: Thanos Query {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}}$value | humanize{{`}}`}}% of "query" requests. + description: Thanos Query {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}} $value | humanize {{`}}`}}% of "query" requests. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosqueryhttprequestqueryerrorratehigh summary: Thanos Query is failing to handle requests. expr: | ( @@ -89,7 +92,8 @@ spec: severity: critical - alert: ThanosQueryHttpRequestQueryRangeErrorRateHigh annotations: - description: Thanos Query {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}}$value | humanize{{`}}`}}% of "query_range" requests. + description: Thanos Query {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}} $value | humanize {{`}}`}}% of "query_range" requests. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosqueryhttprequestqueryrangeerrorratehigh summary: Thanos Query is failing to handle requests. expr: | ( @@ -102,7 +106,8 @@ spec: severity: critical - alert: ThanosQueryGrpcServerErrorRate annotations: - description: Thanos Query {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}}$value | humanize{{`}}`}}% of requests. + description: Thanos Query {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}} $value | humanize {{`}}`}}% of requests. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosquerygrpcservererrorrate summary: Thanos Query is failing to handle requests. expr: | ( @@ -116,7 +121,8 @@ spec: severity: warning - alert: ThanosQueryGrpcClientErrorRate annotations: - description: Thanos Query {{`{{`}}$labels.job{{`}}`}} is failing to send {{`{{`}}$value | humanize{{`}}`}}% of requests. + description: Thanos Query {{`{{`}}$labels.job{{`}}`}} is failing to send {{`{{`}} $value | humanize {{`}}`}}% of requests. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosquerygrpcclienterrorrate summary: Thanos Query is failing to send requests. expr: | ( @@ -129,8 +135,8 @@ spec: severity: warning - alert: ThanosQueryHighDNSFailures annotations: - description: Thanos Query {{`{{`}}$labels.job{{`}}`}} have {{`{{`}}$value | humanize{{`}}`}}% of failing - DNS queries for store endpoints. + description: Thanos Query {{`{{`}}$labels.job{{`}}`}} have {{`{{`}} $value | humanize {{`}}`}}% of failing DNS queries for store endpoints. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosqueryhighdnsfailures summary: Thanos Query is having high number of DNS failures. expr: | ( @@ -143,7 +149,8 @@ spec: severity: warning - alert: ThanosQueryInstantLatencyHigh annotations: - description: Thanos Query {{`{{`}}$labels.job{{`}}`}} has a 99th percentile latency of {{`{{`}}$value{{`}}`}} seconds for instant queries. + description: Thanos Query {{`{{`}}$labels.job{{`}}`}} has a 99th percentile latency of {{`{{`}} $value {{`}}`}} seconds for instant queries. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosqueryinstantlatencyhigh summary: Thanos Query has high latency for queries. expr: | ( @@ -156,7 +163,8 @@ spec: severity: critical - alert: ThanosQueryRangeLatencyHigh annotations: - description: Thanos Query {{`{{`}}$labels.job{{`}}`}} has a 99th percentile latency of {{`{{`}}$value{{`}}`}} seconds for range queries. + description: Thanos Query {{`{{`}}$labels.job{{`}}`}} has a 99th percentile latency of {{`{{`}} $value {{`}}`}} seconds for range queries. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosqueryrangelatencyhigh summary: Thanos Query has high latency for queries. expr: | ( @@ -167,11 +175,12 @@ spec: for: 10m labels: severity: critical - - name: thanos-receive.rules + - name: thanos-receive rules: - alert: ThanosReceiveHttpRequestErrorRateHigh annotations: - description: Thanos Receive {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}}$value | humanize{{`}}`}}% of requests. + description: Thanos Receive {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}} $value | humanize {{`}}`}}% of requests. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosreceivehttprequesterrorratehigh summary: Thanos Receive is failing to handle requests. expr: | ( @@ -184,7 +193,8 @@ spec: severity: critical - alert: ThanosReceiveHttpRequestLatencyHigh annotations: - description: Thanos Receive {{`{{`}}$labels.job{{`}}`}} has a 99th percentile latency of {{`{{`}}$value{{`}}`}} seconds for requests. + description: Thanos Receive {{`{{`}}$labels.job{{`}}`}} has a 99th percentile latency of {{`{{`}} $value {{`}}`}} seconds for requests. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosreceivehttprequestlatencyhigh summary: Thanos Receive has high HTTP requests latency. expr: | ( @@ -197,7 +207,8 @@ spec: severity: critical - alert: ThanosReceiveHighReplicationFailures annotations: - description: Thanos Receive {{`{{`}}$labels.job{{`}}`}} is failing to replicate {{`{{`}}$value | humanize{{`}}`}}% of requests. + description: Thanos Receive {{`{{`}}$labels.job{{`}}`}} is failing to replicate {{`{{`}} $value | humanize {{`}}`}}% of requests. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosreceivehighreplicationfailures summary: Thanos Receive is having high number of replication failures. expr: | thanos_receive_replication_factor > 1 @@ -220,7 +231,8 @@ spec: severity: warning - alert: ThanosReceiveHighForwardRequestFailures annotations: - description: Thanos Receive {{`{{`}}$labels.job{{`}}`}} is failing to forward {{`{{`}}$value | humanize{{`}}`}}% of requests. + description: Thanos Receive {{`{{`}}$labels.job{{`}}`}} is failing to forward {{`{{`}} $value | humanize {{`}}`}}% of requests. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosreceivehighforwardrequestfailures summary: Thanos Receive is failing to forward requests. expr: | ( @@ -233,7 +245,8 @@ spec: severity: warning - alert: ThanosReceiveHighHashringFileRefreshFailures annotations: - description: Thanos Receive {{`{{`}}$labels.job{{`}}`}} is failing to refresh hashring file, {{`{{`}}$value | humanize{{`}}`}} of attempts failed. + description: Thanos Receive {{`{{`}}$labels.job{{`}}`}} is failing to refresh hashring file, {{`{{`}} $value | humanize {{`}}`}} of attempts failed. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosreceivehighhashringfilerefreshfailures summary: Thanos Receive is failing to refresh hasring file. expr: | ( @@ -248,15 +261,16 @@ spec: - alert: ThanosReceiveConfigReloadFailure annotations: description: Thanos Receive {{`{{`}}$labels.job{{`}}`}} has not been able to reload hashring configurations. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosreceiveconfigreloadfailure summary: Thanos Receive has not been able to reload configuration. - expr: avg(thanos_receive_config_last_reload_successful{job=~"thanos-receive.*"}) - by (job) != 1 + expr: avg(thanos_receive_config_last_reload_successful{job=~"thanos-receive.*"}) by (job) != 1 for: 5m labels: severity: warning - alert: ThanosReceiveNoUpload annotations: description: Thanos Receive {{`{{`}} $labels.instance {{`}}`}} of {{`{{`}}$labels.job{{`}}`}} has not uploaded latest data to object storage. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosreceivenoupload summary: Thanos Receive has not uploaded latest data to object storage. expr: | (up{job=~"thanos-receive.*"} - 1) @@ -265,30 +279,43 @@ spec: for: 3h labels: severity: critical - - name: thanos-sidecar.rules + - name: thanos-sidecar rules: - alert: ThanosSidecarPrometheusDown annotations: - description: Thanos Sidecar {{`{{`}}$labels.job{{`}}`}} {{`{{`}} $labels.pod {{`}}`}} cannot connect to Prometheus. + description: Thanos Sidecar {{`{{`}}$labels.job{{`}}`}} {{`{{`}}$labels.pod{{`}}`}} cannot connect to Prometheus. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanossidecarprometheusdown summary: Thanos Sidecar cannot connect to Prometheus expr: | sum by (job, pod) (thanos_sidecar_prometheus_up{job=~"thanos-sidecar.*"} == 0) for: 5m labels: severity: critical + - alert: ThanosSidecarBucketOperationsFailed + annotations: + description: Thanos Sidecar {{`{{`}}$labels.job{{`}}`}} {{`{{`}}$labels.pod{{`}}`}} bucket operations are failing + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanossidecarbucketoperationsfailed + summary: Thanos Sidecar bucket operations are failing + expr: | + rate(thanos_objstore_bucket_operation_failures_total{job=~"thanos-sidecar.*"}[5m]) > 0 + for: 5m + labels: + severity: critical - alert: ThanosSidecarUnhealthy annotations: - description: Thanos Sidecar {{`{{`}}$labels.job{{`}}`}} {{`{{`}} $labels.pod {{`}}`}} is unhealthy for {{`{{`}}$value{{`}}`}} seconds. + description: Thanos Sidecar {{`{{`}}$labels.job{{`}}`}} {{`{{`}}$labels.pod{{`}}`}} is unhealthy for {{`{{`}} $value {{`}}`}} seconds. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanossidecarunhealthy summary: Thanos Sidecar is unhealthy. expr: | time() - max(thanos_sidecar_last_heartbeat_success_time_seconds{job=~"thanos-sidecar.*"}) by (job, pod) >= 600 labels: severity: critical - - name: thanos-store.rules + - name: thanos-store rules: - alert: ThanosStoreGrpcErrorRate annotations: - description: Thanos Store {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}}$value | humanize{{`}}`}}% of requests. + description: Thanos Store {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}} $value | humanize {{`}}`}}% of requests. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosstoregrpcerrorrate summary: Thanos Store is failing to handle qrpcd requests. expr: | ( @@ -302,7 +329,8 @@ spec: severity: warning - alert: ThanosStoreSeriesGateLatencyHigh annotations: - description: Thanos Store {{`{{`}}$labels.job{{`}}`}} has a 99th percentile latency of {{`{{`}}$value{{`}}`}} seconds for store series gate requests. + description: Thanos Store {{`{{`}}$labels.job{{`}}`}} has a 99th percentile latency of {{`{{`}} $value {{`}}`}} seconds for store series gate requests. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosstoreseriesgatelatencyhigh summary: Thanos Store has high latency for store series gate requests. expr: | ( @@ -315,7 +343,8 @@ spec: severity: warning - alert: ThanosStoreBucketHighOperationFailures annotations: - description: Thanos Store {{`{{`}}$labels.job{{`}}`}} Bucket is failing to execute {{`{{`}}$value | humanize{{`}}`}}% of operations. + description: Thanos Store {{`{{`}}$labels.job{{`}}`}} Bucket is failing to execute {{`{{`}} $value | humanize {{`}}`}}% of operations. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosstorebuckethighoperationfailures summary: Thanos Store Bucket is failing to execute operations. expr: | ( @@ -329,7 +358,8 @@ spec: severity: warning - alert: ThanosStoreObjstoreOperationLatencyHigh annotations: - description: Thanos Store {{`{{`}}$labels.job{{`}}`}} Bucket has a 99th percentile latency of {{`{{`}}$value{{`}}`}} seconds for the bucket operations. + description: Thanos Store {{`{{`}}$labels.job{{`}}`}} Bucket has a 99th percentile latency of {{`{{`}} $value {{`}}`}} seconds for the bucket operations. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosstoreobjstoreoperationlatencyhigh summary: Thanos Store is having high latency for bucket operations. expr: | ( @@ -340,11 +370,12 @@ spec: for: 10m labels: severity: warning - - name: thanos-rule.rules + - name: thanos-rule rules: - alert: ThanosRuleQueueIsDroppingAlerts annotations: - description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} {{`{{`}} $labels.pod {{`}}`}} is failing to queue alerts. + description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} {{`{{`}}$labels.pod{{`}}`}} is failing to queue alerts. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosrulequeueisdroppingalerts summary: Thanos Rule is failing to queue alerts. expr: | sum by (job) (rate(thanos_alert_queue_alerts_dropped_total{job=~"thanos-rule.*"}[5m])) > 0 @@ -353,7 +384,8 @@ spec: severity: critical - alert: ThanosRuleSenderIsFailingAlerts annotations: - description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} {{`{{`}} $labels.pod {{`}}`}} is failing to send alerts to alertmanager. + description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} {{`{{`}}$labels.pod{{`}}`}} is failing to send alerts to alertmanager. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosrulesenderisfailingalerts summary: Thanos Rule is failing to send alerts to alertmanager. expr: | sum by (job) (rate(thanos_alert_sender_alerts_dropped_total{job=~"thanos-rule.*"}[5m])) > 0 @@ -362,7 +394,8 @@ spec: severity: critical - alert: ThanosRuleHighRuleEvaluationFailures annotations: - description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} {{`{{`}} $labels.pod {{`}}`}} is failing to evaluate rules. + description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} {{`{{`}}$labels.pod{{`}}`}} is failing to evaluate rules. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosrulehighruleevaluationfailures summary: Thanos Rule is failing to evaluate rules. expr: | ( @@ -376,7 +409,8 @@ spec: severity: critical - alert: ThanosRuleHighRuleEvaluationWarnings annotations: - description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} {{`{{`}} $labels.pod {{`}}`}} has high number of evaluation warnings. + description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} {{`{{`}}$labels.pod{{`}}`}} has high number of evaluation warnings. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosrulehighruleevaluationwarnings summary: Thanos Rule has high number of evaluation warnings. expr: | sum by (job) (rate(thanos_rule_evaluation_with_warnings_total{job=~"thanos-rule.*"}[5m])) > 0 @@ -385,7 +419,8 @@ spec: severity: info - alert: ThanosRuleRuleEvaluationLatencyHigh annotations: - description: Thanos Rule {{`{{`}}$labels.job{{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} has higher evaluation latency than interval for {{`{{`}}$labels.rule_group{{`}}`}}. + description: Thanos Rule {{`{{`}}$labels.job{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has higher evaluation latency than interval for {{`{{`}}$labels.rule_group{{`}}`}}. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosruleruleevaluationlatencyhigh summary: Thanos Rule has high rule evaluation latency. expr: | ( @@ -398,7 +433,8 @@ spec: severity: warning - alert: ThanosRuleGrpcErrorRate annotations: - description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}}$value | humanize{{`}}`}}% of requests. + description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} is failing to handle {{`{{`}} $value | humanize {{`}}`}}% of requests. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosrulegrpcerrorrate summary: Thanos Rule is failing to handle grpc requests. expr: | ( @@ -413,6 +449,7 @@ spec: - alert: ThanosRuleConfigReloadFailure annotations: description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} has not been able to reload its configuration. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosruleconfigreloadfailure summary: Thanos Rule has not been able to reload configuration. expr: avg(thanos_rule_config_last_reload_successful{job=~"thanos-rule.*"}) by (job) != 1 for: 5m @@ -420,7 +457,8 @@ spec: severity: info - alert: ThanosRuleQueryHighDNSFailures annotations: - description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} has {{`{{`}}$value | humanize{{`}}`}}% of failing DNS queries for query endpoints. + description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} has {{`{{`}} $value | humanize {{`}}`}}% of failing DNS queries for query endpoints. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosrulequeryhighdnsfailures summary: Thanos Rule is having high number of DNS failures. expr: | ( @@ -434,7 +472,8 @@ spec: severity: warning - alert: ThanosRuleAlertmanagerHighDNSFailures annotations: - description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} has {{`{{`}}$value | humanize{{`}}`}}% of failing DNS queries for Alertmanager endpoints. + description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} has {{`{{`}} $value | humanize {{`}}`}}% of failing DNS queries for Alertmanager endpoints. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosrulealertmanagerhighdnsfailures summary: Thanos Rule is having high number of DNS failures. expr: | ( @@ -448,7 +487,8 @@ spec: severity: warning - alert: ThanosRuleNoEvaluationFor10Intervals annotations: - description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} has {{`{{`}}$value | humanize{{`}}`}}% rule groups that did not evaluate for at least 10x of their expected interval. + description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} has {{`{{`}} $value | humanize {{`}}`}}% rule groups that did not evaluate for at least 10x of their expected interval. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosrulenoevaluationfor10intervals summary: Thanos Rule has rule groups that did not evaluate for 10 intervals. expr: | time() - max by (job, group) (prometheus_rule_group_last_evaluation_timestamp_seconds{job=~"thanos-rule.*"}) @@ -460,6 +500,7 @@ spec: - alert: ThanosNoRuleEvaluations annotations: description: Thanos Rule {{`{{`}}$labels.job{{`}}`}} did not perform any rule evaluations in the past 2 minutes. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosnoruleevaluations summary: Thanos Rule did not perform any rule evaluations. expr: | sum(rate(prometheus_rule_evaluations_total{job=~"thanos-rule.*"}[2m])) <= 0 @@ -468,11 +509,12 @@ spec: for: 3m labels: severity: critical - - name: thanos-bucket-replicate.rules + - name: thanos-bucket-replicate rules: - alert: ThanosBucketReplicateIsDown annotations: description: Thanos Replicate has disappeared from Prometheus target discovery. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosbucketreplicateisdown summary: Thanos Replicate has disappeared from Prometheus target discovery. expr: | absent(up{job=~"thanos-bucket-replicate.*"}) @@ -481,7 +523,8 @@ spec: severity: critical - alert: ThanosBucketReplicateErrorRate annotations: - description: Thanos Replicate failing to run, {{`{{`}}$value | humanize{{`}}`}}% of attempts failed. + description: Thanos Replicate failing to run, {{`{{`}} $value | humanize {{`}}`}}% of attempts failed. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosbucketreplicateerrorrate summary: Thanose Replicate is failing to run. expr: | ( @@ -494,7 +537,8 @@ spec: severity: critical - alert: ThanosBucketReplicateRunLatency annotations: - description: Thanos Replicate {{`{{`}}$labels.job{{`}}`}} has a 99th percentile latency of {{`{{`}}$value{{`}}`}} seconds for the replicate operations. + description: Thanos Replicate {{`{{`}}$labels.job{{`}}`}} has a 99th percentile latency of {{`{{`}} $value {{`}}`}} seconds for the replicate operations. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosbucketreplicaterunlatency summary: Thanos Replicate has a high latency for replicate operations. expr: | ( @@ -505,11 +549,12 @@ spec: for: 5m labels: severity: critical - - name: thanos-component-absent.rules + - name: thanos-component-absent rules: - alert: ThanosBucketReplicateIsDown annotations: description: ThanosBucketReplicate has disappeared from Prometheus target discovery. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosbucketreplicateisdown summary: thanos component has disappeared from Prometheus target discovery. expr: | absent(up{job=~"thanos-bucket-replicate.*"} == 1) @@ -519,6 +564,7 @@ spec: - alert: ThanosCompactIsDown annotations: description: ThanosCompact has disappeared from Prometheus target discovery. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanoscompactisdown summary: thanos component has disappeared from Prometheus target discovery. expr: | absent(up{job=~"thanos-compact.*"} == 1) @@ -528,6 +574,7 @@ spec: - alert: ThanosQueryIsDown annotations: description: ThanosQuery has disappeared from Prometheus target discovery. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosqueryisdown summary: thanos component has disappeared from Prometheus target discovery. expr: | absent(up{job=~"thanos-query.*"} == 1) @@ -537,6 +584,7 @@ spec: - alert: ThanosReceiveIsDown annotations: description: ThanosReceive has disappeared from Prometheus target discovery. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosreceiveisdown summary: thanos component has disappeared from Prometheus target discovery. expr: | absent(up{job=~"thanos-receive.*"} == 1) @@ -546,6 +594,7 @@ spec: - alert: ThanosRuleIsDown annotations: description: ThanosRule has disappeared from Prometheus target discovery. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosruleisdown summary: thanos component has disappeared from Prometheus target discovery. expr: | absent(up{job=~"thanos-rule.*"} == 1) @@ -555,6 +604,7 @@ spec: - alert: ThanosSidecarIsDown annotations: description: ThanosSidecar has disappeared from Prometheus target discovery. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanossidecarisdown summary: thanos component has disappeared from Prometheus target discovery. expr: | absent(up{job=~"thanos-sidecar.*"} == 1) @@ -564,9 +614,10 @@ spec: - alert: ThanosStoreIsDown annotations: description: ThanosStore has disappeared from Prometheus target discovery. + runbook_url: https://github.com/thanos-io/thanos/tree/master/mixin/runbook.md#alert-name-thanosstoreisdown summary: thanos component has disappeared from Prometheus target discovery. expr: | absent(up{job=~"thanos-store.*"} == 1) for: 5m labels: - severity: critical \ No newline at end of file + severity: critical diff --git a/charts/thanos-mixin/templates/rules.yaml b/charts/thanos-mixin/templates/rules.yaml index 19c67e09..910661b5 100644 --- a/charts/thanos-mixin/templates/rules.yaml +++ b/charts/thanos-mixin/templates/rules.yaml @@ -135,4 +135,4 @@ spec: quantile: "0.99" record: :thanos_objstore_bucket_operation_duration_seconds:histogram_quantile - name: thanos-bucket-replicate.rules - rules: [] \ No newline at end of file + rules: [] diff --git a/hack/commons.mk b/hack/commons.mk index 7bb98f19..53d5bd23 100644 --- a/hack/commons.mk +++ b/hack/commons.mk @@ -25,7 +25,7 @@ SHELL = /bin/bash -o pipefail MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) MKFILE_DIR := $(dir $(MKFILE_PATH)) -ANSIBLE_VENV = $(MKFILE_DIR)/../.venv +VENV = $(MKFILE_DIR)/../.venv NO_COLOR=\033[0m OK_COLOR=\033[32;01m diff --git a/hack/mixins.py b/hack/mixins.py new file mode 100755 index 00000000..c3d5d42e --- /dev/null +++ b/hack/mixins.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2020-2021 Nicolas Lamirault + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import glob +import logging +import os +from os import path +import shutil +import zipfile + +import coloredlogs +import requests + + +MIXINS_VERSION="v0.1.0" +MIXIN_ARCHIVE="portefaix-mixins-%s.zip" % MIXINS_VERSION +MIXIN_URL="https://github.com/nlamirault/monitoring-mixins/releases/download/%s/%s" % ( + MIXINS_VERSION, MIXIN_ARCHIVE +) +MIXIN_DIRECTORY="portefaix-mixins" + +DIR="portefaix-mixins" + +logger = logging.getLogger(__name__) +coloredlogs.install(level='DEBUG') + + +def escape(s): + return s.replace("{{", "{{`{{").replace("}}", "}}`}}").replace("{{`{{", "{{`{{`}}").replace("}}`}}", "{{`}}`}}") + + +def download(url, filename): + logger.info("Download Mixin : %s", url) + r = requests.get(url) + with open(filename,'wb') as f: + f.write(r.content) + + +def manage_mixin(mixin_directory, mixin): + logger.info("Manage %s", mixin) + chart_dst = "charts/%s/templates/" % mixin + files = glob.glob("%s/%s/manifests/*.yaml" % (mixin_directory, mixin)) + for f in files: + orig = "%s" % f + dest = "%s/%s" % (chart_dst, path.basename(orig)) + if os.path.exists(chart_dst): + if os.path.exists(dest): + os.remove(dest) + logger.debug("Copy %s", f) + fin = open(orig, "rt") + fout = open(dest, "wt") + for line in fin: + fout.write(escape(line)) + else: + logger.warning("Mixin chart not found") + + +def main(url, filename, mixin_directory): + download(url, filename) + with zipfile.ZipFile(filename,"r") as zf: + zf.extractall() + logger.info("Monitoring mixins") + for mixin in os.listdir(path=mixin_directory): + manage_mixin(mixin_directory, mixin) + os.remove(filename) + shutil.rmtree(mixin_directory) + + +if __name__ == '__main__': + main(MIXIN_URL, MIXIN_ARCHIVE, MIXIN_DIRECTORY) \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index de6cbf89..fb0d70ca 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,61 +1,110 @@ [[package]] -category = "main" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." name = "appdirs" +version = "1.4.4" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" optional = false python-versions = "*" -version = "1.4.4" [[package]] +name = "certifi" +version = "2020.12.5" +description = "Python package for providing Mozilla's CA Bundle." category = "main" -description = "Validate configuration and produce human readable error messages." +optional = false +python-versions = "*" + +[[package]] name = "cfgv" +version = "3.2.0" +description = "Validate configuration and produce human readable error messages." +category = "main" optional = false python-versions = ">=3.6.1" -version = "3.2.0" [[package]] +name = "chardet" +version = "4.0.0" +description = "Universal encoding detector for Python 2 and 3" category = "main" -description = "Distribution utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "coloredlogs" +version = "15.0" +description = "Colored terminal output for Python's logging module" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +humanfriendly = ">=9.1" + +[package.extras] +cron = ["capturer (>=2.4)"] + +[[package]] name = "distlib" +version = "0.3.1" +description = "Distribution utilities" +category = "main" optional = false python-versions = "*" -version = "0.3.1" [[package]] -category = "main" -description = "A platform independent file lock." name = "filelock" +version = "3.0.12" +description = "A platform independent file lock." +category = "main" optional = false python-versions = "*" -version = "3.0.12" [[package]] +name = "humanfriendly" +version = "9.1" +description = "Human friendly output for text interfaces using Python" category = "main" -description = "File identification library for Python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +pyreadline = {version = "*", markers = "sys_platform == \"win32\""} + +[[package]] name = "identify" +version = "1.5.10" +description = "File identification library for Python" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" -version = "1.5.10" [package.extras] license = ["editdistance"] [[package]] +name = "idna" +version = "2.10" +description = "Internationalized Domain Names in Applications (IDNA)" category = "main" -description = "Node.js virtual environment builder" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] name = "nodeenv" +version = "1.5.0" +description = "Node.js virtual environment builder" +category = "main" optional = false python-versions = "*" -version = "1.5.0" [[package]] -category = "main" -description = "A framework for managing and maintaining multi-language pre-commit hooks." name = "pre-commit" +version = "2.9.2" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "main" optional = false python-versions = ">=3.6.1" -version = "2.9.2" [package.dependencies] cfgv = ">=2.0.0" @@ -66,36 +115,75 @@ toml = "*" virtualenv = ">=20.0.8" [[package]] +name = "pyreadline" +version = "2.1" +description = "A python implmementation of GNU readline." category = "main" -description = "YAML parser and emitter for Python" +optional = false +python-versions = "*" + +[[package]] name = "pyyaml" +version = "5.3.1" +description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "5.3.1" [[package]] +name = "requests" +version = "2.25.1" +description = "Python HTTP for Humans." category = "main" -description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +certifi = ">=2017.4.17" +chardet = ">=3.0.2,<5" +idna = ">=2.5,<3" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] + +[[package]] name = "six" +version = "1.15.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -version = "1.15.0" [[package]] -category = "main" -description = "Python Library for Tom's Obvious, Minimal Language" name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "0.10.2" [[package]] +name = "urllib3" +version = "1.26.3" +description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" -description = "Virtual Python Environment builder" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] name = "virtualenv" +version = "20.2.1" +description = "Virtual Python Environment builder" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" -version = "20.2.1" [package.dependencies] appdirs = ">=1.4.3,<2" @@ -108,18 +196,31 @@ docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sp testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "pytest-xdist (>=1.31.0)", "packaging (>=20.0)", "xonsh (>=0.9.16)"] [metadata] -content-hash = "18c30072f9ac7a833d5be7f39559cbdc5466e8890f36bf9ed78e7291bb06f7e3" +lock-version = "1.1" python-versions = "^3.8" +content-hash = "6148146e7ddec48521e97d6c699ee35168b922b4dff621bc4274fd004b63ac97" [metadata.files] appdirs = [ {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, ] +certifi = [ + {file = "certifi-2020.12.5-py2.py3-none-any.whl", hash = "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830"}, + {file = "certifi-2020.12.5.tar.gz", hash = "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c"}, +] cfgv = [ {file = "cfgv-3.2.0-py2.py3-none-any.whl", hash = "sha256:32e43d604bbe7896fe7c248a9c2276447dbef840feb28fe20494f62af110211d"}, {file = "cfgv-3.2.0.tar.gz", hash = "sha256:cf22deb93d4bcf92f345a5c3cd39d3d41d6340adc60c78bbbd6588c384fda6a1"}, ] +chardet = [ + {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, + {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, +] +coloredlogs = [ + {file = "coloredlogs-15.0-py2.py3-none-any.whl", hash = "sha256:b7f630a8297a66984b6bae0f6a1b0e0afb9f2f6838ea3bfa58f50d3d13e133d6"}, + {file = "coloredlogs-15.0.tar.gz", hash = "sha256:5e78691e2673a8e294499e1832bb13efcfb44a86b92e18109fa18951093218ab"}, +] distlib = [ {file = "distlib-0.3.1-py2.py3-none-any.whl", hash = "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb"}, {file = "distlib-0.3.1.zip", hash = "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1"}, @@ -128,10 +229,18 @@ filelock = [ {file = "filelock-3.0.12-py3-none-any.whl", hash = "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836"}, {file = "filelock-3.0.12.tar.gz", hash = "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59"}, ] +humanfriendly = [ + {file = "humanfriendly-9.1-py2.py3-none-any.whl", hash = "sha256:d5c731705114b9ad673754f3317d9fa4c23212f36b29bdc4272a892eafc9bc72"}, + {file = "humanfriendly-9.1.tar.gz", hash = "sha256:066562956639ab21ff2676d1fda0b5987e985c534fc76700a19bd54bcb81121d"}, +] identify = [ {file = "identify-1.5.10-py2.py3-none-any.whl", hash = "sha256:cc86e6a9a390879dcc2976cef169dd9cc48843ed70b7380f321d1b118163c60e"}, {file = "identify-1.5.10.tar.gz", hash = "sha256:943cd299ac7f5715fcb3f684e2fc1594c1e0f22a90d15398e5888143bd4144b5"}, ] +idna = [ + {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, + {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, +] nodeenv = [ {file = "nodeenv-1.5.0-py2.py3-none-any.whl", hash = "sha256:5304d424c529c997bc888453aeaa6362d242b6b4631e90f3d4bf1b290f1c84a9"}, {file = "nodeenv-1.5.0.tar.gz", hash = "sha256:ab45090ae383b716c4ef89e690c41ff8c2b257b85b309f01f3654df3d084bd7c"}, @@ -140,6 +249,11 @@ pre-commit = [ {file = "pre_commit-2.9.2-py2.py3-none-any.whl", hash = "sha256:949b13efb7467ae27e2c8f9e83434dacf2682595124d8902554a4e18351e5781"}, {file = "pre_commit-2.9.2.tar.gz", hash = "sha256:e31c04bc23741194a7c0b983fe512801e151a0638c6001c49f2bd034f8a664a1"}, ] +pyreadline = [ + {file = "pyreadline-2.1.win-amd64.exe", hash = "sha256:9ce5fa65b8992dfa373bddc5b6e0864ead8f291c94fbfec05fbd5c836162e67b"}, + {file = "pyreadline-2.1.win32.exe", hash = "sha256:65540c21bfe14405a3a77e4c085ecfce88724743a4ead47c66b84defcf82c32e"}, + {file = "pyreadline-2.1.zip", hash = "sha256:4530592fc2e85b25b1a9f79664433da09237c1a270e4d78ea5aa3a2c7229e2d1"}, +] pyyaml = [ {file = "PyYAML-5.3.1-cp27-cp27m-win32.whl", hash = "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f"}, {file = "PyYAML-5.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76"}, @@ -155,6 +269,10 @@ pyyaml = [ {file = "PyYAML-5.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:6034f55dab5fea9e53f436aa68fa3ace2634918e8b5994d82f3621c04ff5ed2e"}, {file = "PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"}, ] +requests = [ + {file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"}, + {file = "requests-2.25.1.tar.gz", hash = "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804"}, +] six = [ {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, @@ -163,6 +281,10 @@ toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] +urllib3 = [ + {file = "urllib3-1.26.3-py2.py3-none-any.whl", hash = "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80"}, + {file = "urllib3-1.26.3.tar.gz", hash = "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73"}, +] virtualenv = [ {file = "virtualenv-20.2.1-py2.py3-none-any.whl", hash = "sha256:07cff122e9d343140366055f31be4dcd61fd598c69d11cd33a9d9c8df4546dd7"}, {file = "virtualenv-20.2.1.tar.gz", hash = "sha256:e0aac7525e880a429764cefd3aaaff54afb5d9f25c82627563603f5d7de5a6e5"}, diff --git a/pyproject.toml b/pyproject.toml index 22a1b5c8..0b36da81 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,6 +7,8 @@ authors = ["Nicolas Lamirault "] [tool.poetry.dependencies] python = "^3.8" pre-commit = "^2.9.2" +requests = "^2.25.1" +coloredlogs = "^15.0" [tool.poetry.dev-dependencies]