安装

首先,需要准备 grafana 的 repo 源,手动添加 /etc/yum.repos.d/grafana.repo文件:

[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

然后就可以用 yum 安装 grafana 了:

yum makecache
yum -y install grafana

启动

service grafana-server start

服务启动后 grafana 默认监听在 3000 端口 ,可以通过 http://localhost:3000 访问 grafana 的 ui 界面,默认登录账号密码为 admin/admin ,第一次登录需要我们重置密码。

prometheus数据接入grafana prometheus没有数据_bc

安装alert manager DataSource:

grafana-cli plugins install camptocamp-prometheus-alertmanager-datasource
service grafana-server restart

mac下安装grafana

上面介绍的是centos安装grafana的步骤,mac安装启动比较简单,具体如下:

brew install grafana
// start
brew services start grafana
// stop
brew services stop grafana

添加datasource

为了展示prometheus的数据,首先添加prometheus的数据源:点击设置里面的data source选项

prometheus数据接入grafana prometheus没有数据_prometheus_02


点击add data source按钮

prometheus数据接入grafana prometheus没有数据_数据源_03

选择第一个的prometheus

prometheus数据接入grafana prometheus没有数据_bc_04

配置Prometheus的url(我都在一个机器上启动的),然后点击save & test测试是否正确。

prometheus数据接入grafana prometheus没有数据_prometheus_05


prometheus数据接入grafana prometheus没有数据_数据源_06


然后添加alert manager的DataSource,步骤相同,端口号为9093

注意,需要配置Severity levels,否则severity不会显示任何信息。

prometheus数据接入grafana prometheus没有数据_数据源_07

Dashboard模板

为了更好的展示从prometheus获得的信息,我们使用grafana的网络模板,id为10280,具体过程如下:在添加的菜单里面选择import,输入id 10280,点击load按钮。

prometheus数据接入grafana prometheus没有数据_数据源_08


prometheus数据接入grafana prometheus没有数据_prometheus_09

然后选择folder和数据源(之前配置的prometheus数据源),点击import即可。(我这里因为已经导入过了,所以import显示了overwrite)

prometheus数据接入grafana prometheus没有数据_prometheus_10

模板的样式如下:

prometheus数据接入grafana prometheus没有数据_数据源_11


如果你使用的内容和模板不一样,可以自己修改一下(选择想要修改的面板,点击名字,选择edit即可)

比如我们项目使用的是jetty而不是tomcat,我自己修改了一下tomcat的项,导出的json文件太大了,这里就不放了。

然后,导入alert manager的模板,id为8010.

prometheus数据接入grafana prometheus没有数据_spring_12


注意,这里提到的模板都是我在grafana的网上模板库里面找的,觉得还不错的。

自己创建模板

我还打算要一个显示Prometheus的各个instance状态的模板,没有找到,于是就自己做了一个简单的。

点击+ =》 dashboard创建新的模板

prometheus数据接入grafana prometheus没有数据_spring_13

首先设置变量instance:点击右上角的Dashboard Settings,进入设置界面

prometheus数据接入grafana prometheus没有数据_bc_14

点击左边的variables,添加一个新的变量,具体设置如下:注意勾选Include All Option,另外Query的配置很重要,表达式label_values(up, instance)

prometheus数据接入grafana prometheus没有数据_spring_15

设置好了变量之后,点击右上角按钮

prometheus数据接入grafana prometheus没有数据_prometheus_16

添加新的panel:如果要添加一个row的话,再点击Convert to row,

prometheus数据接入grafana prometheus没有数据_spring_17

然后点击row旁边的设置按钮,改名字

prometheus数据接入grafana prometheus没有数据_grafana_18


如果添加pannel的话,点击Add Query按钮,

prometheus数据接入grafana prometheus没有数据_prometheus_19


进入创建panel的界面。

左下角有一行这样的图标,分别是设置query、选择图表类型、通用设置(名字之类的)和alert的配置。

prometheus数据接入grafana prometheus没有数据_prometheus_20


首先设置Query,up{instance=~"^$instance"}表示指定的instance的数量,0表示down,1表示up,需要注意的是,由于变量支持all选项,query里面直接使用instance="$instance"的引用方式不可以,需要是instance=~"^$instance"才可以正确获得数据。

prometheus数据接入grafana prometheus没有数据_bc_21


然后,点击左侧第二个图标,选择图片类型为Singlestat,具体的设置如下:

prometheus数据接入grafana prometheus没有数据_数据源_22


prometheus数据接入grafana prometheus没有数据_bc_23

接下来设置通用信息,也就是给表起个名字,这里我们叫$instance,也就是instance变量的值,下面的repeating, 设置为按变量instance重复,重复方向为垂直。

prometheus数据接入grafana prometheus没有数据_bc_24


然后,panel就加好了,将加好的panel拖拽到之前的row里面,左上角的instance选择all即可显示所有的instance的状态了。

prometheus数据接入grafana prometheus没有数据_数据源_25


具体的效果如下:我们一共有两个instance,一个up,一个down。

prometheus数据接入grafana prometheus没有数据_prometheus_26


保存之后,点击创建好的dashboard的右上角的share dashboard,选择export,save to file,即可导出模板json文件。

prometheus数据接入grafana prometheus没有数据_spring_27


prometheus数据接入grafana prometheus没有数据_grafana_28

Grafana的Alert配置

之前我们使用了Prometheus的alert manager配置alert,grafana也支持alert配置,不过没有Prometheus的alert manager功能强大,但是简单功能还是可以的。

首先为了发生告警的时候可以通知我们,需要配置Notification channels。

点击左边的菜单Alerting中的Notification channels添加Notification方式,点击new channel。

prometheus数据接入grafana prometheus没有数据_prometheus_29


prometheus数据接入grafana prometheus没有数据_bc_30


进入下面的界面,选择type为webhook,即给我们预先定义的api发消息,输入name和url,点击send test测试,收到了的话,点击save。

prometheus数据接入grafana prometheus没有数据_bc_31


然后,我们可以开始配置具体的alert了。grafana的alert的添加需要去具体的表里面添加,首先选定一个要监听的表,点击edit进入编辑界面。

例如,之前导入模板的cpu usage界面。

prometheus数据接入grafana prometheus没有数据_数据源_32

这里有个问题,由于alert不支持变量,之前的模板里面的属性都是使用变量的,我们需要添加新的属性system_cpu_usage(prometheus中的一个metric),点击C小面板右上角的眼睛图标将他设为disabled,即不显示,这个属性的名称就是C,下面的alert将用到。

prometheus数据接入grafana prometheus没有数据_bc_33


左侧的铃铛就是alert界面,点击alert

prometheus数据接入grafana prometheus没有数据_prometheus_20


首先给rule起个名字,设置evaluate every 和for的值,这里的意思每隔20s计算一次,如果条件满足持续60s就发送alert

下面的conditions就是alert的条件,解释一下就是当属性C从5min之前到现在的平均值大于0.5的话,就发送alert

然后配置Notifications,选择之前设置的Notification channel,设置message即可

prometheus数据接入grafana prometheus没有数据_spring_35


接口收到的信息如下:

/*Alerting状态的信息*/
{"evalMatches":[{"value":0.1294733207696565,"metric":"system_cpu_usage{application=\"my-web-local\", hikaricp=\"my-dev-jdbc-cp\", instance=\"127.0.0.1:28080\", job=\"spring\"}","tags":{"__name__":"system_cpu_usage","application":"my-web-local","hikaricp":"my-dev-jdbc-cp","instance":"127.0.0.1:28080","job":"spring"}}],"message":"CPU Usage is invalid.","ruleId":1,"ruleName":"CPU Usage alert","ruleUrl":"http://localhost:3000/d/spring_boot_21/spring-boot-2-1-statistics?fullscreen\u0026edit\u0026tab=alert\u0026panelId=95\u0026orgId=1","state":"alerting","title":"[Alerting] CPU Usage alert"}
 
 
/*No data状态的信息*/
{"evalMatches":[],"message":"CPU Usage is invalid.","ruleId":1,"ruleName":"CPU Usage alert","ruleUrl":"http://localhost:3000/d/spring_boot_21/spring-boot-2-1-statistics?fullscreen\u0026edit\u0026tab=alert\u0026panelId=95\u0026orgId=1","state":"alerting","title":"[Alerting] CPU Usage alert"}