mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 13:22:21 +08:00

* add postgresql datasource * add rest of files for postgres datasource * fix timeseries query, remove unused code * consistent naming, refactoring * s/mysql/postgres/ * s/mysql/postgres/ * couple more tests * tests for more datatypes * fix macros for postgres * add __timeSec macro * add frontend for postgres datasource * adjust documentation * fix formatting * add proper plugin description * merge editor changes from mysql * port changes from mysql datasource * set proper defaultQuery for postgres * add time_sec to timeseries query accept int for value for timeseries query * revert allowing time_sec and handle int or float values as unix timestamp for "time" column * fix tslint error * handle decimal values in timeseries query * allow setting sslmode for postgres datasource * use type switch for handling data types * fix value for timeseries query * refactor timeseries queries to make them more flexible * remove debug statement from inner loop in type conversion * use plain for loop in getTypedRowData * fix timeseries queries * adjust postgres datasource to tsdb refactoring * adjust postgres datasource to frontend changes * update lib/pq to latest version * move type conversion to getTypedRowData * handle address types cidr, inet and macaddr * adjust response parser and docs for annotations * convert unknown types to string * add documentation for postgres datasource * add another example query with metric column * set more helpful default query * update help text in query editor * handle NULL in value column of timeseries query * add __timeGroup macro * add test for __timeGroup macro * document __timeGroup and set proper default query for annotations * fix typos in docs * add postgres to list of datasources * add postgres to builtInPlugins * mysql: refactoring as prep for merging postgres Refactors out the initialization of the xorm engine and the query logic for an sql data source. * mysql: rename refactoring + test update * postgres:refactor to use SqlEngine(same as mysql) Refactored to use a common base class with the MySql data source. Other changes from the original PR: - Changed time column to be time_sec to allow other time units in the future and to be the same as MySQL - Changed integration test to test the main Query method rather than the private transformToTable method - Changed the __timeSec macro name to __timeEpoch - Renamed PostgresExecutor to PostgresQueryEndpoint Fixes #9209 (the original PR) * postgres: encrypt password on config page With some other cosmetic changes to the config page: - placeholder texts - reset button for the password after it has been encrypted. - default value for the sslmode field. * postgres: change back col name to time from time_sec * postgres mysql: remove annotation title Title has been removed from annotations * postgres: fix images for docs page * postgres mysql: fix specs
113 lines
2.7 KiB
Go
113 lines
2.7 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"os/signal"
|
|
"runtime"
|
|
"runtime/trace"
|
|
"strconv"
|
|
"syscall"
|
|
"time"
|
|
|
|
"net/http"
|
|
_ "net/http/pprof"
|
|
|
|
"github.com/grafana/grafana/pkg/metrics"
|
|
"github.com/grafana/grafana/pkg/models"
|
|
"github.com/grafana/grafana/pkg/services/sqlstore"
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
|
|
_ "github.com/grafana/grafana/pkg/services/alerting/conditions"
|
|
_ "github.com/grafana/grafana/pkg/services/alerting/notifiers"
|
|
_ "github.com/grafana/grafana/pkg/tsdb/cloudwatch"
|
|
_ "github.com/grafana/grafana/pkg/tsdb/graphite"
|
|
_ "github.com/grafana/grafana/pkg/tsdb/influxdb"
|
|
_ "github.com/grafana/grafana/pkg/tsdb/mysql"
|
|
_ "github.com/grafana/grafana/pkg/tsdb/opentsdb"
|
|
_ "github.com/grafana/grafana/pkg/tsdb/postgres"
|
|
_ "github.com/grafana/grafana/pkg/tsdb/prometheus"
|
|
_ "github.com/grafana/grafana/pkg/tsdb/testdata"
|
|
)
|
|
|
|
var version = "4.6.0"
|
|
var commit = "NA"
|
|
var buildstamp string
|
|
var build_date string
|
|
|
|
var configFile = flag.String("config", "", "path to config file")
|
|
var homePath = flag.String("homepath", "", "path to grafana install/home path, defaults to working directory")
|
|
var pidFile = flag.String("pidfile", "", "path to pid file")
|
|
var exitChan = make(chan int)
|
|
|
|
func init() {
|
|
}
|
|
|
|
func main() {
|
|
v := flag.Bool("v", false, "prints current version and exits")
|
|
profile := flag.Bool("profile", false, "Turn on pprof profiling")
|
|
profilePort := flag.Int("profile-port", 6060, "Define custom port for profiling")
|
|
flag.Parse()
|
|
if *v {
|
|
fmt.Printf("Version %s (commit: %s)\n", version, commit)
|
|
os.Exit(0)
|
|
}
|
|
|
|
if *profile {
|
|
runtime.SetBlockProfileRate(1)
|
|
go func() {
|
|
http.ListenAndServe(fmt.Sprintf("localhost:%d", *profilePort), nil)
|
|
}()
|
|
|
|
f, err := os.Create("trace.out")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer f.Close()
|
|
|
|
err = trace.Start(f)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer trace.Stop()
|
|
}
|
|
|
|
buildstampInt64, _ := strconv.ParseInt(buildstamp, 10, 64)
|
|
if buildstampInt64 == 0 {
|
|
buildstampInt64 = time.Now().Unix()
|
|
}
|
|
|
|
setting.BuildVersion = version
|
|
setting.BuildCommit = commit
|
|
setting.BuildStamp = buildstampInt64
|
|
|
|
metrics.M_Grafana_Version.WithLabelValues(version).Set(1)
|
|
|
|
server := NewGrafanaServer()
|
|
server.Start()
|
|
}
|
|
|
|
func initSql() {
|
|
sqlstore.NewEngine()
|
|
sqlstore.EnsureAdminUser()
|
|
}
|
|
|
|
func listenToSystemSignals(server models.GrafanaServer) {
|
|
signalChan := make(chan os.Signal, 1)
|
|
ignoreChan := make(chan os.Signal, 1)
|
|
code := 0
|
|
|
|
signal.Notify(ignoreChan, syscall.SIGHUP)
|
|
signal.Notify(signalChan, os.Interrupt, os.Kill, syscall.SIGTERM)
|
|
|
|
select {
|
|
case sig := <-signalChan:
|
|
// Stops trace if profiling has been enabled
|
|
trace.Stop()
|
|
server.Shutdown(0, fmt.Sprintf("system signal: %s", sig))
|
|
case code = <-exitChan:
|
|
server.Shutdown(code, "startup error")
|
|
}
|
|
}
|