Grafana安装
yum 方式安装
设置安装源
vim /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://packages.grafana.com/enterprise/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 clean all && yum makecache
yum -y install grafana-enterprise
下载RPM包进行安装。
https://grafana.com/grafana/download
wget https://dl.grafana.com/oss/release/grafana-7.3.6-1.x86_64.rpm
sudo yum install grafana-7.3.6-1.x86_64.rpm
启动服务,web访问
systemctl enable grafana-server
systemctl start grafana-server
http:IP:3000
初次使用登录账号密码都是admin
登录后会提示更改密码
Grafana基本概念
-
Data Source:grafana确切的说是一个前端展示工具,将数据以非常美观直接的图形展示出来。那么这些数据必须有一个来源吧,grafana获取数据的地方就称为Data Source。官方文档上说grafana支持以下数据源:Graphite, InfluxDB, OpenTSDB, Prometheus, Elasticsearch, CloudWatch。在Grafana 3.0+之后,grafana不仅仅支持上面说的这些数据源,还支持一些其它的数据源,这些就称为Grafana Plugins,grafana支持的插件非常多(grafana支持的插件传送门)。
-
DashBoard:仪表盘,就像汽车仪表盘一样可以展示很多信息,包括车速,水箱温度等。Grafana的DashBoard就是以各种图形的方式来展示从Datasource拿到的数据。
-
Row:DashBoard的基本组成单元,一个DashBoard可以包含很多个row。一个row可以展示一种信息或者多种信息的组合,比如系统内存使用率,CPU五分钟及十分钟平均负载等。所以在一个DashBoard上可以集中展示很多内容。
-
Panel:面板,实际上就是row展示信息的方式,支持表格(table),列表(alert list),热图(Heatmap)等多种方式,具体可以去官网上查阅。
-
Query Editor:用来指定获取哪一部分数据。类似于sql查询语句,比如你要在某个row里面展示test这张表的数据,那么Query Editor里面就可以写成select *from test。这只是一种比方,实际上每个DataSource获取数据的方式都不一样,所以写法也不一样,比如像zabbix,数据是以指定某个监控项的方式来获取的。
-
Organization:org是一个很大的概念,每个用户可以拥有多个org,grafana有一个默认的main org。用户登录后可以在不同的org之间切换,前提是该用户拥有多个org。不同的org之间完全不一样,包括datasource,dashboard等都不一样。创建一个org就相当于开了一个全新的视图,所有的datasource,dashboard等都要再重新开始创建。
-
User:这个概念应该很简单,不用多说。Grafana里面用户有三种角色admin,editor,viewer。admin权限最高,可以执行任何操作,包括创建用户,新增Datasource,创建DashBoard。editor角色不可以创建用户,不可以新增Datasource,可以创建DashBoard。viewer角色仅可以查看DashBoard。在2.1版本及之后新增了一种角色read only editor(只读编辑模式),这种模式允许用户修改DashBoard,但是不允许保存。每个user可以拥有多个organization。
grafana数据存储位置
[paths]
data = /var/lib/grafana
logs = /var/log/kolla/grafana
plugins = /var/lib/grafana/plugins
provisioning = /etc/grafana/provisioning
Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
grafana数据存储是通过 sql 数据库存储的。如果未设置 mysql的database,会本地创建 sqlite3 db 文件保存。
使用共享的dashboard查看linux系统状态。
https://grafana.com/grafana/dashboards/554
使用influxdb数据库, collectd工具收集数据。
collectd 设置
LoadPlugin logfile
<Plugin logfile>
LogLevel info
File "/var/log/collectd.log"
Timestamp true
PrintSeverity false
</Plugin>
LoadPlugin cpu
LoadPlugin df
LoadPlugin fhcount
LoadPlugin interface
LoadPlugin load
LoadPlugin memory
LoadPlugin network
<Plugin interface>
Interface "ens33"
</Plugin>
<Plugin network>
Server "192.168.199.80" "25826"
</Plugin>
systemctl restart collectd
influxdb设置
> CREATE USER "admin" WITH PASSWORD 'password' WITH ALL PRIVILEGES
[http]
enabled = true
bind-address = ":8086"
auth-enabled = true
log-enabled = true
write-tracing = false
pprof-enabled = false
https-enabled = false
https-certificate = "/etc/ssl/influxdb.pem"
[[collectd]]
enabled = true
bind-address = ":25826"
systemctl restart influxdb
curl -G "http://localhost:8086/query?u=admin&p=password&q=SHOW+DATABASES"
[root@server ~]# curl -G "http://localhost:8086/query?u=admin&p=password&q=SHOW+DATABASES"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"],["collectd"]]}]}]}
grafana设置
1.设置数据库
选择influxdb数据库,设置name为LinuxStatus(这个随意)以及influxdb的连接设置(重点是设置这个)
http URL 设置 http://localhost:8086
因为将influxdb和grafana安装在同一个主机,如果不在同一个主机,将localhost替换为influxdb所在主机IP即可
InfluxDB Details
Database collectd (和influxdb设置的collectd段有关,默认库名collectd)
user influxdb账户 上面influxdb设置的是admin
password influxdb密码 上面influxdb设置的是password
其它的选择默认或者不填即可
点击save & test。设置成功失败都会有提示。
导入共享dashboard。
选择导入ID为554的模板。
选择数据库
点击 Import后即可看到结果
测试自己创建Panel面板展示网络流量数据。
influxdb查看收集到的数据
> select * from interface_tx limit 10
name: interface_tx
time host instance type value
---- ---- -------- ---- -----
1609747571243079714 client1 ens33 if_packets 12863
1609747571243080971 client1 ens33 if_octets 1157757
1609747571243081736 client1 ens33 if_errors 0
1609747571243082367 client1 ens33 if_dropped 0
1609747581243778029 client1 ens33 if_packets 12866
1609747581243780357 client1 ens33 if_octets 1160562
1609747581243781674 client1 ens33 if_errors 0
1609747581243782779 client1 ens33 if_dropped 0
1609747591243370915 client1 ens33 if_packets 12868
1609747591243372004 client1 ens33 if_octets 1161982
> select * from interface_rx limit 10
name: interface_rx
time host instance type value
---- ---- -------- ---- -----
1609747571243079714 client1 ens33 if_packets 18518
1609747571243080971 client1 ens33 if_octets 22636122
1609747571243081736 client1 ens33 if_errors 0
1609747571243082367 client1 ens33 if_dropped 0
1609747581243778029 client1 ens33 if_packets 18526
1609747581243780357 client1 ens33 if_octets 22637368
1609747581243781674 client1 ens33 if_errors 0
1609747581243782779 client1 ens33 if_dropped 0
1609747591243370915 client1 ens33 if_packets 18540
1609747591243372004 client1 ens33 if_octets 22641670
创建个人的dashboard
点击左侧 + 选择dashboard
初始什么都没有。可以可以模仿导入的模板的进行测试练习设置。
1.设置变量。
变量是展示图表中可供选择的不同值。例如不同主机,查询同一状态,便可将查询语句中主机设置为变量。变量可在展示过程中进行选择。
show tag values with key=host;
点击上方的设置图标 dashboard setting。
设置变量
Name host
Data source LinuxStatus,
Query show tag values with key=host
设置的变量用来定义另一个变量,查询可以是’$变量名’
如
host是刚才定义的变量名。
show tag values from interface_rx,interface_tx with key=instance where host='$host'
2.创建panel,设置查询语句。
点击 Add new panel。创建panel,进行设置。
模板dashboard设置如下
SELECT non_negative_derivative(mean("value"), 1s) *8 FROM "interface_rx" WHERE ("host" =~ /^$host$/ AND "type" = 'if_octets') AND $timeFilter GROUP BY time($interval) fill(null)
下方是查询influxdb数据相关,具体使用需要对influxdb数据库有一定了解。。。右方是坐标轴显示相关。