22349: Run RailsAPI as a standalone Passenger service
[arvados.git] / tools / salt-install / config_examples / multi_host / aws / pillars / alloy.sls
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: Apache-2.0
4
5 {%- set prom_user = "__MONITORING_USERNAME__" %}
6 {%- set prom_pass = "__MONITORING_PASSWORD__" %}
7 {%- set prom_host = "prometheus.__DOMAIN__" %}
8 {%- set loki_user = "__MONITORING_USERNAME__" %}
9 {%- set loki_pass = "__MONITORING_PASSWORD__" %}
10 {%- set loki_host = "loki.__DOMAIN__" %}
11
12 alloy:
13   enabled: True
14   package: "alloy"
15   service: "alloy"
16   config_path: "/etc/alloy/config.alloy"
17   config_contents: |
18     ////////////////////////////////////////////////////////////////////////
19     // File managed by Salt. Your changes will be overwritten.
20     ////////////////////////////////////////////////////////////////////////
21     logging {
22       level = "warn"
23     }
24
25     prometheus.exporter.unix "default" {
26       include_exporter_metrics = true
27       disable_collectors       = ["mdadm"]
28     }
29
30     prometheus.scrape "default" {
31       targets = concat(
32         prometheus.exporter.unix.default.targets,
33         [{
34           // Self-collect metrics
35           job         = "alloy",
36           __address__ = "127.0.0.1:12345",
37         }],
38       )
39
40       forward_to = [
41         prometheus.remote_write.metrics_service.receiver,
42       ]
43     }
44
45     prometheus.remote_write "metrics_service" {
46       endpoint {
47         url = "https://{{ prom_host }}/api/v1/write"
48
49         basic_auth {
50           username = "{{ prom_user }}"
51           password = "{{ prom_pass }}"
52         }
53       }
54     }
55
56     local.file_match "file_logs" {
57       path_targets = [
58         {"__path__" = "/var/log/nginx/*.log"},
59         {"__path__" = "/var/www/arvados-api/shared/log/production.log"},
60       ]
61       sync_period = "5s"
62     }
63
64     loki.source.file "log_scrape" {
65       targets    = local.file_match.file_logs.targets
66       forward_to = [loki.write.grafana_loki.receiver]
67       tail_from_end = true
68     }
69
70     loki.source.journal "journal_logs" {
71       relabel_rules = loki.relabel.journal.rules
72       forward_to = [loki.write.grafana_loki.receiver]
73       labels = {component = "loki.source.journal"}
74     }
75
76     loki.relabel "journal" {
77       forward_to = []
78
79       rule {
80         source_labels = ["__journal__systemd_unit"]
81         target_label  = "systemd_unit"
82       }
83       rule {
84         source_labels = ["__journal__hostname"]
85         target_label = "systemd_hostname"
86       }
87       rule {
88         source_labels = ["__journal__transport"]
89         target_label = "systemd_transport"
90       }
91     }
92
93     loki.write "grafana_loki" {
94       endpoint {
95         url = "https://{{ loki_host }}/loki/api/v1/push"
96
97         basic_auth {
98           username = "{{ loki_user }}"
99           password = "{{ loki_pass }}"
100         }
101       }
102     }