Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nexpie-grafana-theme
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kornkitt Poolsup
nexpie-grafana-theme
Commits
4c6d7630
Commit
4c6d7630
authored
Apr 09, 2015
by
Torkel Ödegaard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
more work on refining config loading, and packaging
parent
d1767144
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
171 additions
and
195 deletions
+171
-195
build.go
+37
-28
conf/defaults.ini
+86
-53
conf/sample.ini
+24
-93
packaging/deb/control/postinst
+5
-5
packaging/deb/default/grafana-server
+7
-4
packaging/deb/init.d/grafana-server
+8
-8
packaging/deb/systemd/grafana-server.service
+4
-4
packaging/rpm/init.d/grafana-server
+0
-0
packaging/rpm/sysconfig/grafana-server
+0
-0
No files found.
build.go
View file @
4c6d7630
...
...
@@ -22,12 +22,13 @@ import (
)
var
(
versionRe
=
regexp
.
MustCompile
(
`-[0-9]{1,3}-g[0-9a-f]{5,10}`
)
goarch
string
goos
string
version
string
=
"v1"
race
bool
workingDir
string
versionRe
=
regexp
.
MustCompile
(
`-[0-9]{1,3}-g[0-9a-f]{5,10}`
)
goarch
string
goos
string
version
string
=
"v1"
race
bool
workingDir
string
serverBinaryName
string
=
"grafana-server"
)
const
minGoVersion
=
1.3
...
...
@@ -71,7 +72,7 @@ func main() {
//verifyGitRepoIsClean()
//grunt("release", "--pkgVer="+version)
createPackage
(
"deb"
,
"default"
)
createPackage
(
"rpm"
,
"sysconfig"
)
//
createPackage("rpm", "sysconfig")
case
"latest"
:
makeLatestDistCopies
()
...
...
@@ -110,37 +111,42 @@ func readVersionFromPackageJson() {
}
func
createPackage
(
packageType
string
,
defaultPath
string
)
{
installRoot
:=
"/opt/grafana"
configRoot
:=
"/etc/grafana"
homeDir
:=
"/usr/share/grafana"
configDir
:=
"/etc/grafana"
configFilePath
:=
"/etc/grafana/grafana.ini"
defaultFilePath
:=
filepath
.
Join
(
"/etc/"
,
defaultPath
,
"grafana-server"
)
grafanaServerBinPath
:=
"/usr/bin/"
+
serverBinaryName
initdScriptPath
:=
"/etc/init.d/grafana-server"
systemdServiceFilePath
:=
"/usr/lib/systemd/system/grafana-server.service"
packageRoot
,
_
:=
ioutil
.
TempDir
(
""
,
"grafana-linux-pack"
)
packageConfDir
:=
filepath
.
Join
(
"packaging"
,
packageType
)
afterInstallScript
:=
filepath
.
Join
(
packageConfDir
,
"control/postinst"
)
initd
script
:=
filepath
.
Join
(
packageConfDir
,
"init.d/grafana
"
)
default
Script
:=
filepath
.
Join
(
packageConfDir
,
defaultPath
,
"grafana
"
)
systemd
ServiceFile
:=
filepath
.
Join
(
packageConfDir
,
"systemd/grafana
.service"
)
postintSrc
:=
filepath
.
Join
(
packageConfDir
,
"control/postinst"
)
initd
ScriptSrc
:=
filepath
.
Join
(
packageConfDir
,
"init.d/grafana-server
"
)
default
FileSrc
:=
filepath
.
Join
(
packageConfDir
,
defaultPath
,
"grafana-server
"
)
systemd
FileSrc
:=
filepath
.
Join
(
packageConfDir
,
"systemd/grafana-server
.service"
)
packageInstallRoot
:=
filepath
.
Join
(
packageRoot
,
installRoot
)
configDir
:=
filepath
.
Join
(
packageRoot
,
configRoot
)
runError
(
"mkdir"
,
"-p"
,
packageInstallRoot
)
runError
(
"mkdir"
,
"-p"
,
configDir
)
// create directories
runError
(
"mkdir"
,
"-p"
,
filepath
.
Join
(
packageRoot
,
homeDir
))
runError
(
"mkdir"
,
"-p"
,
filepath
.
Join
(
packageRoot
,
configDir
))
runError
(
"mkdir"
,
"-p"
,
filepath
.
Join
(
packageRoot
,
"/etc/init.d"
))
runError
(
"mkdir"
,
"-p"
,
filepath
.
Join
(
packageRoot
,
"/etc/"
,
defaultPath
))
runError
(
"mkdir"
,
"-p"
,
filepath
.
Join
(
packageRoot
,
"/usr/lib/systemd/system"
))
runError
(
"mkdir"
,
"-p"
,
filepath
.
Join
(
packageRoot
,
"/usr/bin"
))
// copy binary
runError
(
"cp"
,
"-p"
,
filepath
.
Join
(
workingDir
,
"tmp/bin/"
+
serverBinaryName
),
grafanaServerBinPath
)
// copy init.d script
runError
(
"cp"
,
"-p"
,
initd
script
,
filepath
.
Join
(
packageRoot
,
"/etc/init.d/grafana"
))
// copy environment file
runError
(
"cp"
,
"-p"
,
default
Script
,
filepath
.
Join
(
packageRoot
,
"etc"
,
defaultPath
,
"grafana"
))
runError
(
"cp"
,
"-p"
,
initd
ScriptSrc
,
filepath
.
Join
(
packageRoot
,
initdScriptPath
))
// copy environment
var
file
runError
(
"cp"
,
"-p"
,
default
FileSrc
,
filepath
.
Join
(
packageRoot
,
defaultFilePath
))
// copy systemd file
run
Error
(
"cp"
,
"-p"
,
systemdServiceFile
,
filepath
.
Join
(
packageRoot
,
"/usr/lib/systemd/system/grafana.service"
))
run
Print
(
"cp"
,
"-p"
,
systemdFileSrc
,
filepath
.
Join
(
packageRoot
,
systemdServiceFilePath
))
// copy release files
runError
(
"cp"
,
"-a"
,
filepath
.
Join
(
workingDir
,
"tmp"
)
+
"/."
,
packageInstallRoot
)
runError
(
"cp"
,
"-a"
,
filepath
.
Join
(
workingDir
,
"tmp"
)
+
"/."
,
filepath
.
Join
(
packageRoot
,
homeDir
)
)
// copy sample ini file to /etc/opt/grafana
configFile
:=
filepath
.
Join
(
configDir
,
"grafana.ini"
)
runError
(
"cp"
,
"conf/sample.ini"
,
configFile
)
runError
(
"cp"
,
"conf/sample.ini"
,
filepath
.
Join
(
packageRoot
,
configFilePath
))
args
:=
[]
string
{
"-s"
,
"dir"
,
...
...
@@ -151,8 +157,11 @@ func createPackage(packageType string, defaultPath string) {
"--url"
,
"http://grafana.org"
,
"--license"
,
"Apache 2.0"
,
"--maintainer"
,
"contact@grafana.org"
,
"--config-files"
,
filepath
.
Join
(
configRoot
,
"grafana.ini"
),
"--after-install"
,
afterInstallScript
,
"--config-files"
,
configFilePath
,
"--config-files"
,
initdScriptPath
,
"--config-files"
,
defaultFilePath
,
"--config-files"
,
systemdServiceFilePath
,
"--after-install"
,
postintSrc
,
"--name"
,
"grafana"
,
"--version"
,
version
,
"-p"
,
"./dist"
,
...
...
@@ -209,7 +218,7 @@ func test(pkg string) {
}
func
build
(
pkg
string
,
tags
[]
string
)
{
binary
:=
"./bin/
grafana-server"
binary
:=
"./bin/
"
+
serverBinaryName
if
goos
==
"windows"
{
binary
+=
".exe"
}
...
...
conf/defaults.ini
View file @
4c6d7630
app_name
=
Grafana
app_mode
=
production
##################### Grafana Configuration Example #####################
#
# Everything has defaults so you only need to uncomment things you want to
# change
; app_mode = production
#################################### Paths ####################################
[paths]
; data_path
; where rendered png images are temporarily stored
; file based sessions are stored here (if file based session is configured below)
; the database is stored here if sqlite3 database is used
# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is useD)
#
data
=
data
#
# Directory where grafana can store logs
#
logs
=
data/log
#################################### Server ####################################
[server]
; p
rotocol (http or https)
# P
rotocol (http or https)
protocol
=
http
; the ip address to bind to, empty will bind to all interfaces
# The ip address to bind to, empty will bind to all interfaces
http_addr
=
; the http port to use
# The http port to use
http_port
=
3000
; The public facing domain name used to access grafana from a browser
# The public facing domain name used to access grafana from a browser
domain
=
localhost
; the full public facing url
# The full public facing url
root_url
=
%(protocol)s://%(domain)s:%(http_port)s/
# Log web requests
router_logging
=
false
; the path relative home path where frontend assets are located
# the path relative working path
static_root_path
=
public
; enable gzip
# enable gzip
enable_gzip
=
false
; https certs & key file
# https certs & key file
cert_file
=
cert_key
=
[analytics]
# Server reporting, sends usage counters to stats.grafana.org every 24 hours.
# No ip addresses are being tracked, only simple counters to track
# running instances, dashboard and error counts. It is very helpful to us.
# Change this option to false to disable reporting.
reporting_enabled
=
true
; Google Analytics universal tracking code, only enabled if you specify an id here
google_analytics_ua_id
=
#################################### Database ####################################
[database]
;
Either "mysql", "postgres" or "sqlite3", it's your choice
#
Either "mysql", "postgres" or "sqlite3", it's your choice
type
=
sqlite3
host
=
127.0.0.1:3306
name
=
grafana
user
=
root
password
=
; For "postgres" only, either "disable", "require" or "verify-full"
# For "postgres" only, either "disable", "require" or "verify-full"
ssl_mode
=
disable
; For "sqlite3" only, path relative to data_path setting
# For "sqlite3" only, path relative to data_path setting
path
=
grafana.db
#################################### Session ####################################
[session]
;
Either "memory", "file", "redis", "mysql", default is "memory"
#
Either "memory", "file", "redis", "mysql", default is "memory"
provider
=
file
; Provider config options
; memory: not have any config yet
; file: session dir path, is relative to grafana data_path
; redis: config like redis server addr, poolSize, password, e.g. `127.0.0.1:6379,100,grafana`
; mysql: go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1)/database_name`
# Provider config options
# memory: not have any config yet
# file: session dir path, is relative to grafana data_path
# redis: config like redis server addr, poolSize, password, e.g. `127.0.0.1:6379,100,grafana`
# mysql: go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1)/database_name`
provider_config
=
sessions
; Session cookie name
# Session cookie name
cookie_name
=
grafana_sess
; If you use session in https only, default is false
# If you use session in https only, default is false
cookie_secure
=
false
; Session life time, default is 86400
# Session life time, default is 86400
session_life_time
=
86400
#################################### Analytics ####################################
[analytics]
# Server reporting, sends usage counters to stats.grafana.org every 24 hours.
# No ip addresses are being tracked, only simple counters to track
# running instances, dashboard and error counts. It is very helpful to us.
# Change this option to false to disable reporting.
reporting_enabled
=
true
# Google Analytics universal tracking code, only enabled if you specify an id here
google_analytics_ua_id
=
#################################### Security ####################################
[security]
;
default admin user, created on startup
#
default admin user, created on startup
admin_user
=
admin
;
default admin password, can be changed before first start of grafana, or in profile settings
#
default admin password, can be changed before first start of grafana, or in profile settings
admin_password
=
admin
;
used for signing
#
used for signing
secret_key
=
SW2YcwTIb9zpOOhoPsMm
;
Auto-login remember days
#
Auto-login remember days
login_remember_days
=
7
cookie_username
=
grafana_user
cookie_remember_name
=
grafana_remember
#################################### Users ####################################
[users]
;
disable user signup / registration
#
disable user signup / registration
allow_sign_up
=
true
;
Allow non admin users to create organizations
#
Allow non admin users to create organizations
allow_org_create
=
true
# Set to true to automatically assign new users to the default organization (id 1)
auto_assign_org
=
true
;
Default role new users will be automatically assigned (if disabled above is set to true)
#
Default role new users will be automatically assigned (if disabled above is set to true)
auto_assign_org_role
=
Viewer
#################################### Anonymous Auth ##########################
[auth.anonymous]
;
enable anonymous access
#
enable anonymous access
enabled
=
false
;
specify organization name that should be used for unauthenticated users
#
specify organization name that should be used for unauthenticated users
org_name
=
Main Org.
;
specify role for unauthenticated users
#
specify role for unauthenticated users
org_role
=
Viewer
#################################### Github Auth ##########################
[auth.github]
enabled
=
false
client_id
=
some_id
...
...
@@ -103,9 +133,10 @@ client_secret = some_secret
scopes
=
user:email
auth_url
=
https://github.com/login/oauth/authorize
token_url
=
https://github.com/login/oauth/access_token
; u
ncomment bellow to only allow specific email domains
# U
ncomment bellow to only allow specific email domains
; allowed_domains = mycompany.com othercompany.com
#################################### Google Auth ##########################
[auth.google]
enabled
=
false
client_id
=
some_client_id
...
...
@@ -113,23 +144,24 @@ client_secret = some_client_secret
scopes
=
https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
auth_url
=
https://accounts.google.com/o/oauth2/auth
token_url
=
https://accounts.google.com/o/oauth2/token
; u
ncomment bellow to only allow specific email domains
# U
ncomment bellow to only allow specific email domains
; allowed_domains = mycompany.com othercompany.com
#################################### Logging ##########################
[log]
;
Either "console", "file", default is "console"
;
Use comma to separate multiple modes, e.g. "console, file"
#
Either "console", "file", default is "console"
#
Use comma to separate multiple modes, e.g. "console, file"
mode
=
console, file
;
Buffer length of channel, keep it as it is if you don't know what it is.
#
Buffer length of channel, keep it as it is if you don't know what it is.
buffer_len
=
10000
;
Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
#
Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
level
=
Info
;
For "console" mode only
#
For "console" mode only
[log.console]
level
=
;
For "file" mode only
#
For "file" mode only
[log.file]
level
=
; This enables automated log rotate(switch of following options), default is true
...
...
@@ -143,6 +175,7 @@ daily_rotate = true
; Expired days of log file(delete after max days), default is 7
max_days
=
7
#################################### AMPQ Event Publisher ##########################
[event_publisher]
enabled
=
false
rabbitmq_url
=
amqp://localhost/
...
...
conf/sample.ini
View file @
4c6d7630
##################### Grafana Configuration Example #####################
# Sample grafana config for deb & rpm packages
# You only need to specify overrides here
# Defaults are in the /opt/grafana/current/conf/defaults.ini file
# This file is never ovewritten when upgrading grafana via deb or rpm package
app_mode
=
production
;
app_mode = production
; data_path (used for sqlite3 db (if that is used), temp png images, and sessions (if file based sessions are used)
; this option is passed via command line args, override this option in /etc/default/grafana
; defaults to /opt/grafana/data
data_path
=
#################################### Paths ####################################
[paths]
# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is useD)
#
;data = /var/lib/grafana
#
# Directory where grafana can store logs
#
;logs = /var/log/grafana
[server]
; protocol (http or https)
protocol
=
http
;
protocol = http
; the ip address to bind to, empty will bind to all interfaces
http_addr
=
;
http_addr =
; the http port to use
http_port
=
3000
;
http_port = 3000
; The public facing domain name used to access grafana from a browser
domain
=
localhost
;
domain = localhost
; the full public facing url
root_url
=
%(protocol)s://%(domain)s:%(http_port)s/
router_logging
=
false
; the path relative to grafana process working directory
static_root_path
=
public
enable_gzip
=
false
;root_url = %(protocol)s://%(domain)s:%(http_port)s/
;router_logging = false
; the path relative home path where frontend assets are located
;static_root_path = public
; enable gzip
;enable_gzip = false
; https certs & key file
cert_file
=
cert_key
=
[analytics]
# Server reporting, sends usage counters to stats.grafana.org (https).
# No ip addresses are being tracked, only simple counters to track
# running instances, dashboard and error counts. It is very helpful to us.
# Change this option to false to disable reporting.
reporting_enabled
=
true
; Google Analytics universal tracking code, only enabled if you specify an id here
google_analytics_ua_id
=
[database]
; Either "mysql", "postgres" or "sqlite3", it's your choice
type
=
sqlite3
host
=
127.0.0.1:3306
name
=
grafana
user
=
root
password
=
; For "postgres" only, either "disable", "require" or "verify-full"
ssl_mode
=
disable
; For "sqlite3" only, path is relative to data_dir
path
=
grafana.db
[session]
; Either "memory", "file", "redis", "mysql", default is "memory"
provider
=
file
; Provider config options
; memory: not have any config yet
; file: session file path, e.g. `sessions`, relative to data_dir
; redis: config like redis server addr, poolSize, password, e.g. `127.0.0.1:6379,100,grafana`
; mysql: go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1)/database_name`
provider_config
=
sessions
; Session cookie name
cookie_name
=
grafana_sess
; If you use session in https only, default is false
cookie_secure
=
false
; Session life time, default is 86400
session_life_time
=
86400
[security]
; default admin user, created on startup
admin_user
=
admin
; default admin password, can be changed before first start of grafana, or in profile settings
admin_password
=
admin
; used for signing
secret_key
=
SW2YcwTIb9zpOOhoPsMm
; Auto-login remember days
login_remember_days
=
7
cookie_username
=
grafana_user
cookie_remember_name
=
grafana_remember
[users]
; disable user signup / registration
allow_sign_up
=
true
; Allow non admin users to create organizations
allow_org_create
=
true
# Set to true to automatically assign new users to the default organization (id 1)
auto_assign_org
=
true
; Default role new users will be automatically assigned (if disabled above is set to true)
auto_assign_org_role
=
Viewer
[auth.anonymous]
; enable anonymous access
enabled
=
false
; specify organization name that should be used for unauthenticated users
org_name
=
Main org.
; specify role for unauthenticated users
org_role
=
Viewer
;cert_file =
;cert_key =
[log]
; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
level
=
Info
mode
=
console, file
; root_path, this option is passed via command line args,
; override this option in /etc/default/grafana
; defaults to /var/log/grafana/
root_path
=
packaging/deb/control/postinst
View file @
4c6d7630
...
...
@@ -30,12 +30,12 @@ case "$1" in
"
$GRAFANA_USER
"
fi
# Set user permissions on /var/log/grafana, /
opt/grafana/dat
a
mkdir
-p
/var/log/grafana /
opt/grafana/dat
a
chown
-R
$GRAFANA_USER
:
$GRAFANA_GROUP
/var/log/grafana /
opt/grafana/dat
a
chmod 755 /var/log/grafana /
opt/grafana/dat
a
# Set user permissions on /var/log/grafana, /
var/lib/grafan
a
mkdir
-p
/var/log/grafana /
var/lib/grafan
a
chown
-R
$GRAFANA_USER
:
$GRAFANA_GROUP
/var/log/grafana /
var/lib/grafan
a
chmod 755 /var/log/grafana /
var/lib/grafan
a
# configuration files should not be modifiable by
elasticsearch
user, as this can be a security issue
# configuration files should not be modifiable by
grafana
user, as this can be a security issue
chown
-Rh
root:root /etc/grafana/
*
chmod 755 /etc/grafana
find /etc/grafana
-type
f
-exec
chmod 644
{}
';'
...
...
packaging/deb/default/grafana
→
packaging/deb/default/grafana
-server
View file @
4c6d7630
GRAFANA_USER=grafana
GRAFANA_GROUP=grafana
GRAFANA_HOME=/usr/share/grafana
LOG_DIR=/var/log/grafana
GRAFANA_HOME=/opt/grafana
DATA_DIR=/
opt/grafana/dat
a
WORK_DIR=/opt/grafana
DATA_DIR=/
var/lib/grafan
a
MAX_OPEN_FILES=10000
CONF_DIR=/etc/grafana
CONF_FILE=/etc/grafana/grafana.ini
RESTART_ON_UPGRADE=true
packaging/deb/init.d/grafana
→
packaging/deb/init.d/grafana
-server
View file @
4c6d7630
...
...
@@ -20,9 +20,9 @@
# 3. Centos with initscripts package installed
PATH
=
/bin:/usr/bin:/sbin:/usr/sbin
NAME
=
grafana
NAME
=
grafana
-server
DESC
=
"Grafana Server"
DEFAULT
=
/etc/default/
$NAME
DEFAULT
=
/etc/default/
grafana-server
if
[
`
id
-u
`
-ne
0
]
;
then
echo
"You need root privileges to run this script"
...
...
@@ -37,11 +37,11 @@ fi
GRAFANA_USER
=
grafana
GRAFANA_GROUP
=
grafana
GRAFANA_HOME
=
/
opt/
$NAME
CONF_DIR
=
/etc/
$NAME
GRAFANA_HOME
=
/
usr/share/grafana
CONF_DIR
=
/etc/
grafana
WORK_DIR
=
$GRAFANA_HOME
DATA_DIR
=
$GRAFANA_HOME
/dat
a
LOG_DIR
=
/var/log/
$NAME
DATA_DIR
=
/var/lib/grafan
a
LOG_DIR
=
/var/log/
grafana
CONF_FILE
=
$CONF_DIR
/grafana.ini
MAX_OPEN_FILES
=
10000
...
...
@@ -51,8 +51,8 @@ if [ -f "$DEFAULT" ]; then
fi
PID_FILE
=
/var/run/
$NAME
.pid
DAEMON
=
$GRAFANA_HOME
/bin/grafana
DAEMON_OPTS
=
"--pidfile=
${
PID_FILE
}
--config=
${
CONF_FILE
}
--default-data-path=
${
DATA_DIR
}
--default-log-path=
${
LOG_DIR
}
web
"
DAEMON
=
/usr/bin/grafana-server
DAEMON_OPTS
=
"--pidfile=
${
PID_FILE
}
--config=
${
CONF_FILE
}
cfg:default.paths.data=
${
DATA_DIR
}
cfg:default.paths.logs=
${
LOG_DIR
}
"
# Check DAEMON exists
test
-x
$DAEMON
||
exit
0
...
...
packaging/deb/systemd/grafana.service
→
packaging/deb/systemd/grafana
-server
.service
View file @
4c6d7630
...
...
@@ -9,10 +9,10 @@ EnvironmentFile=/etc/default/grafana
User=grafana
Group=grafana
Type=simple
ExecStart=/
opt/grafana/bin/grafana
\
--config=$
CONF_FILE
\
--default-log-path=$LOG_DIR
\
--default-path-data=$DATA_DIR
\
ExecStart=/
usr/bin/grafana-server
\
--config=$
{CONF_FILE}
\
cfg:default.paths.data=${LOG_DIR}
\
cfg:default.paths.data=${DATA_DIR}
\
LimitNOFILE=10000
TimeoutStopSec=20
...
...
packaging/rpm/init.d/grafana
→
packaging/rpm/init.d/grafana
-server
View file @
4c6d7630
File moved
packaging/rpm/sysconfig/grafana
→
packaging/rpm/sysconfig/grafana
-server
View file @
4c6d7630
File moved
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment