简介
Grafana 是一个可视化工具,简单点说就是用来展示数据的,不能解决监控问题,需要配合监控工具一起使用。
Grafana 官方是这么介绍 Grafana 的:grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。
安装Grafana
下载
用户可以根据当前的操作系统,到 Grafana 官网下载安装包,并执行安装。下载地址如下:grafana官方下载地址
ubuntu安装grafana
安装脚本如下:
sudo apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_9.5.14_amd64.deb
sudo dpkg -i grafana-enterprise_9.5.14_amd64.deb
执行命令:
#查看服务状态
systemctl status grafana-server.service
#设置服务开机自启动
systemctl enable grafana-server.service
#启动服务
systemctl start grafana-server.service
选择配置选项
Grafana 后端在其配置文件中定义了许多配置选项(通常位于 Linux 系统上的/etc/grafana/grafana.ini
),有兴趣可以查看官方文档。
在此配置文件中,您可以更改默认管理员密码、http 端口、grafana 数据库(sqlite3、mysql、postgres)、身份验证选项(google、github、ldap、auth proxy)以及许多其他选项。
启动 grafana 服务器http://ip:3000
。使用您的管理员用户(默认 admin/admin)登录。打开侧边菜单(单击顶部菜单中的 Grafana 图标),前往数据源并添加您的数据源。
Grafana设置中文
在默认情况下,Grafana使用英文作为其用户界面语言。对于非英语用户来说,这可能会造成一些不便。Grafana提供了设置中文的选项,下面就让我们来详细了解一下如何进行设置。从Grafana 6.3.0版本开始,官方正式支持中文语言设置。如下图:
也可以通过修改配置文件/etc/grafana/grafana.ini
:
#default_language = en-US
default_language = zh-Hans
两种方法汉化的都不是很彻底,可能是我的设置有问题。
添加zabbix数据源
首先在插件中心安装zabbix插件
配置zabbix数据源,添加url
、username
、password
,其他的默认就行,保存测试。
根据自己的需求添加图形
更多设置需要自己去发现
配置Grafana
图形名称显示
升级到11.0.0版本后发现图形名称不显示Host:Item
这种格式了,通过查看官方文档,发现可以用表达式来显示。如下图:${__field.labels.host}:${__field.labels.item}
升级Grafana
版本:从9.5.14
升级到11.0.0
备份Grafana相关数据
先关闭Grafana服务:systemctl stop grafana-server.service
。
备份grafana数据库文件grafana.db(一般情况下路径:/var/lib/grafana)
mv /var/lib/grafana/grafana.db /var/lib/grafana/grafana.db.bak
备份插件目录plugins(一般情况下路径:/var/lib/grafana/plugins)
mv /var/lib/grafana/plugins /var/lib/grafana/plugins.bak
备份Grafana配置文件(一般情况下路径:/etc/grafana/grafana.ini)
mv /etc/grafana/grafana.ini /etc/grafana/grafana.ini.bak
下载安装新版本Grafana
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_11.0.0_amd64.deb
sudo dpkg -i grafana-enterprise_11.0.0_amd64.deb
和安装步骤一样,会进行覆盖安装,启动Grafana服务(软件会自动生成上面备份的相关目录)。
恢复备份数据
先关闭Grafana服务:systemctl stop grafana-server.service
。
再把上面备份的文件覆盖掉新生成的文件和目录,保持原有属性。
最后启动Grafana服务:systemctl start grafana-server.service
,恢复完成。
Grafana数据迁移
服务迁移的操作和Grafana升级差不多,把相关数据文件备份,然后进行恢复即可,需要注意的是备份文件进行移动后,文件所属的用户和用户组会发生变化,导致权限问题而无法启动服务。
# 修改文件夹所属用户和用户组
chown grafana:grafana grafana.db
相关文件夹权限参考如下图:
查看 Grafana 的日志文件,通常可以在vim /var/log/grafana/grafana.log。
数据存储从SQLite迁移到mysql
默认的 Grafana 数据库是 SQLite,就单独的一个db文件:/var/lib/grafana/grafana.db
,但随着数据量越来越多,稳定性让人担忧,所以迁移到mysql。
导出SQLite历史数据
systemctl stop grafana-server.service
# 安装SQLite数据库,不然下面的脚本无法执行
apt-get install sqlite3
使用以下脚本将数据导出:vim export_sqlite.sh
#!/bin/bash
DB=$1
TABLES=$(sqlite3 $DB .tables | sed -r 's/(\S+)\s+(\S)/\1\n\2/g' | grep -v migration_log)
for t in $TABLES; do
echo "TRUNCATE TABLE $t;"
done
for t in $TABLES; do
echo -e ".mode insert $t\nselect * from $t;"
done | sqlite3 $DB
执行 ./export_sqlite.sh grafana.db > grafana.sql
。
grafana.db为grafana本地存储的db文件,执行完成之后即可在当前目录下生成mysql 文件。可以理解为格式转换。
mysql新建库及用户
create database grafana;
# 下面的新建用户可以不用,直接使用root用户是一样的
CREATE USER 'grafana'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON `grafana`.* to 'grafana'@'localhost' with grant option;
flush privileges;
修改grafana配置文件
vim /etc/grafana/grafana.ini
修改完成之后重启grafana, 这样grafana会连上mysql数据库, 自动生成所有的表。
systemctl start grafana-server.service
当看到日志显示数据库migration已经做完了之后,就可以再次停用grafana,然后把数据导进去
systemctl stop grafana-server.service
导入数据
mysql -u root -p grafana < grafana.sql
导完之后再次启动grafana
systemctl start grafana-server.service
验证
当grafana启动之后,登录grafana,所有的数据都在,迁移成功。
数据库问题
我先发现用下面这种方法过几个月这个配置就重置了,需要重新配置,好在是频率不是很高,希望有一劳永逸的方法
Grafana添加zabbix数据源失败,可能原因是当前官方版本 4.2.10 在与 Zabbix 通信并请求 “user.login” api 调用时仍然使用 “user” 而不是 “username”。
解决方法:修改文件vim /usr/share/zabbix/include/classes/api/clients/CLocalApiClient.php
在128行添加一个判断
--- /usr/share/zabbix/include/classes/api/clients/CLocalApiClient.php.orig 2023-03-08 16:23:26.555055621 +0100
+++ /usr/share/zabbix/include/classes/api/clients/CLocalApiClient.php 2023-03-08 16:22:46.378217849 +0100
@@ -128,6 +128,13 @@
$newTransaction = true;
}
+ // UGLY GRAFANA DATASOURCE HACK
+ // rename "user" param to "username" when present
+ if ($params['user'] ?? null) {
+ $params['username'] = $params['user'];
+ unset($params['user']);
+ }
+
$result = call_user_func_array([$this->serviceFactory->getObject($api), $method], [$params]);
// if the method was called successfully - commit the transaction
重启服务:systemctl restart grafana-server.service
。
相关链接
Grafana官方文档:https://grafana.com/docs/grafana/latest/
Grafana添加zabbix数据源失败:https://github.com/grafana/grafana-zabbix/issues/1583#issuecomment-1460335481
评论