Add simple rule file checker tool.

This tool does the simple job of checking a Prometheus rule file for validity
and printing the parsed rules if the loading succeeds. This came out of
an immediate need to quickly verify changes to existing rule files.
This commit is contained in:
Julius Volz 2013-08-06 17:55:40 +02:00
parent 881e3fb6be
commit b9c90925dd
4 changed files with 81 additions and 2 deletions

View file

@ -11,7 +11,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
all: dumper pruner
all: dumper pruner rule_checker
SUFFIXES:
@ -23,8 +23,12 @@ dumper:
pruner:
$(MAKE) -C pruner
rule_checker:
$(MAKE) -C rule_checker
clean:
$(MAKE) -C dumper clean
$(MAKE) -C pruner clean
$(MAKE) -C rule_checker clean
.PHONY: clean dumper pruner
.PHONY: clean dumper pruner rule_checker

1
tools/rule_checker/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
rule_checker

View file

@ -0,0 +1,28 @@
# Copyright 2013 Prometheus Team
# 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.
MAKE_ARTIFACTS = rule_checker
all: rule_checker
SUFFIXES:
include ../../Makefile.INCLUDE
rule_checker: $(shell find . -iname '*.go')
$(GO) build -o rule_checker .
clean:
rm -rf $(MAKE_ARTIFACTS)
.PHONY: clean

View file

@ -0,0 +1,46 @@
// Copyright 2013 Prometheus Team
// 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.
// Rule-Checker allows checking the validity of a Prometheus rule file. It
// prints an error if the specified rule file is invalid, while it prints a
// string representation of the parsed rules otherwise.
package main
import (
"flag"
"fmt"
"log"
"github.com/prometheus/prometheus/rules"
)
var ruleFile = flag.String("ruleFile", "", "The path to the rule file to check.")
func main() {
flag.Parse()
if *ruleFile == "" {
log.Fatal("Must provide a rule file path")
}
rules, err := rules.LoadRulesFromFile(*ruleFile)
if err != nil {
log.Fatalf("Error loading rule file %s: %s", *ruleFile, err)
}
fmt.Printf("Successfully loaded %d rules:\n\n", len(rules))
for _, rule := range rules {
fmt.Println(rule)
}
}