LoginSignup
17
18

More than 5 years have passed since last update.

Graphana インストール - InfluxDBとの連携

Last updated at Posted at 2015-08-27

はじめに

システムを開発しているときに、毎回サーバーに入ってログを見たり、DBを検索して集計するのが手間で面倒になってきた。
そこで統計情報はリアルタイムに見たいなと思って、今回は表示部分であるGrafanaを調べてみたのでメモを残しておく。

環境

  • OS: CentOS7.1
  • Grafana: 2.1.3
  • InfluxDB: 0.9.2

Grafanaとは

http://docs.grafana.org/
に記載しているが、Visualizationツールで以下のバックエンドのデータソースと組み合わせて利用可能とのこと。

  • Graphite
  • InfluxDB
  • OpenTSDB

元々はKibanaをForkしたもの。

Install

Install

http://docs.grafana.org/installation/rpm/
に記載されている通り。

$ yum -y install https://grafanarel.s3.amazonaws.com/builds/grafana-2.1.3-1.x86_64.rpm
$ sudo systemctl start grafana-server
$ sudo systemctl status grafana-server
grafana-server.service - Starts and stops a single grafana instance on this system
   Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled)
   Active: active (running) since 水 2015-08-26 23:30:31 JST; 5s ago
     Docs: http://docs.grafana.org
 Main PID: 2701 (grafana-server)
   CGroup: /system.slice/grafana-server.service
           └─2701 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile= cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana LimitNOFILE=10000
...
$

設定

portはデフォルトは3000、80を指定するときは設定ファイルでは設定できないとのこと。

設定ファイルは/etc/grafana/grafana.iniに配置されている。
以下の設定が可能。

タグ 設定内容
server プロトコル、address,port,ssl証明書情報など
database ユーザー情報やダッシュボード情報を保存するデータベースの選択。デフォルトはsqlite
security 管理者情報の設定。デフォルトでは管理者ユーザーはadmin/admin
users 一般ユーザーに関する設定。サインアップさせるかなど
auth.anonymous anonymousに関する設定。アクセスさせるかなど
auth.github githubアカウントによる認証設定かな。
auth.google googleアカウントによる認証設定かな。
auth.basic Basic認証設定
auth.ldap Ldap認証設定
auth.proxy リバースプロキシ設定
session session, cookie設定
analytics Reporting設定
dashboards.json ダッシュボードの設定

デフォルトは以下。
今回は触ってみるだけなので何も変更せず利用する。

$ cat /etc/grafana/grafana.ini 
##################### Grafana Configuration Example #####################
#
# Everything has defaults so you only need to uncomment things you want to
# change

; app_mode = production

#################################### 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 ####################################
[server]
# Protocol (http or https)
;protocol = http

# The ip address to bind to, empty will bind to all interfaces
;http_addr =

# The http port  to use
;http_port = 3000

# The public facing domain name used to access grafana from a browser
;domain = localhost

# Redirect to correct domain if host header does not match domain
# Prevents DNS rebinding attacks
;enforce_domain = false

# The full public facing url
;root_url = %(protocol)s://%(domain)s:%(http_port)s/

# Log web requests
;router_logging = false

# the path relative working path
;static_root_path = public

# enable gzip
;enable_gzip = false

# https certs & key file
;cert_file =
;cert_key =

