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)