mirror of
				https://github.com/Stunkymonkey/nixos.git
				synced 2025-10-30 01:12:10 +01:00 
			
		
		
		
	service/loki: fix loki 3.0.0
This commit is contained in:
		
							parent
							
								
									1d45ea7ac2
								
							
						
					
					
						commit
						baed8f6fc3
					
				
					 1 changed files with 115 additions and 89 deletions
				
			
		|  | @ -61,7 +61,26 @@ in | |||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   config = lib.mkIf cfg.enable { | ||||
|   config = | ||||
|     let | ||||
|       rulerConfig = { | ||||
|         groups = [ | ||||
|           { | ||||
|             name = "alerting-rules"; | ||||
|             rules = lib.mapAttrsToList | ||||
|               (name: opts: { | ||||
|                 alert = name; | ||||
|                 inherit (opts) condition labels; | ||||
|                 for = opts.time; | ||||
|                 annotations.description = opts.description; | ||||
|               }) | ||||
|               cfg.rules; | ||||
|           } | ||||
|         ]; | ||||
|       }; | ||||
|       rulerFile = pkgs.writeText "ruler.yml" (builtins.toJSON rulerConfig); | ||||
|     in | ||||
|     lib.mkIf cfg.enable { | ||||
|       services = { | ||||
|         loki = { | ||||
|           enable = true; | ||||
|  | @ -76,48 +95,47 @@ in | |||
|               instance_addr = "127.0.0.1"; | ||||
|               ring.kvstore.store = "inmemory"; | ||||
|               replication_factor = 1; | ||||
|             path_prefix = "/tmp/loki"; | ||||
| 
 | ||||
|               path_prefix = config.services.loki.dataDir; | ||||
|               storage.filesystem = { | ||||
|                 chunks_directory = "${config.services.loki.dataDir}/chunks"; | ||||
|                 rules_directory = "${config.services.loki.dataDir}/rules"; | ||||
|               }; | ||||
|             }; | ||||
| 
 | ||||
|             ruler = lib.mkIf config.my.services.alertmanager.enable { | ||||
|               storage = { | ||||
|                 type = "local"; | ||||
|               local = { | ||||
|                 # having the "fake" directory is important, because loki is running in single-tenant mode | ||||
|                 directory = pkgs.writeTextDir "fake/loki-rules.yml" (builtins.toJSON { | ||||
|                   groups = [ | ||||
|                     { | ||||
|                       name = "alerting-rules"; | ||||
|                       rules = lib.mapAttrsToList | ||||
|                         (name: opts: { | ||||
|                           alert = name; | ||||
|                           inherit (opts) condition labels; | ||||
|                           for = opts.time; | ||||
|                           annotations.description = opts.description; | ||||
|                         }) | ||||
|                         cfg.rules; | ||||
|                     } | ||||
|                   ]; | ||||
|                 }); | ||||
|                 local.directory = "${config.services.loki.dataDir}/ruler"; | ||||
|               }; | ||||
|             }; | ||||
| 
 | ||||
|               rule_path = "${config.services.loki.dataDir}/rules"; | ||||
|               alertmanager_url = "http://127.0.0.1:${toString config.my.services.alertmanager.port}"; | ||||
|               enable_alertmanager_v2 = true; | ||||
|             }; | ||||
| 
 | ||||
|             schema_config = { | ||||
|               configs = [{ | ||||
|               from = "2020-05-15"; | ||||
|               store = "boltdb-shipper"; | ||||
|                 from = "2020-11-08"; | ||||
|                 store = "tsdb"; | ||||
|                 object_store = "filesystem"; | ||||
|               schema = "v11"; | ||||
|                 schema = "v13"; | ||||
|                 index = { | ||||
|                   prefix = "index_"; | ||||
|                   period = "24h"; | ||||
|                 }; | ||||
|               }]; | ||||
|             }; | ||||
| 
 | ||||
|             limits_config = { | ||||
|               max_query_lookback = "672h"; # 28 days | ||||
|               retention_period = "672h"; # 28 days | ||||
|             }; | ||||
| 
 | ||||
|             compactor = { | ||||
|               working_directory = "${config.services.loki.dataDir}/compactor"; | ||||
|               retention_enabled = true; | ||||
|               delete_request_store = "filesystem"; | ||||
|             }; | ||||
|           }; | ||||
|         }; | ||||
| 
 | ||||
|  | @ -156,6 +174,14 @@ in | |||
|         }; | ||||
|       }; | ||||
| 
 | ||||
|       systemd.tmpfiles.rules = [ | ||||
|         "d /var/lib/loki 0700 loki loki - -" | ||||
|         "d /var/lib/loki/ruler 0700 loki loki - -" | ||||
|         "d /var/lib/loki/rules 0700 loki loki - -" | ||||
|         "L /var/lib/loki/ruler/ruler.yml - - - - ${rulerFile}" | ||||
|       ]; | ||||
|       systemd.services.loki.reloadTriggers = [ rulerFile ]; | ||||
| 
 | ||||
|       my.services.loki.rules = { | ||||
|         loki_highLogRate = { | ||||
|           condition = ''sum by (host) (rate({unit="loki.service"}[1m])) > 60''; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Felix Buehler
						Felix Buehler