目录
3.2 安装zabbix相关的Grafana Dashboards
3.2.3 安装 grafana的Zabbix-MySQLdashboard
3.2.4 配置 Zabbix-MySQL dashboard
四、在Grafana 自定义 Zabbix Dashboards
我写一篇《centos8安装zabbix5.0(手把手 注解版 )》有人建议我再写一篇grafana接入zabbix5.0文章,我看有些公司招聘也有这个要求。
我就写一下,Grafana默认没有集成zabbix监控,需要安装zabbix插件才行。
Grafana只是一个美化的前端,没有数据库还有监控抓取之类,只是展示的作用。
一、zabbix5.0安装
具体见《centos8安装zabbix5.0(手把手 注解版 )》,为了有效果些,我是基于上一篇《zabbix5.0 监控mysql》的基础上再添加一个Template OS Linux by Zabbix agent 模板
二、Grafana图形展示安装
2.1 Grafana基本概念
我们在操作Grafana的时候首先要简单了解一下它的基本概念:
Data Source:数据源一般多为时序数据。
Organization:支持多组织部署,组织可以理解为不同的部门,不同的需求方等。
User:用户名就是Grafana里的账户,一个用户可以属于一个或者多个组织,而且可以根据角色分配不同的权限。
Row:Row是一组Panels,是Dashboard的逻辑划分。一般来说,Rows都是12个单位的宽度,可以自适应大小屏幕。
Panel:Grafana里的基本图像模块,可以拖拽来调节大小和位置,有Graph,Singlestat,Dashlist,Table和Text几种类型。
Query Editor:可以编辑数据源的不同指标。
Dashboard:这个就很好理解了,通常意义上的仪表盘。可以使用Templating和Annotations。
Grafana还有很多高级的玩法,比如报警,模板,API等,入门篇里就不展开了。快来开始你的第一个炫酷的dashboard吧!
2.2 Grafana安装(yum)
2.2.1 Grafana yum安装及启动服务
打开Grafana官方说明文档,因为我的是centos,所以选择 Install on Linux
在进入的界面中我选择centos,这里有企业版本和oss版本,企业版收费的,我这里选择oss,按提示添加Grafana oss源
#添加yum源
cat>/etc/yum.repos.d/grafana.repo<<EOF
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/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
EOF
cat /etc/yum.repos.d/grafana.repo
安装,可以使用 yum install grafana 直接安装了,发现太慢了,所以手工下载rpm文件安装,根据官网提示打开下载页 Grafana download page
然后找到centos,按提示执行如下命令:
#Red Hat, CentOS, RHEL, and Fedora(64Bit)
#SHA256: ed51839020e0c1d8dffcf550c7cedc20393b983551fd7756ce18a6078fe2d75a
#注意:yum安装的时候一定要先安装yum源,否则无法解决依赖关系
#官方太慢了,我这里选择华为云镜像安装,所发注解掉
#wget https://dl.grafana.com/oss/release/grafana-7.1.5-1.x86_64.rpm
mkdir -pv /disk1/tools/
cd /disk1/tools/
wget https://mirrors.huaweicloud.com/grafana/7.1.5/grafana-7.1.5-1.x86_64.rpm
sudo yum install grafana-7.1.5-1.x86_64.rpm -y
PS: yum安装的时候一定要先安装yum源,否则无法解决依赖关系
安装完之后可以启动 Grafana
systemctl enable grafana-server
systemctl start grafana-server
systemctl status grafana-server
#发现默认是3000端口
netstat -alntp|grep -i listen|grep grafana
cd ~
2.2.2 web登录Grafana
Grafana默认的web登录端口号为3000,登录方式为ip:3000,用户名和密码均为admin,这是根据 Grafana Getting started 中的 Log in for the first time 知道 的:
- Open your web browser and go to http://localhost:3000/.
3000
is the default HTTP port that Grafana listens to if you haven’t configured a different port.- On the login page, type
admin
for the username and password.- Change your password.
我把密码修改为hua123
登录后界面,如下,是不是很酷:
上面图标中红色方框标记的是灰色的,表示没有配置,接下来我将配置zabbix。
三、Grafana配置zabbix
3.1 安装zabbix插件
默认情况Grafana没有内置zabbix,所以得先安装zabbix插件,安装zabbix插件也简单,直接打开Grafana plugins页面即可
第1个就是zabbix了,点击进入:
点Installation 有安装说明
3.1.1 安装zabbix插件
#插件安装,因是国外的地址,下载会很慢
grafana-cli plugins install alexanderzobnin-zabbix-app -y
执行命令效果:
[root@vm82 ~]# grafana-cli plugins install alexanderzobnin-zabbix-app installing alexanderzobnin-zabbix-app @ 4.0.0 from: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/4.0.0/download into: /var/lib/grafana/plugins ✔ Installed alexanderzobnin-zabbix-app successfully Restart grafana after installing plugins . <service grafana-server restart> [root@vm82 ~]# systemctl restart grafana-server #按提示重启 [root@vm82 ~]# [root@vm82 ~]# ll /var/lib/grafana/plugins/alexanderzobnin-zabbix-app/ 总用量 41176 drwxr-xr-x 2 root root 63 8月 30 12:41 app_config_ctrl drwxr-xr-x 2 root root 140 8月 30 12:41 css drwxr-xr-x 2 root root 109 8月 30 12:41 dashboards drwxr-xr-x 4 root root 111 8月 30 12:41 datasource-zabbix drwxr-xr-x 2 root root 198 8月 30 12:41 img -rw-r--r-- 1 root root 1640 8月 30 12:41 module.js -rw-r--r-- 1 root root 5588 8月 30 12:41 module.js.map drwxr-xr-x 4 root root 90 8月 30 12:41 panel-triggers -rw-r--r-- 1 root root 1386 8月 30 12:41 plugin.json -rw-r--r-- 1 root root 4053 8月 30 12:41 README.md -rwxr-xr-x 1 root root 15016728 8月 30 12:41 zabbix-plugin_darwin_amd64 -rwxr-xr-x 1 root root 13750272 8月 30 12:41 zabbix-plugin_linux_amd64 -rwxr-xr-x 1 root root 13372416 8月 30 12:41 zabbix-plugin_windows_amd64.exe
PS:安装发现安装很慢,可以使用迅雷下载 download the .zip file 文件,操作如下:
#进入要上传的目录 cd /disk1/tools/ #把刚刚下载的zip文件 grafana-zabbix-4.0.0.zip 上传到此目录中并解压 unzip grafana-zabbix-4.0.0.zip #移到插件目录 /var/lib/grafana/plugins/ 中 mv alexanderzobnin-zabbix-app /var/lib/grafana/plugins/ #设置用户权限 chown grafana.grafana -R /var/lib/grafana/plugins/alexanderzobnin-zabbix-app #重启 systemctl restart grafana-server
3.1.2 开启zabbix插件
PS:上面红色Unsigned 意思是 Unsigned external plugin,即 未签名的外部插件,不用理它
发现最新版本4.0插件是安装成功了,但是在数据源中找不到zabbix,所以安装会低一级版本
一、卸载原版本的zabbix插件
先把插件禁止了
再删除原来的插件目录中的zabbix插件,然后重启grafana
systemctl restart grafana-server
二、重新下载旧版本的zabiix zip包
我再下载好的zip包 alexanderzobnin-grafana-zabbix-v3.12.4-1-g309146f.zip 上传到/disk1/tools中,执行如下命令解压
unzip alexanderzobnin-grafana-zabbix-v3.12.4-1-g309146f.zip mv alexanderzobnin-grafana-zabbix-309146f /var/lib/grafana/plugins/ #重启grafana systemctl restart grafana-server
再按上面步骤重新开启插件,即可
3.1.3 添加zabbix数据源
在弹出的页面中需要填写zabbix有信息
URL: api_jsonrpc.php 地址,文件/路径是usr/share/zabbix/api_jsonrpc.php url为:/api_jsonrpc.php ,本机服务器,所以我填写http://127.0.0.1/api_jsonrpc.php,如果是Browser方式不能填写127.0.0.1,要填写内网或外网IP 192.168.3.82
Access:访问方式,有2种Server(default)、Browser,两者区别如下:
Server服务器访问模式:
所有请求都将从浏览器发出到Grafana后端/服务器,后者再将请求转发到数据源,从而避免可能的跨域资源共享(CORS)要求。 如果选择此访问方式,则需要从grafana后端/服务器访问该URLBrowser浏览器访问模式:
所有请求都将从浏览器直接向数据源发出,并且可能要遵守跨域资源共享(CORS)的要求。 如果选择此访问方式,则需要从浏览器访问URL。一句话就是:Server服务器:Grafana-->数据源,Browser是:浏览器-->数据源
一般浏览器是在客户端的,Grafana一般是和zabbix源数据同一台机子或内网,所以速度更快!
我在这里选择 Server浏览器访问模式
注:当Access为Browser访问方式时,即使Grafana和zabbix部署在同一台服务器上,在URL上不能填写IP为127.0.0.1
即 http://127.0.0.1/api_jsonrpc.php,否则会报不能连接
再看一下仪表盘的情况
分别Zabbix System Status 和 Zabbix Server Dashboard
从上面可以看出,Grafana的zabbix插件只是提供很简单的仪表盘功能。如果要实现像zabbix自带那种一堆模板的,还是要添加Grafana Dashboard+自定义监控
3.2 安装zabbix相关的Grafana Dashboards
上面的zabbix插件自带的 Dashboards太弱了,需要手工安装一些 zabbix方面的Grafana Dashboards。
打开官网Grafana Dashboards,在左边侧栏有搜索条件,我设置是最近更新的,于zabbix相关的,如下图所示:
我这里就添加一个MySQL监控为例子,点 Zabbix-MySQL
Grafana只是一个前端的美化展示功能,要展示mysql肯定需要有数据才行啊!上面的仪表盘使用了agent2+emplate DB MySQL by Zabbix agent 2模板抓取数据,然后从zabbix数据库中读取数据,再展示。
3.2.1 zabbix安装agent2
按照上面的安装要求
- Zabbix Agent V2
- Datasource: Zabbix
- At the variable $Group, you must match your group to focus at regex field
- Zabbix Template: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent2/README.md
打开上面的链接,发现模板名就是Template DB MySQL by Zabbix agent 2模板,下图顶部也有提示:
PS:我在上一篇《zabbix5.0 监控mysql》只安装了agent没有安装agent2 ,所以还安装上面的zabbix模板才行。这里需要安装agent2
#在监控数据库的agent端,上安装agent2,我这里是vm821, dnf install zabbix-agent2 wget https://mirrors.huaweicloud.com/zabbix/zabbix/5.0/rhel/8/x86_64/zabbix-agent2-5.0.2-1.el8.x86_64.rpm dnf install -y zabbix-agent2-5.0.2-1.el8.x86_64.rpm #配置agent2,agent2和agent是同一个配置目录 #1)建立相关目录 mkdir -pv /disk1/logs/zabbix chown zabbix.zabbix -R /disk1/logs/zabbix #2)修改配置 cd /etc/zabbix/ cp zabbix_agent2.conf zabbix_agent2.conf.orig sed -i 's#/var/log/zabbix#/disk1/logs/zabbix#' zabbix_agent2.conf #如果设置为纯主动模式,则应该注释掉这一条配置 sed -i 's/Server=127.0.0.1/Server=192.168.3.82/' zabbix_agent2.conf #修改hostname名字 sed -i "/^Hostname=/s/Zabbix server/`hostname`/" zabbix_agent2.conf #客户端的hostname,不配置默认使用系统主机名 egrep "^LogFile=|^Server=|^Hostname=" zabbix_agent2.conf #开启 systemctl start zabbix-agent2 systemctl status zabbix-agent2 systemctl enable zabbix-agent2
[root@vm821 zabbix]# egrep "^LogFile=|^Server=|^Hostname=" zabbix_agent2.conf LogFile=/disk1/logs/zabbix/zabbix_agent2.log Server=192.168.3.82 Hostname=vm821
3.2.2 zabbix添加mysql监控
在zabbix添加mysql监控,让它产生的数据保存在zabbix数据库中,方便grafana的mysql dashboard 从zabbix数据库中获取数据。操作如下:
修改zabbix配置,把之前的mysql模板Template DB MySQ改为 Template DB MySQL by Zabbix agent 2
给宏添加用户名和密码的值。
{$MYSQL.DSN} tcp://192.168.3.21
{$MYSQL.USER} zbx_monitor
{$MYSQL.PASSWORD} hua123
因agent和agent2是使用同端口的,所以得停止之前的agent,我这里在vm821上操作
#因为是同端口的把agent停止
systemctl stop zabbix-agent
#开启agent2
systemctl start zabbix-agent2
systemctl status zabbix-agent2
过一会儿看一下监控,应该有mysql数据产生,如下图所示:
3.2.3 安装 grafana的Zabbix-MySQLdashboard
我这里用id安装,从上面知道 Zabbix-MySQL dashboard的ID为12738,然后在Grafana web界面做如下操作:
再往下面看,发现有报错:
所以需要安装一个pie图形面板
所以安装一下
#安装Pie Chart
grafana-cli plugins install grafana-piechart-panel
[root@vm82 ~]# grafana-cli plugins install grafana-piechart-panel
installing grafana-piechart-panel @ 1.6.0
from: https://grafana.com/api/plugins/grafana-piechart-panel/versions/1.6.0/download
into: /var/lib/grafana/plugins
✔ Installed grafana-piechart-panel successfully
Restart grafana after installing plugins . <service grafana-server restart>
因为我在zabbix并没有配置Mysql监控,没有任何监控主机所以没数据是正常的。
3.2.4 配置 Zabbix-MySQL dashboard
PS:上面图中Regex是正则表达式的意思,Grafana使用的正则表达是是JS的,在Grafana说明文档的 Filter variables with regex 中提到 Regular expressions.
试想一下,Grafana是前端,使用JS正则也是一件很正常的的,js正则表达式有2种 :
一种是使用 /正则表达式/,用是的//种表示此表达式正则表达式
另一种是使用js对象 RegExp,new RegExp(表达式)
sed命令也是使用 //为正则, /regexp/式,所以会写sed命令学一下js的正则很快上手的。
返回
可以看到有数据产生了,如下图所示:
四、在Grafana 自定义 Zabbix Dashboards
如果用上面现成的仪表盘dashboard,还是觉得满意不了要求,那就自己动手添加自定义的监控吧。
4.1 定义全局变量
我们写shell/python的时候,重复使用的一般会把它单独抽出来变成模块,所以自定义模板一般是先自定义一些全局变量。操作如下:
修改仪表盘名字
添加变量,如果不懂可以看 Templating documentation ,自定义使用组和主机比较多,我就先配置2个变量如,操作如下:
Name:变量的名字,一般首字母大写,驼峰写法
Type:类型,有几种,因为我是直接展示的,与在我使用了查询,下图中最后一个system是返回的作用
如下表,有兴趣自己看一下
Variable type Description Query Query-generated list of values such as metric names, server names, sensor IDs, data centers, and so on. Add a query variable. Custom Define the variable options manually using a comma-separated list. Add a custom variable. Text box Display a free text input field with an optional default value. Add a text box variable. Constant Define a hidden constant. Add a constant variable. Data source Quickly change the data source for an entire dashboard. Add a data source variable. Interval Interval variables represent time spans. Add an interval variable. Ad hoc filters Key/value filters that are automatically added to all metric queries for a data source (InfluxDB, Prometheus, and Elasticsearch only). Add ad hoc filters. Global variables Built-in variables that can be used in expressions in the query editor. Refer to Global variables. Chained variables Variable queries can contain other variables. Refer to Chained variables. URL variables You can use variables in data links to link to specific portions of your visualizations. Refer to Data links.
同理我也添加一个Host变量,代表主机组
4.2 添加面板panel
因为上面的Zabbix-MySQL dashboard是基于agent 2的,如果我非要用上篇《zabbix5.0 监控mysql》的agent监控呢,没有现成的那么就自己创造了,我只拿其中一项当例子,如Throughput: Bytes sent 和 Throughput: Bytes received
4.2.1 准备工作
在操作之前,做一些准备工作,我在vm821把zabbix agent2停止用agent
systemctl stop zabbix-agent2 systemctl status zabbix-agent2 #启动agent,发现用start不行,要用restart systemctl restart zabbix-agent systemctl status zabbix-agent
在zabb web中把配置的监控主机 vm821中agent2监控的mysql模板也改回原来的agent监控的模板Template DB MySQL
查看一下agent监控是否有数据,尤其是mysql
4.2.2 添加面板panel
同理配置另一个 Throughput: Bytes received,其它我就不添加了,最后把配置好的保存即可
下次要查看可以点 dashboard 主面的 hua zabbix-mysql dashboard