安装
首先,需要准备 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 ,第一次登录需要我们重置密码。
安装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选项
点击add data source按钮
选择第一个的prometheus
配置Prometheus的url(我都在一个机器上启动的),然后点击save & test测试是否正确。
然后添加alert manager的DataSource,步骤相同,端口号为9093
注意,需要配置Severity levels,否则severity不会显示任何信息。
Dashboard模板
为了更好的展示从prometheus获得的信息,我们使用grafana的网络模板,id为10280,具体过程如下:在添加的菜单里面选择import,输入id 10280,点击load按钮。
然后选择folder和数据源(之前配置的prometheus数据源),点击import即可。(我这里因为已经导入过了,所以import显示了overwrite)
模板的样式如下:
如果你使用的内容和模板不一样,可以自己修改一下(选择想要修改的面板,点击名字,选择edit即可)
比如我们项目使用的是jetty而不是tomcat,我自己修改了一下tomcat的项,导出的json文件太大了,这里就不放了。
然后,导入alert manager的模板,id为8010.
注意,这里提到的模板都是我在grafana的网上模板库里面找的,觉得还不错的。
自己创建模板
我还打算要一个显示Prometheus的各个instance状态的模板,没有找到,于是就自己做了一个简单的。
点击+ =》 dashboard创建新的模板
首先设置变量instance:点击右上角的Dashboard Settings,进入设置界面
点击左边的variables,添加一个新的变量,具体设置如下:注意勾选Include All Option,另外Query的配置很重要,表达式label_values(up, instance)
设置好了变量之后,点击右上角按钮
添加新的panel:如果要添加一个row的话,再点击Convert to row,
然后点击row旁边的设置按钮,改名字
如果添加pannel的话,点击Add Query按钮,
进入创建panel的界面。
左下角有一行这样的图标,分别是设置query、选择图表类型、通用设置(名字之类的)和alert的配置。
首先设置Query,up{instance=~"^$instance"}
表示指定的instance的数量,0表示down,1表示up,需要注意的是,由于变量支持all选项,query里面直接使用instance="$instance"
的引用方式不可以,需要是instance=~"^$instance"
才可以正确获得数据。
然后,点击左侧第二个图标,选择图片类型为Singlestat,具体的设置如下:
接下来设置通用信息,也就是给表起个名字,这里我们叫$instance,也就是instance变量的值,下面的repeating, 设置为按变量instance重复,重复方向为垂直。
然后,panel就加好了,将加好的panel拖拽到之前的row里面,左上角的instance选择all即可显示所有的instance的状态了。
具体的效果如下:我们一共有两个instance,一个up,一个down。
保存之后,点击创建好的dashboard的右上角的share dashboard,选择export,save to file,即可导出模板json文件。
Grafana的Alert配置
之前我们使用了Prometheus的alert manager配置alert,grafana也支持alert配置,不过没有Prometheus的alert manager功能强大,但是简单功能还是可以的。
首先为了发生告警的时候可以通知我们,需要配置Notification channels。
点击左边的菜单Alerting中的Notification channels添加Notification方式,点击new channel。
进入下面的界面,选择type为webhook,即给我们预先定义的api发消息,输入name和url,点击send test测试,收到了的话,点击save。
然后,我们可以开始配置具体的alert了。grafana的alert的添加需要去具体的表里面添加,首先选定一个要监听的表,点击edit进入编辑界面。
例如,之前导入模板的cpu usage界面。
这里有个问题,由于alert不支持变量,之前的模板里面的属性都是使用变量的,我们需要添加新的属性system_cpu_usage(prometheus中的一个metric),点击C小面板右上角的眼睛图标将他设为disabled,即不显示,这个属性的名称就是C,下面的alert将用到。
左侧的铃铛就是alert界面,点击alert
首先给rule起个名字,设置evaluate every 和for的值,这里的意思每隔20s计算一次,如果条件满足持续60s就发送alert
下面的conditions就是alert的条件,解释一下就是当属性C从5min之前到现在的平均值大于0.5的话,就发送alert
然后配置Notifications,选择之前设置的Notification channel,设置message即可
接口收到的信息如下:
/*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"}