Grafana指标展示仪表盘

Grafana本身已经足够成熟,也有了广泛的应用。

聊聊监控系统独立出Grafana。

快速使用

启动

systemctl daemon-reload
# 启动服务
systemctl start grafana-server
# 开机启动
systemctl enable grafana-server

访问地址: http://127.0.0.1:3000/ (默认用户名/密码: admin/admin)

配置

默认配置文件: /etc/grafana/grafana.ini

Docker方式部署

docker pull grafana/grafana
docker run -d -p 3000:3000 grafana/grafana

升级

grafana的跨大版本升级基本也没有问题。

需要先备份数据库,默认在 /var/lib/grafana/grafana.db

sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_9.1.0_amd64.deb
sudo dpkg -i grafana_9.1.0_amd64.deb
#sudo grafana-cli plugins update-all
sudo service grafana-server restart

高级应用

变量/Variables

  • 查询中使用的变量支持两种写法:$ 和 [[varname]]
  • 变量可以在以下字段使用: titles, descriptions, text panels, queries.

Prometheus 集成

  • Step: range查询的步长,单位默认为秒,例如5s, 1m, 3h, 1d, 1y

变量

常见用法:

  • label_names()
  • label_values(label) : label_values(cpu),不支持查询
  • label_values(metric, label)
  • metrics(metric_regex) : metrics(cpu)
  • query_result(query)
# 定义变量instance
# Query Options
# Refresh 选择 On Time Range Change
# Query填写
label_values(go_threads, instance)

# Selection Options 选择 Multi-value 和 Include All option

# node_exporter
# 定义job
label_values(node_boot_time_seconds,job)

# 定义host
label_values(node_time_seconds{job="$job"},instance)
# 基于时间范围
query_result(count by (path)(count_over_time(loads_http_request_time_sum[$__range])))
# 或基于top N
query_result(topk(10, sum(rate(loads_http_request_time_sum[$__range])) by (path)))


# 正则表达式
/"([^"]+)"/

内置变量

$__range
$__range_s 
$__range_ms

$__rate_interval

Dashboard

  • Percona的数据库Dashboards
  • grafanalib: Python library for building Grafana dashboards
  • Hosts Overview: 2864
  • JVM Metrics - Jolokia 2: 8991
  • Apache JMeter Dashboard Using-Core-InfluxDBBackendListenerClient: 5496
  • Telegraf: system dashboard: 928

prometheus集成

  • Node Exporter Full: 12486 (基于node_exporter) - 超级详细的dashboard
  • Linux Hosts Metrics: 10180 (基于node_exporter)
  • Locust for Prometheus: 12081
  • Go Runtime : 6671
  • JVM dashboard: 8563 (基于jmx_exporter)
  • PostgreSQL: 9628 或 6742 (基于postgres_exporter)

扩展阅读