Grafana使用

 2017-06-15 22:13:50     Grafana  InfluxDB  Telegraf   9871


导读: Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现。有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus 和 OpenTSDB 作为数据源,最新版本4.3.1已经支持 MySQL 数据源。

Grafana 主要特性:灵活丰富的图形化选项;可以混合多种风格;支持多个数据源;拥有丰富的插件扩展;支持用户权限管理。

准备学习 Grafana 之前,对其大概了解了一下,当时版本还是4.2,常用的数据源是 InfluxDBElasticSearch。等熟悉完 InfluxDB,回头再研究 Grafana 时,版本已经升级到4.3,开始支持 MySQL 数据源了。真是赶的巧。

安装


进入Grafana下载页面,根据系统选择对应的安装包和安装方式。我这里是 Ubuntu

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.3.2_amd64.deb 

dpkg -i grafana_4.3.2_amd64.deb
# 启动服务
service grafana-server start

服务的默认端口是3000,可以在配置文件中修改。

在浏览器上输入 http://192.168.1.23:3000 ,进入 Grafana 的登录页面。默认管理员用户名和密码是admin/admin。

基本概念


Data Source

数据源:正式的支持以下数据源 Graphite, InfluxDB, OpenTSDB, Prometheus, Elasticsearch, CloudWatch。从4.3版本开始支持 MySQL

每个数据源都有一个独立的查询编辑器,用来动态从数据源获取数据,并展示到 Panel 上。

Organization

组织:支持多组织,以支持各种部署模式,包括使用单个 Grafana 实例为多个组织提供服务。

用户、数据源和仪表板都隶属于组织。

用户隶属于某个组织后。就拥有该组织下的所有数据源和仪表板。

User

用户: Grafana 的帐户。用户可以属于一个或多个组织,并可以通过角色分配不同级别的权限。

Role

在给每个新用户分配组织时,可以指定其角色。角色有:AdminEditorRead Only EditorViewer。默认为 Viewer

Dashboard

仪表板:由一行或多行的面板组成。仪表板可以看做为一个展示单元(栏目),该单元由一行或多行组件构成,每行又可以由一个面板或多个面板组成。

仪表板的时间段可以由仪表板右上方的仪表板时间选择器控制。

Row

行: 仪表板内的逻辑分隔符,用于将面板组合在一起。一行里可以有一列或多列面板。

Panel

面板:Grafana 的可视化构建块,所有的数据展示都是在面板上实现的。

每个面板都有各种各样的造型和格式化选项,让你创建完美的图片。

目前有四种面板类型:GraphSinglestatDashlistTableText

Graph 面板允许你根据需要绘制出许多指标和系列。

Singlestat 面板需要将单个查询减少到单个数字。

DashlistText 是不连接到任何数据源的特殊面板。

可以通过插件安装的方式来扩展面板类型。例如:Pie ChartWorldmap Panel

面板上的时间范围通常是仪表板时间选择器中设置的时间范围,但可以通过使用面板特定时间覆盖来覆盖。

Query Editor

查询编辑器:用来显示数据源,并根据数据源查询其包含的指标。

将鼠标放在面板的Panel Title位置,然后单击,就会显示出查询编辑,点击 Edit,就显示出查询编辑器了。

Grafana 允许您在查询编辑器中按照它们所在的行来引用查询。如果您向图形添加第二个查询,则可以通过键入#A来引用第一个查询。这提供了一种简单而方便的方法来构建复合查询。

Templating

模板允许更多的交互式和动态的仪表板。可以让你轻松的批量生成同一类型的查询,而不用一个个添加这些 Panel

可以根据需要自定义变量参数作为查询查询条件,这些变量参数可以是固定的,也可以是通过应用服务提供的数据,还可以是数据源动态查询的数据。

配置


# 配置文件路径
/etc/grafana/grafana.ini

默认的配置一般不用修改,可以直接使用。一般需要修改的地方有:

[database]

此处的数据源与前面提到的数据源不同,此处的数据源用来存储 Grafana 的用户、仪表板等 Grafnan 自身的信息。

默认用 sqlite3 数据源,一般也不用修改,也可以修改为 MySQL

