安装和使用 Grafana (以 Promethus 为数据源)

安装 grafana,并以 prometheus 为数据源,监控 LVS/Keepalived 集群

安装和使用 Grafana (以 Promethus 为数据源)

安装 Grafana 并配置 promethus 数据源

  • yum 安装
    下载之前先查一下版本:https://github.com/grafana/grafana/releases

    export VERSION=5.3.2
    yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-${VERSION}.x86_64.rpm 
    
    systemctl start grafana-server
    systemctl enable grafana-server
    netstat -ntlp | grep 3000
    
  • 配置数据源

    http://172.xx.xx.xxx:3000

    Configuration —> Data Source 里面,点击 Add data source 添加一个 Promethus 的数据源:
    image
    我们的 promethus 没有加验证,因此不需要设置 Auth 选项。

使用 Grafana 和 promethus

  • 为 dashboard 新增 Variables。参考:Variables

    每个新添加的 dashboard 都可以自定义变量(Variables),以便在不同的 panel 中引用。对每个新增的 Variable ,处理 Selection Options 时需要注意,当勾选Variables 下面的 Multi-value 或/和 Include All option 时,Grafana 生成的查询链接会将查询请求部分当成正则表达式来处理,所有的的特殊字符会被转义(escaped),如果我们的 Query 表达式不是使用的正则通配符匹配,则会出现转义而引起错误,最后查询不到结果。下面是截图说明:

    image
    image

    每个 Variable 默认都会以 Dropdown list 方式展现在 Panel 上方,除非我们在定义时选择了 Hide :Variable
    image

  • Aggregation operators

    https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators

  • 如何 label_join() 函数
    我们需要统计 LVS 每一个 Virtual Server 的连接情况,Virtual Server 的格式为 172.17.xx.xx:80, 172.17.xx.xx:443 等等,但 promethus 的 node_exporter 和 snmp_exporter 都没有提供这样的 metric 或 label,因此我们需要自定义一个新的 label,暂且记为 vip_port。 怎么实现呢,好在 promethus 提供了一个 label_join() 函数,我们可以根据某个 metric 内的 label 来定义新的 label,示例如下:

    label_join(node_ipvs_backend_connections_active, "vip_port",":", "local_address", "local_port")
    

    1.) 第一个参数为现有的 实时矢量,即内置的 metric 指标;很多函数第一个参都默认都是这个实时参数 v,详见v
    2.) 第二个参数为 目标标签,即我们要生成的新的 label 的名字,它是一个 string,已知不能包含中杠;
    3.) 第三个参数为 分隔符或者说连接符,比如:- 等, 它是一个 string;
    4.) 第四/五/六个等等后续参数为 源标签,即前面 metric 中的标签,它是一个 string;
    5.) 以上所有参数以逗号(comma)分隔。

    通过上面的查询表达式我们可以得到如下结果:
    image

    参数详解见 label_join()
    label_join() 的介绍主要为 Recording rules 的使用作铺垫。

    Recording rules 详细介绍

参考文档