Grafana ÊÇÒ»¸öÓÐ×ŷḻָ±êµÄ¿ªÔ´¿ØÖÆÃæ°å¡£ÔÚ¿ÉÊÓ»¯´ó¹æÄ£²âÁ¿Êý¾ÝµÄʱºòÊǷdz£ÓÐÓõġ£¸ù¾Ý²»Í¬µÄÖ¸±êÊý¾Ý£¬ËüÌṩÁËÒ»¸öÇ¿´ó¡¢ÓÅÑŵÄÀ´´´½¨¡¢·ÖÏíºÍä¯ÀÀÊý¾ÝµÄ·½Ê½¡£
ËüÌṩÁ˷ḻ¶àÑù¡¢Áé»îµÄͼÐÎÑ¡Ïî¡£´ËÍ⣬Õë¶ÔÊý¾ÝÔ´(Data Source)£¬ËüÖ§³ÖÐí¶à²»Í¬µÄ´æ´¢ºó¶Ë¡£Ã¿¸öÊý¾ÝÔ´¶¼ÓÐÕë¶ÔÌØ¶¨Êý¾ÝÔ´µÄÌØÐԺ͹¦ÄÜËù¶¨ÖƵIJéѯ±à¼Æ÷¡£Grafana
ÌṩÁ˶ÔÏÂÊöÊý¾ÝÔ´µÄÕýʽ֧³Ö£ºGraphite¡¢InfluxDB¡¢OpenTSDB¡¢ Prometheus¡¢Elasticsearch
ºÍ Cloudwatch¡£
ÿ¸öÊý¾ÝÔ´µÄ²éѯÓïÑÔºÍÄÜÁ¦ÏÔÈ»ÊDz»Í¬µÄ£¬Äã¿ÉÒÔ½«À´×Ô¶à¸öÊý¾ÝÔ´µÄÊý¾Ý»ìºÏµ½Ò»¸öµ¥Ò»µÄÒDZíÅÌÉÏ£¬µ«Ã¿¸öÃæ°å(Panel)±»°ó¶¨µ½ÊôÓÚÒ»¸öÌØ¶¨×éÖ¯(Organization)µÄÌØ¶¨Êý¾ÝÔ´ÉÏ¡£ËüÖ§³ÖÑéÖ¤µÇ¼ºÍ»ùÓÚ½ÇÉ«µÄ·ÃÎÊ¿ØÖÆ·½°¸¡£ËüÊÇ×÷Ϊһ¸ö¶ÀÁ¢Èí¼þ²¿Êð£¬Ê¹ÓÃ
Go ºÍ JavaScript ±àдµÄ¡£
ÔÚÕâÆªÎÄÕ£¬ÎÒ½«½²½âÈçºÎÔÚ Ubuntu 16.04 Éϰ²×° Grafana ²¢Ê¹ÓÃÕâ¸öÈí¼þÅäÖà Docker
¼à¿Ø¡£
ÏȾöÌõ¼þ
°²×°ºÃ Docker µÄ·þÎñÆ÷
°²×° Grafana
ÎÒÃÇ¿ÉÒÔÔÚ Docker Öй¹½¨ÎÒÃÇµÄ Grafana¡£ ÓÐÒ»¸ö¹Ù·½ÌṩµÄ
Grafana Docker ¾µÏñ¡£ÇëÔËÐÐÏÂÊöÃüÁîÀ´¹¹½¨Grafana ÈÝÆ÷¡£
root@ubuntu:~#
docker run -i -p 3000:3000 grafana/grafana
Unable to find image 'grafana/grafana:latest'
locally
latest: Pulling from grafana/grafana
5c90d4a2d1a8: Pull complete
b1a9a0b6158e: Pull complete
acb23b0d58de: Pull complete
Digest: sha256:34ca2f9c7986cb2d115eea373083f7150a2b9b753210546d14477e2276074ae1
Status: Downloaded newer image
for grafana/grafana:latest
t=2016-07-27T15:20:19+0000 lvl=info
msg="Starting Grafana"
logger=main version=3.1.0 commit=v3.1.0
compiled=2016-07-12T06:42:28+0000
t=2016-07-27T15:20:19+0000 lvl=info
msg="Config loaded from"
logger=settings file=/usr/share/grafana/conf/defaults.ini
t=2016-07-27T15:20:19+0000 lvl=info
msg="Config loaded from"
logger=settings file=/etc/grafana/grafana.ini
t=2016-07-27T15:20:19+0000 lvl=info
msg="Config overriden from
command line" logger=settings
arg="default.paths.data=/var/lib/grafana"
t=2016-07-27T15:20:19+0000 lvl=info
msg="Config overriden from command
line" logger=settings arg="default.paths.logs=/var/log/grafana"
t=2016-07-27T15:20:19+0000 lvl=info
msg="Config overriden from command
line" logger=settings arg="default.paths.plugins=/var/lib/grafana/plugins"
t=2016-07-27T15:20:19+0000 lvl=info
msg="Path Home" logger=settings
path=/usr/share/grafana
t=2016-07-27T15:20:19+0000 lvl=info
msg="Path Data" logger=settings
path=/var/lib/grafana
t=2016-07-27T15:20:19+0000 lvl=info
msg="Path Logs" logger=settings
path=/var/log/grafana
t=2016-07-27T15:20:19+0000 lvl=info
msg="Path Plugins" logger=settings
path=/var/lib/grafana/plugins
t=2016-07-27T15:20:19+0000 lvl=info
msg="Initializing DB" logger=sqlstore
dbtype=sqlite3
t=2016-07-27T15:20:20+0000 lvl=info
msg="Executing migration" logger=migrator
id="create playlist table
v2"
t=2016-07-27T15:20:20+0000 lvl=info
msg="Executing migration" logger=migrator
id="create playlist item
table v2"
t=2016-07-27T15:20:20+0000 lvl=info
msg="Executing migration" logger=migrator
id="drop preferences table
v2"
t=2016-07-27T15:20:20+0000 lvl=info
msg="Executing migration" logger=migrator
id="drop preferences table
v3"
t=2016-07-27T15:20:20+0000 lvl=info
msg="Executing migration" logger=migrator
id="create preferences table
v3"
t=2016-07-27T15:20:20+0000 lvl=info
msg="Created default admin user: [admin]"
t=2016-07-27T15:20:20+0000 lvl=info
msg="Starting plugin search" logger=plugins
t=2016-07-27T15:20:20+0000 lvl=info
msg="Server Listening" logger=server
address=0.0.0.0:3000 protocol=http
subUrl=
|
ÎÒÃÇ¿ÉÒÔͨ¹ýÔËÐдËÃüÁîÈ·ÈÏ Grafana ÈÝÆ÷µÄ¹¤×÷״̬ docker ps -a »òͨ¹ýÕâ¸öURL·ÃÎÊ
http://Docker IP:3000¡£
ËùÓÐµÄ Grafana ÅäÖÃÉèÖö¼Ê¹Óû·¾³±äÁ¿¶¨Ò壬ÔÚʹÓÃÈÝÆ÷¼¼ÊõʱÕâ¸öÊǷdz£ÓÐÓõġ£Grafana
ÅäÖÃÎļþ·¾¶Îª /etc/grafana/grafana.ini¡£
Àí½âÅäÖÃÏî
Grafana ¿ÉÒÔÔÚËüµÄ ini ÅäÖÃÎļþÖÐÖ¸¶¨¼¸¸öÅäÖÃÑ¡Ï»ò¿ÉÒÔʹÓÃÇ°ÃæÌáµ½µÄ»·¾³±äÁ¿À´Ö¸¶¨¡£
ÅäÖÃÎļþλÖÃ
ͨ³£ÅäÖÃÎļþ·¾¶£º
ĬÈÏÅäÖÃÎļþ·¾¶ : $WORKING_DIR/conf/defaults.ini
×Ô¶¨ÒåÅäÖÃÎļþ·¾¶ : $WORKING_DIR/conf/custom.ini
PS£ºµ±ÄãʹÓà deb¡¢rpm »ò docker ¾µÏñ°²×° Grafana ʱ£¬ÄãµÄÅäÖÃÎļþÔÚ /etc/grafana/grafana.ini¡£
Àí½âÅäÖñäÁ¿
ÏÖÔÚÎÒÃÇ¿´Ò»Ð©ÅäÖÃÎļþÖеıäÁ¿£º
instance_name£ºÕâÊÇ Grafana ·þÎñÆ÷ʵÀýµÄÃû×Ö¡£Ä¬ÈÏÖµ´Ó ${HOSTNAME}
»ñÈ¡£¬ÆäÖµÊÇ»·¾³±äÁ¿HOSTNAME£¬Èç¹û¸Ã±äÁ¿Îª¿Õ»ò²»´æÔÚ£¬Grafana ½«»á³¢ÊÔʹÓÃϵͳµ÷ÓÃÀ´»ñÈ¡»úÆ÷Ãû¡£
[paths]£ºÕâЩ·¾¶Í¨³£¶¼ÊÇÔÚ init.d ½Å±¾»ò systemd service ÎļþÖÐͨ¹ýÃüÁîÐÐÖ¸¶¨¡£
data£ºÕâ¸öÊÇ Grafana ´æ´¢ sqlite3 Êý¾Ý¿â(Èç¹ûʹÓÃ)¡¢»ùÓÚÎļþµÄ»á»°(Èç¹ûʹÓÃ)£¬ºÍÆäËûÊý¾ÝµÄ·¾¶¡£
logs£ºÕâ¸öÊÇ Grafana ´æ´¢ÈÕÖ¾µÄ·¾¶¡£
[server]
http_addr£ºÓ¦ÓüàÌýµÄ IP µØÖ·£¬Èç¹ûΪ¿Õ£¬Ôò¼àÌýËùÓеĽӿڡ£
http_port£ºÓ¦ÓüàÌýµÄ¶Ë¿Ú£¬Ä¬ÈÏÊÇ 3000£¬Äã¿ÉÒÔʹÓÃÏÂÃæµÄÃüÁÄãµÄ 80 ¶Ë¿ÚÖØ¶¨Ïòµ½ 3000
¶Ë¿Ú£º$iptables -t nat -A PREROUTING -p tcp --dport 80
-j REDIRECT --to-port 3000
root_url : Õâ¸ö URL ÓÃÓÚ´Óä¯ÀÀÆ÷·ÃÎÊ Grafana ¡£
cert_file : Ö¤ÊéÎļþµÄ·¾¶(Èç¹ûÐÒéÊÇ HTTPS)¡£
cert_key : Ö¤ÊéÃÜÔ¿ÎļþµÄ·¾¶(Èç¹ûÐÒéÊÇ HTTPS)¡£
[database]£ºGrafana ʹÓÃÊý¾Ý¿âÀ´´æ´¢Óû§ºÍÒDZíÅÌÒÔ¼°ÆäËûÐÅÏ¢£¬Ä¬ÈÏÅäÖÃΪʹÓÃÄÚǶÔÚ Grafana
Ö÷¶þ½øÖÆÎļþÖÐµÄ SQLite3¡£
type£ºÄã¿ÉÒÔ¸ù¾ÝÄãµÄÐèÇóÑ¡Ôñ MySQL¡¢Postgres¡¢SQLite3¡£
path£º½öÓÃÓÚÑ¡Ôñ SQLite3 Êý¾Ý¿âʱ£¬Õâ¸öÊÇÊý¾Ý¿âËù´æ´¢µÄ·¾¶¡£
host£º½öÊÊÓà MySQL »òÕß Postgres¡£Ëü°üÀ¨ IP µØÖ·»òÖ÷»úÃûÒÔ¼°¶Ë¿Ú¡£ÀýÈ磬Grafana
ºÍ MySQL ÔËÐÐÔÚͬһ̨Ö÷»úÉÏÉèÖÃÈ磺 host = 127.0.0.1:3306¡£
name£ºGrafana Êý¾Ý¿âµÄÃû³Æ£¬°ÑËüÉèÖÃΪ Grafana »òÆäËüÃû³Æ¡£
user£ºÊý¾Ý¿âÓû§(²»ÊÊÓÃÓÚ SQLite3)¡£
password£ºÊý¾Ý¿âÓû§ÃÜÂë(²»ÊÊÓÃÓÚ SQLite3)¡£
ssl_mode£º¶ÔÓÚ Postgres£¬Ê¹Óà disable£¬require£¬»ò verify-full
µÈÖµ¡£¶ÔÓÚ MySQL£¬Ê¹Óà true£¬false£¬»ò skip-verify¡£
ca_cert_path£º(Ö»ÊÊÓÃÓÚ MySQL)CA Ö¤ÊéÎļþ·¾¶£¬ÔÚ¶àÊý Linux ϵͳÖУ¬Ö¤Êé¿ÉÒÔÔÚ
/etc/ssl/certs ÕÒµ½¡£
client_key_path£º(Ö»ÊÊÓÃÓÚ MySQL)¿Í»§¶ËÃÜÔ¿µÄ·¾¶£¬Ö»ÔÚ·þÎñ¶ËÐèÒªÓû§¶ËÑé֤ʱʹÓá£
client_cert_path£º(Ö»ÊÊÓÃÓÚ MySQL)¿Í»§¶ËÖ¤ÊéµÄ·¾¶£¬Ö»ÔÚ·þÎñ¶ËÐèÒªÓû§¶ËÑé֤ʱʹÓá£
server_cert_name£º(Ö»ÊÊÓÃÓÚ MySQL)MySQL ·þÎñ¶ËʹÓõÄÖ¤ÊéµÄͨÓÃÃû³Æ×ֶΡ£Èç¹û
ssl_mode ÉèÖÃΪ skip-verify ʱ¿ÉÒÔ²»ÉèÖá£
[security]
admin_user£ºÕâ¸öÊÇ Grafana ĬÈϵĹÜÀíÔ±Óû§µÄÓû§Ãû£¬Ä¬ÈÏÉèÖÃΪ admin¡£
admin_password£ºÕâ¸öÊÇ Grafana ĬÈϵĹÜÀíÔ±Óû§µÄÃÜÂ룬ÔÚµÚÒ»´ÎÔËÐÐʱÉèÖã¬Ä¬ÈÏΪ
admin¡£
login_remember_days£º±£³ÖµÇ¼/¼ÇסÎҵijÖÐøÌìÊý¡£
secret_key£ºÓÃÓÚ±£³ÖµÇ¼/¼ÇסÎÒµÄ cookies µÄÇ©Ãû¡£
ÉèÖÃ¼à¿ØµÄÖØÒª×é¼þ
ÎÒÃÇ¿ÉÒÔʹÓÃÏÂÃæµÄ×é¼þÀ´´´½¨ÎÒÃÇµÄ Docker ¼à¿ØÏµÍ³¡£
cAdvisor£ºËü±»³ÆÎª Container Advisor¡£Ëü¸øÓû§ÌṩÁËÒ»¸ö×ÊÔ´ÀûÓúÍÐÔÄÜÌØÕ÷µÄ½â¶Á¡£Ëü»áÊÕ¼¯¡¢¾ÛºÏ¡¢´¦Àí¡¢µ¼³öÔËÐÐÖеÄÈÝÆ÷µÄÐÅÏ¢¡£Äã¿ÉÒÔͨ¹ýÕâ¸öÎĵµÁ˽â¸ü¶à¡£
InfluxDB£ºÕâÊÇÒ»¸ö°üº¬ÁËʱ¼äÐòÁС¢¶ÈÁ¿ºÍ·ÖÎöÊý¾Ý¿â¡£ÎÒÃÇʹÓÃÕâ¸öÊý¾ÝÔ´À´ÉèÖÃÎÒÃÇµÄ¼à¿Ø¡£cAdvisor
ֻչʾʵʱÐÅÏ¢£¬²¢²»±£´æÕâЩ¶ÈÁ¿ÐÅÏ¢¡£Influx Db °ïÖú±£´æ cAdvisor ÌṩµÄ¼à¿ØÊý¾Ý£¬ÒÔչʾ·Çijһʱ¶ÎµÄÊý¾Ý¡£
Grafana Dashboard£ºËü¿ÉÒÔ°ïÖúÎÒÃÇÔÚÊÓ¾õÉÏÕûºÏËùÓеÄÐÅÏ¢¡£Õâ¸öÇ¿´óµÄÒDZíÅÌʹÎÒÃÇÄܹ»Õë¶Ô
InfluxDB Êý¾Ý´æ´¢½øÐвéѯ²¢½«ËûÃÇ·ÅÔÚÒ»¸ö²¼¾ÖºÏÀíºÃ¿´µÄͼ±íÖС£
Docker ¼à¿ØµÄ°²×°
ÎÒÃÇÐèÒªÒ»²½Ò»²½µÄÔÚÎÒÃÇµÄ Docker ϵͳÖа²×°ÒÔÏÂÿһ¸ö×é¼þ£º
°²×° InfluxDB
ÎÒÃÇ¿ÉÒÔʹÓÃÕâ¸öÃüÁîÀ´ÀÈ¡ InfluxDB ¾µÏñ£¬²¢²¿ÊðÁË influxDB
ÈÝÆ÷¡£
root@ubuntu:~#
docker run -d -p 8083:8083 -p 8086:8086 --expose
8090 --expose 8099 -e PRE_CREATE_DB=cadvisor
--name influxsrv tutum/influxdb:0.8.8
Unable to find image 'tutum/influxdb:0.8.8'
locally
0.8.8: Pulling from tutum/influxdb
a3ed95caeb02: Already exists
23efb549476f: Already exists
aa2f8df21433: Already exists
ef072d3c9b41: Already exists
c9f371853f28: Already exists
a248b0871c3c: Already exists
749db6d368d0: Already exists
7d7c7d923e63: Pull complete
e47cc7808961: Pull complete
1743b6eeb23f: Pull complete
Digest: sha256:8494b31289b4dbc1d5b444e344ab1dda3e18b07f80517c3f9aae7d18133c0c42
Status: Downloaded newer image
for tutum/influxdb:0.8.8
d3b6f7789e0d1d01fa4e0aacdb636c221421107d1df96808ecbe8e241ceb1823
-p 8083:8083 : user interface,
log in with username-admin, pass-admin
-p 8086:8086 : interaction with
other application
--name influxsrv : container
have name influxsrv, use to cAdvisor link it.
|
Äã¿ÉÒÔ²âÊÔ InfluxDB ÊÇ·ñ°²×°ºÃ£¬Í¨¹ý·ÃÎÊÕâ¸ö URL http://ÄãµÄ
IP µØÖ·:8083£¬Óû§ÃûºÍÃÜÂë¶¼ÊÇ ¡±root¡°¡£

InfluxDB Administration
2016-08-01 14-10-08
ÎÒÃÇ¿ÉÒÔÔÚÕâ¸ö½çÃæÉÏ´´½¨ÎÒÃÇËùÐèµÄÊý¾Ý¿â¡£

createDB influx
°²×° cAdvisor
ÎÒÃǵÄÏÂÒ»¸ö²½ÖèÊǰ²×° cAdvisor ÈÝÆ÷£¬²¢½«ÆäÁ´½Óµ½ InfluxDB
ÈÝÆ÷¡£Äã¿ÉÒÔʹÓôËÃüÁîÀ´´´½¨Ëü¡£
root@ubuntu:~#
docker run --volume=/:/rootfs:ro --volume
=/var/run:/var/run:rw --volume=/sys:/sys:ro
--volume=
/var/lib/docker/:/var/lib/docker:ro
--publish=8080:8080
--detach=true --link influxsrv:influxsrv
--name=cadvisor
google/cadvisor:latest -storage_driver_db=cadvisor
-storage_driver_host=influxsrv:8086
Unable to find image 'google/cadvisor:latest'
locally
latest: Pulling from google/cadvisor
09d0220f4043: Pull complete
151807d34af9: Pull complete
14cd28dce332: Pull complete
Digest: sha256:8364c7ab7f56a087b757a304f9376c3527c8c60c848f82b66dd728980222bd2f
Status: Downloaded newer image
for google/cadvisor:latest
3bfdf7fdc83872485acb06666a686719983a1172ac49895cd2a260deb1cdde29
root@ubuntu:~#
--publish=8080:8080 : user interface
--link=influxsrv:influxsrv: link
to container influxsrv
-storage_driver=influxdb: set
the storage driver as InfluxDB
Specify what InfluxDB instance
to push data to:
-storage_driver_host=influxsrv:8086:
The ip:port of the
database. Default is ¡®localhost:8086¡¯
-storage_driver_db=cadvisor:
database name. Uses db
¡®cadvisor¡¯ by default
|
Äã¿ÉÒÔͨ¹ý·ÃÎÊÕâ¸öµØÖ·À´²âÊÔ°²×° cAdvisor ÊÇ·ñÕý³£ http://ÄãµÄ
IP µØÖ·:8080¡£ Õ⽫ΪÄãµÄ Docker Ö÷»úºÍÈÝÆ÷Ìṩͳ¼ÆÐÅÏ¢¡£

cAdvisor - Docker Containers
2016-08-01 14-24-18
°²×° Grafana ¿ØÖÆÃæ°å
×îºó£¬ÎÒÃÇÐèÒª°²×° Grafana ÒDZí°å²¢Á¬½Óµ½ InfluxDB£¬Äã¿ÉÒÔÖ´ÐÐÏÂÃæµÄÃüÁîÀ´ÉèÖÃËü¡£
root@ubuntu:~#
docker run -d -p 3000:3000 -e INFLUXDB_HOST=localhost
-e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=cadvisor
-e INFLUXDB_USER=
root -e INFLUXDB_PASS=root --link
influxsrv:influxsrv --name
grafana grafana/grafana
f3b7598529202b110e4e6b998dca6b6e60e8608d75dcfe0d2b09ae408f43684a
|
ÏÖÔÚÎÒÃÇ¿ÉÒԵǼ Grafana À´ÅäÖÃÊý¾ÝÔ´. ·ÃÎÊ http://ÄãµÄ IP µØÖ·:3000 »ò
http://ÄãµÄ IP µØÖ·(Èç¹ûÄãÔÚÇ°Ãæ×öÁ˶˿ÚÓ³ÉäµÄ»°):
Óû§Ãû - admin
ÃÜÂë - admin
Ò»µ©ÎÒÃǰ²×°ºÃÁË Grafana£¬ÎÒÃÇ¿ÉÒÔÁ¬½Ó InfluxDB¡£µÇ¼µ½ÒDZíÅ̲¢ÇÒµã»÷Ãæ°å×óÉÏ·½½ÇÂäµÄ
Grafana ͼ±ê(ÄǸö»ðÇò)¡£µã»÷Êý¾ÝÔ´(Data Sources)À´ÅäÖá£

addingdatabsource
ÏÖÔÚÄã¿ÉÒÔÌí¼ÓеÄͼÐÎ(Graph)µ½ÎÒÃÇĬÈϵÄÊý¾ÝÔ´ InfluxDB¡£

panelgraph
ÎÒÃÇ¿ÉÒÔͨ¹ýÔÚ²âÁ¿(Metric)Ò³Ãæ±à¼ºÍµ÷ÕûÎÒÃǵIJéѯÒÔµ÷ÕûÎÒÃǵÄͼÐΡ£

Grafana - Grafana Dashboard
2016-08-01 14-53-40

Grafana - Grafana Dashboard
¹ØÓÚ Docker ¼à¿Ø£¬Äã¿ÉÓôӴËÁ˽â¸ü¶àÐÅÏ¢¡£ ¸ÐлÄãµÄÔĶÁ¡£ÎÒÏ£ÍûÄã¿ÉÒÔÁôÏÂÓмÛÖµµÄ½¨ÒéºÍÆÀÂÛ¡£Ï£ÍûÄãÓиöÃÀºÃµÄÒ»Ìì¡£ |