使用 zabbix + grafana 监控和绘图
配置前已将 zabbix 的 web 网页部署完成
第一次登录页面后,页面首页为英文,并且不可用主机为1,原因是部署 zabbix 的主机没有安装 zabbix-agent
首先将 zabbix 界面的语言切换至中文,然后在 zabbix 主机上安装 zabbix-agent2
[root@zabbix-test ~]# yum -y install zabbix-agent2
安装后启动并设置下次开机启动 zabbix-agent2
[root@zabbix-test ~]# systemctl enable zabbix-agent2 --now
此时 zabbix 已经通过 agent2 监控到本机
添加其它监控主机,此处以我的 k8s-master 节点为例
先在 master 节点上安装 zabbix-agent2,然后修改代理的配置文件
[root@master ~]# yum -y install zabbix-agent2
配置文件中我们只将 Server 和 ServerActive 改为监控节点的IP地址(Server 表示允许哪个主机到我这里获取数据, ServerActive 表示主动向哪个主机发送数据)
Server 为被动模式,ServerActive 为主动模式。主动模式和被动模式可同时开启并指向同一个 IP
然后在配置中找到主机选项
点进去后右上角有创建主机选项
主机和模板必填,模板选择如上所示模板,然后点击添加
添加后在 zabbix server 端重启 zabbix 服务
[root@zabbix-test ~]# systemctl restart zabbix-server
此时,仪表盘页面可用主机已变成两个
然后给 zabbix server 端创建监控项,一个监控项即为一个监控指标
[root@zabbix-test ~]# vim /etc/zabbix/zabbix_agent2.conf
找到 Userparameter 参数,如下所示,下图告诉你该如何自定义监控项
Include 表示的文件为自定义监控项的配置文件
我们进到此目录下,发现该目录下是空的,然后我们自定义一个 conf 后缀结尾的配置文件
[root@zabbix-test ~]# cd /etc/zabbix/zabbix_agent2.d/
[root@zabbix-test zabbix_agent2.d]# ll
total 0
[root@zabbix-test zabbix_agent2.d]# vim monitor.conf
[root@zabbix-test zabbix_agent2.d]# cat monitor.conf
UserParameter=sda_tps,iostat |awk '$1 ~/sda/{print $2}'
我们定义一个参数来监控 sda 磁盘的每秒传输次数,前提 zabbix 被监控端得有 iostat 命令
自定义一个监控项后记得重启 zabbix-agent2 服务
[root@zabbix-test zabbix_agent2.d]# systemctl restart zabbix-agent2
然后我们安装一个 zabbix 取监控项的值的命令
[root@zabbix-test zabbix_agent2.d]# yum -y install zabbix-get
我们通过 zabbix_get 查看 sda_tps 的 key 是否能取到值
[root@zabbix-test zabbix_agent2.d]# zabbix_get -s 127.0.0.1 -k sda_tps
11.16
可以取到值后我们在 zabbix 的 web 页面给 zabbix 监控端添加 sda_tps 这个监控项
依然在配置里点击主机,然后找到监控项
在右上角点击创建监控项
名称在这里我们可以选择中文,键值就填我们之前自定义的键值,信息类型因为我们之前取到的值为浮点数,所以这里我们选择浮点数,更新间隔可自定义,在这里我们定义间隔为10秒,应用集我们可以选择添加新应用集,也可以将此监控项添加到已有的应用集中,为的是方便我们后面的 grafana 监控绘图
添加后我们在左侧选项栏中找到监测-->最新数据,可以查看是否监测到我们新添加的监控项
如上图所示,我们监控到最近数据,并且在右边还可以查看对应的图形
同时,我们已可以将此监控项复制给我们的 k8s-master 节点
我们在配置-->主机--> zabbix server 的监控项里找到我们新添加的监控项选中复制给我们的 k8s-master 节点
当然,我们后续也可以创建主机群组,将监控项复制给主机群组
复制后,我们在我们的 k8s-master 节点编辑我们的配置文件
然后重启我们 master 节点的 agent2 服务
[root@master ~]# systemctl restart zabbix-agent2
此时,我们再点击监测-->最新数据,此时两台机器都已监控到我们自定义的监控项
添加触发器
点击配置-->主机,然后点击触发器
右上角创建触发器
此处我们以之前创建的监控项为例,创建一个 sda 磁盘每秒传输速度过高的触发器
允许手动关闭可根据情况选择是否开启,创建后如果我们 zabbix server 端的 sda 磁盘的传输速度大于8,则在仪表盘界面就能看到告警信息
触发器我们同样可以通过复制监控项的方法复制给我们的 k8s-mater 节点,此处不再举例
然后我们配置邮箱告警,即当 zabbix server 端发现告警时可通过邮箱发送给自己
点击配置-->动作,将可发送消息状态改为启用
然后点击管理-->告警媒介类型,右上角点击创建媒体类型
SMTP 服务下面有介绍在哪查看,SMTP 服务器端口可选择 465 或 25,SMTP HELO 填 SMTP 服务器的后半部分,SMTP 电邮则为发件人,SSL/TLS 用 QQ 邮箱作为告警媒介时一定要勾选
认证选择用户名和密码,用户名称为发件人的邮箱,密码为 QQ 邮箱的授权码。注:不是你的 QQ 邮箱密码,授权码下面有介绍从哪获得
在 QQ 邮箱中点击设置-->账户
找到 SMTP 服务,并点击"什么是IMAP,它又如何设置?"
找到发送邮件服务器的域名
然后点击 User settings -->报警媒介,添加收件人
类型选择我们刚创建的 QQ 邮箱告警,收件人自己定义,当启动时和哪种严重性发送邮件都可自定义
添加完后记得点击更新
报警媒介定义成功后,当 zabbix 出现告警时会通过邮件的形式发送到收件人的邮箱
接下来,我们通过安装 grafana 插件来对我们定义的监控项进行绘图
在 grafana 官网根据相应的 Linux 发行版本找到软件包,此文以 grafana-7.5.8 为例
将命令复制粘贴到终端,然后启动 grafana 服务
[root@zabbix-test ~]# systemctl enable grafana-server --now
此时查看 grafana 服务监听的端口
如上所示,监听 3000 端口,因此我们用 zabbix server 端 IP 加 3000 端口即可访问 grafana 页面
grafana 的登录界面如下所示
默认登录的 username 和 password 都为 admin
第一次登录会让你修改登录密码,当然也可以任性跳过
登录后
搜索 zabbix 发现搜不到
原因是没有安装 zabbix 的插件
因此接下来我们安装插件并重启 grafana 服务
[root@zabbix-test ~]# systemctl restart grafana-server
然后重新在插件页面搜索 zabbix
此时已有 zabbix
点击 zabbix 并启动
然后添加数据源
搜索 zabbix
基础认证打开,然后用户名和密码都是 zabbix 登录页面的账号和密码
信息无误后,显示如下所示
然后创建一个仪表盘
将我们创建的监控项添加上去