#################################### Database ####################################
[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 relative to data_path setting
;path = grafana.db

#################################### Session ####################################
[session]
# Either "memory", "file", "redis", "mysql", "postgresql", default is "file"
;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 e.g. `addr=127.0.0.1:6379,pool_size=100,db=grafana`
# mysql: go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1:3306)/database_name`
# postgres: user=a password=b host=localhost port=5432 dbname=c sslmode=disable
;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

#################################### 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
;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

# disable gravatar profile images
;disable_gravatar = false

#################################### Users ####################################
[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

#################################### Anonymous Auth ##########################
[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

#################################### Github Auth ##########################
[auth.github]
;enabled = false
;allow_sign_up = false
;client_id = some_id
;client_secret = some_secret
;scopes = user:email,read:org
;auth_url = https://github.com/login/oauth/authorize
;token_url = https://github.com/login/oauth/access_token
;api_url = https://api.github.com/user
;team_ids =
;allowed_domains =
;allowed_organizations =

#################################### Google Auth ##########################
[auth.google]
;enabled = false
;allow_sign_up = false
;client_id = some_client_id
;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
;api_url = https://www.googleapis.com/oauth2/v1/userinfo
;allowed_domains =

#################################### Auth Proxy ##########################
[auth.proxy]
;enabled = false
;header_name = X-WEBAUTH-USER
;header_property = username
;auto_sign_up = true

#################################### Basic Auth ##########################
[auth.basic]
;enabled = true

#################################### Auth LDAP ##########################
[auth.ldap]
;enabled = false
;config_file = /etc/grafana/ldap.toml

#################################### SMTP / Emailing ##########################
[smtp]
;enabled = false
;host = localhost:25
;user =
;password =
;cert_file =
;key_file =
;skip_verify = false
;from_address = admin@grafana.localhost

[emails]
;welcome_email_on_sign_up = false

#################################### Logging ##########################
[log]
# 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_len = 10000

# Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
;level = Info

# For "console" mode only
[log.console]
;level =

# For "file" mode only
[log.file]
;level =
# This enables automated log rotate(switch of following options), default is true
;log_rotate = true

# Max line number of single file, default is 1000000
;max_lines = 1000000

# Max size shift of single file, default is 28 means 1 << 28, 256MB
;max_lines_shift = 28

# Segment log daily, default is true
;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/
;exchange = grafana_events

;#################################### Dashboard JSON files ##########################
[dashboards.json]
;enabled = false
;path = /var/lib/grafana/dashboards
$

アクセス

http://localhost:3000にアクセスしてみる。

以下の画面が表示される。
users.allow_sign_up = trueなのでSign upタブが有効化されている。

graphana.png

admin/adminで入ると以下が表示される。

graphana_after.png

何もありませんね^^;

InfluxDBとの連携

さてどうしたものかなととりあえずInfluxDBのデータを使ってみようと思い以下を参考にする。
http://docs.grafana.org/datasources/influxdb/

InfluxDBについてはインストール済みであることを前提とする。
InfluxDB インストール - 簡単な使い方

InfluxDBにデータ投入

以下のコマンドを叩いてInfluxDBにデータを投入する。
testというデータベースにcpuというmeasurementにデータを入れている。

$ while true; do curl -i -XPOST 'http://localhost:8086/write?db=test' --data-binary 'cpu,host=serverA,region=jp_east value=0.68'&&sleep 3; done

Grafanaの設定

Datasourceの設定

Data sources > Add new
でinfluxdbを追加してやる。
ここではlocalhostのInfluxDBを指定している。
Accessはdirectとproxyを選択可能で、localならdirectだろうと安易に考えて設定すると繋がらないのでご注意を。
proxyを指定することでgrafanaがProxyとしてInfluxdbにアクセスしてくれるらしい。

間違っているかも。

graphana_testconn.png

Dashboard作成->Graph作成

次にDashboardを作成してやる。
Dashboard > プルダウンメニュ
+ Newで新たなダッシュボードを作成することが出来る。

graphana_create_dashboard.png

作成後、
Add Panel > Graph
を選択してやる。

graphana_create_graph.png

そうするとGraphiteのサンプルデータが表示される。
ヘッダーメニュのEditボタンを押して編集画面に遷移する。

graphana_init_graph.png

フッターメニュで先ほどDatasourceで作成したinfluxdbを選択してやる。
そしてInfluxDBのデータを格納しているmeasurementであるcpuを選択して、テキトーな集合関数を選択するだけでデータが表示されるようになる。

graphana_influx.png

ダッシュボードの自動更新設定

ヘッダーメニュの右側のメニュで自動更新設定を選択出来る。

graphana_auto_updated.png

設定を永続化するためにはヘッダーメニュでSaveしてやる。

graphana_save_dashboard.png

おわりに

次はFluentdをInfluxDBに入れて、Grafanaでデータを表示するまでをやりたい。

おしまい。

17
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
18