[security]

默认的Grafana管理员用户名为admin,密码为admin,可以进行修改,管理员密码也可以在页面中修改。

admin_user = admin
admin_password = admin

[users]

# 是否允许新用户注册,默认为true,如果不想让人随意注册,可以关闭
allow_sign_up = false

# 是否允许用户自己创建组织,默认为true,为了便于管理,组织统一由管理员创建,不允许普通用户创建
allow_org_create = false

# 是否将新用户自动归属到主要的组织上(组织id=1)。当设置为false时,将自动为该新用户创建一个新的组织。
auto_assign_org = true 

# 新用户默认的角色
auto_assign_org_role = Viewer

还有其它很多设置,想了解的可以看Grafana Configuration

配置MySQL数据源


配置MySQL数据源之前,先在目前数据库上创建一个只读权限的用户,用来读取展示数据。

CREATE USER 'grafanaReader'@'%' IDENTIFIED BY 'grafanaReader123';

GRANT SELECT ON *.* TO 'grafanaReader'@'%';

# 或者
#GRANT SELECT ON *.* to 'grafanaReader'@'%' identified by 'grafanaReader123' with grant option;

flush privileges;

Grafana数据源

将MySQL数据库中数据展示到面板上。

Grafana展示

Templating 使用


首先,可以创建一个自己的模板,在模板里,可以把动态的查询条件设置为参数,以便在下面所有的查询编辑器中使用。

下图为服务器监控的模板样例。

Grafana模板

虽然新版本支持了 MySQL 作为目标数据源,但是在模板参数的查询表达式上,还不支持,这点比较郁闷。以下为官方说明。

Grafana支持的数据源

下面是引用变量的截图。

设置变量。

Grafana设置变量

引用变量。

Grafana引用变量

详细使用可以看 Templating 文档。

导入Templating

对于比较通用的数据,例如:CPU利用率、内存使用情况、网络开销、磁盘空间等。一般都有成熟的模板,可以直接导入使用,大大减少了自己设计的时间。

Dashboards 中可以搜索到许多开发者提供的模板,直接拿来使用。我找了一个服务器监控的 Dynamic Dashboard

使用很简单,下载模板的 JSON 文件,然后在自己的 Grafana 系统导入即可。点击下图中的标记处可以看到导入按钮。

Grafana引用变量

数据采集

这里服务器性能数据采集用到了 Telegraf,当然,也可以使用 ZabbixTelegraf 的安装使用见Telegraf使用

插件


插件类型有:PanelData SourceApp。可以在Grafana插件中查找相应插件。

我们以想增加一个饼状图插件为例。

# 在 Grafana 服务器上执行
grafana-cli plugins install grafana-piechart-panel

# 重启 Grafana 服务
service grafana restart

这样,在添加 Panel 时,图形选项中就多了一个 Pie Chart

注意:

  • 目前的插件,并不支持MySQL数据源,希望这些插件能及时更新一下。

报警


从 4.0 版本开始支持了 Alert 功能。这使得利用 grafana 作为监控面板更为完整,因为只有 Alert 功能才能称得上监控。

首先,需要在配置文件打开警告功能。

[alerting]
    execute_alerts = true

目前的警告支持以下几种类型:

  • Email
  • Slack
  • PagerDuty
  • Webhook
  • HipChat
  • VictorOps
  • Sensu
  • OpsGenie
  • Threema
  • Pushover
  • Telegram
  • LINE

我们选择常用的 Email 方式。需要在配置文件中配置 smtp 信息。

[smtp]
    enabled = true
    host = smtp.126.com:25
    user = xxxxxx
    password = xxxxx

    skip_verify = true
    from_address = xxxxxx@126.com

然后,我们在 Grafana 界面配置 Notification channels

Notification channels

配置后,进行测试,成功的话,会收到一封邮件。

Notification channels

最后,在仪表板的面板上就可以根据需要添加报警功能。

Notification channels

如果使用的是 Templating,添加 Alert 时,会提示以下错误。

Template variables are not supported in alert queries

意思就是,目前不支持在有变量的 Template 中添加 alert。看到这,心中一群草泥马飘过~~


参考: