Просмотр исходного кода

Merge branch 'master' into move-error-boundry

Torkel Ödegaard 6 лет назад
Родитель
Сommit
cc61d9c5cc

+ 31 - 0
devenv/docker/ha_test/docker-compose.yaml

@@ -7,6 +7,13 @@ services:
       - "80:80"
     volumes:
       - /var/run/docker.sock:/tmp/docker.sock:ro
+    depends_on:
+      db:
+        condition: service_healthy
+    logging:
+      driver: "fluentd"
+      options:
+        tag: nginx
 
   db:
     image: mysql:5.6
@@ -66,6 +73,8 @@ services:
       # - GF_DATABASE_SSL_MODE=disable
       # - GF_SESSION_PROVIDER=postgres
       # - GF_SESSION_PROVIDER_CONFIG=user=grafana password=password host=db port=5432 dbname=grafana sslmode=disable
+      - GF_SERVER_ROUTER_LOGGING=true
+      - GF_LOG_CONSOLE_FORMAT=json
       - GF_LOG_FILTERS=alerting.notifier:debug,alerting.notifier.slack:debug,auth:debug
       - GF_AUTH_TOKEN_ROTATION_INTERVAL_MINUTES=2
     ports:
@@ -73,6 +82,10 @@ services:
     depends_on:
       db:
         condition: service_healthy
+    logging:
+      driver: "fluentd"
+      options:
+        tag: grafana
 
   prometheus:
     image: prom/prometheus:v2.4.2
@@ -82,3 +95,21 @@ services:
       - VIRTUAL_HOST=prometheus.loc
     ports:
       - 9090
+
+  loki:
+    image: grafana/loki:master
+    environment:
+      - VIRTUAL_HOST=loki.loc
+    ports:
+      - 3100
+    command: -config.file=/etc/loki/local-config.yaml
+
+  fluentd:
+    image: grafana/fluent-plugin-loki:master
+    volumes:
+      - ./fluentd/fluentd.conf:/fluentd/etc/fluentd.conf
+    links:
+      - loki
+    ports:
+      - "24224:24224"
+      - "24224:24224/udp"

+ 73 - 0
devenv/docker/ha_test/fluentd/fluentd.conf

@@ -0,0 +1,73 @@
+<source>
+  @type forward
+  port 24224
+  bind 0.0.0.0
+</source>
+
+<filter grafana>
+  @type parser
+  <parse>
+    @type json
+    json_parser json
+  </parse>
+  replace_invalid_sequence true
+  emit_invalid_record_to_error false
+  key_name log
+  reserve_data true
+  remove_key_name_field true
+</filter>
+
+<filter nginx>
+  @type parser
+  format /^.*m(?<host>[^ ]*) (?<remote>[^ ]*) \- \- \[(?<time>[^\]]*)\] \"(?<method>\S+)(?: +(?<path>[^\"]*) +\S*)?\" (?<code>[^ ]*) (?<size>[^ ]*)(?: \"(?<referer>[^\"]*)\" \"(?<agent>[^\"]*)\")?$/
+  time_format %d/%b/%Y:%H:%M:%S %z
+  key_name log
+  reserve_data true
+  remove_key_name_field true
+</filter>
+
+<filter **>
+  @type record_transformer
+  remove_keys "source,t"
+</filter>
+
+<match grafana>
+  @type copy
+  <store>
+    @type stdout
+    output_type json
+  </store>
+  <store>
+    @type loki
+    url "http://loki:3100"
+    extra_labels {"app":"grafana"}
+    label_keys "container_name,container_id,logger"
+    flush_interval 10s
+    flush_at_shutdown true
+    buffer_chunk_limit 1m
+  </store>
+</match>
+
+<filter nginx>
+  @type record_transformer
+  <record>
+    lvl "info"
+  </record>
+</filter>
+
+<match nginx>
+  @type copy
+  <store>
+    @type stdout
+    output_type json
+  </store>
+  <store>
+    @type loki
+    url "http://loki:3100"
+    extra_labels {"app":"nginx"}
+    label_keys "container_name,container_id"
+    flush_interval 10s
+    flush_at_shutdown true
+    buffer_chunk_limit 1m
+  </store>
+</match>

+ 6 - 1
devenv/docker/ha_test/grafana/provisioning/datasources/datasources.yaml

@@ -8,4 +8,9 @@ datasources:
     jsonData:
       timeInterval: 10s
       queryTimeout: 30s
-      httpMethod: POST
+      httpMethod: POST
+
+  - name: Loki
+    type: loki
+    access: proxy
+    url: http://loki:3100

+ 8 - 0
devenv/docker/ha_test/prometheus/prometheus.yml

@@ -36,4 +36,12 @@ scrape_configs:
         - 'mysqld-exporter'
         type: 'A'
         port: 9104
+        refresh_interval: 10s
+
+  - job_name: 'loki'
+    dns_sd_configs:
+      - names:
+        - 'loki'
+        type: 'A'
+        port: 3100
         refresh_interval: 10s

+ 2 - 0
docs/sources/auth/generic-oauth.md

@@ -211,6 +211,8 @@ allowed_organizations =
 
 ## Set up OAuth2 with non-compliant providers
 
+> Only available in Grafana v6.0 and above.
+
 Some OAuth2 providers might not support `client_id` and `client_secret` passed via Basic Authentication HTTP header, which
 results in `invalid_client` error. To allow Grafana to authenticate via these type of providers, the client identifiers must be
 send via POST body, which can be enabled via the following settings:

+ 2 - 2
public/app/features/dashboard/dashgrid/PanelChrome.tsx

@@ -140,8 +140,8 @@ export class PanelChrome extends PureComponent<Props, State> {
           panelData={panelData}
           timeRange={timeRange}
           options={panel.getOptions(plugin.exports.PanelDefaults)}
-          width={width - 2 * variables.panelHorizontalPadding}
-          height={height - PANEL_HEADER_HEIGHT - variables.panelVerticalPadding}
+          width={width - 2 * variables.panelhorizontalpadding}
+          height={height - PANEL_HEADER_HEIGHT - variables.panelverticalpadding}
           renderCounter={renderCounter}
           onInterpolate={this.onInterpolate}
         />

+ 2 - 2
public/sass/_variables.scss.d.ts

@@ -1,6 +1,6 @@
 export interface GrafanaVariables {
-  panelHorizontalPadding: number;
-  panelVerticalPadding: number;
+  panelhorizontalpadding: number;
+  panelverticalpadding: number;
 }
 
 declare const variables: GrafanaVariables;