Zabbix监控结合Grafana绘图

Zabbix简介

ZabbixAlexei Vladishev 创建,目前由其成立的公司 Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务
Zabbix 是一个企业级分布式开源监控解决方案
Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用
Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使

1、系统的性能

内存使用率、cpu负载、网络以及磁盘I/O、Tcp的各种连接状态

2、应用程序

首先监控应用程序是否正常运行(端口进程)、监控应用程序的性能

运维常用的监控软件:nagioscactigangliapromethueszabbixopen-falcon
zabbix监控软件:它是一个C/S架构,还是一个B/S架构, zabbix软件的前端是由php页面写的

zabbix数据的采集的两个模式
主动模式:被监控端主动将采集到的数据,发送给监控端
被动模式:zabbix默认的模式,监控端定时的向被监控端拿数据

zabbix的监控原理

Zabbix监控结合Grafana绘图_第1张图片

Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,规范项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、RebootRestartInstall等)

Zabbix分布式监控系统监控客户端的方式常见有三种AgentSNMPIPMI

Agent Zabbix可以基于自身zabbix_agent客户端插件监控OS的状态,例如CPU、内存、硬盘、网卡、文件等
SNMP Zabbix通过简单网络管理协议(Simple Network Management Protocol)监控网络设备或windows主机等。通过设定SNMP的参数将相关监控数据传送至服务端,交换机、防火墙等网络设备一般都支持SNMP协议
IPMI 智能平台管理接口(Intelligent Platform Management InterfaceIPMI)即主要应用于设备的物理特性,包括:温度、电压、电扇工作状态,电源供应以及机箱入侵等。IPMI最大的优势在于无论OS的开机还是关机状态下,只要接通电源就可以实现对服务器的监控
Zabbix监控客户端分为主动监控与被动监控,主被动模式以客户端为参照,Zabbix监控客户端默认为被动模式,可以修改为主动模式,只需要在客户端配置文件中添加 StartAgents=0
Zabbix主动模式 Agent主动请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxyzabbix agent首先向ServerActive配置的IP请求获取active items,获取并提交active items数据至server/proxy
Zabbix被动模式 Serveragent请求获取监控项的数据,agent返回数据,server打开一个TCP连接,Server发送请求agent.pingAgent接收到请求并且响应,Server处理接收到的数据
Zabbix的常用组件
Zabbix Server 接收Agent采集数据的核心组件;所有的配置统计数据及操作都由它进行
Zabbix Database 提供数据存储功能,专用于存储配置信息,以及采集到的数据
Zabbix Web GUI 提供Web界面
Zabbix Proxy 当被监控节点较多时,用于减轻Server压力的组件,也用于分布式监控系统。由Proxy接收数据后统一发送至Server
Zabbix Agent 部署在被监控主机上,用于采集本地数据
Zabbix监控系统监控概念
主机(host) 被监控的网络设备,可以写IP或者DNS
主机组(host group) 主机组用于管理主机,可以批量设置权限
监控项(item) 具体监控项,items值由独立的keys进行识别
触发器(trigger) 为某个items设置触发器,达到触发器会执行action动作
事件(event) 例如达到某个触发器,称之为一个事件
动作(action) 对于特定事件事先定义的处理方法,默认可以发送信息及发送命令
报警升级(escalation) 发送警报或执行远程命令的自定义方案,如隔5分钟发送一次警报,共发送5次等
媒介(media) 发送通知的方式,可以支持MailSMSScripts
通知(notification) 通过设置的媒介向用户发送的有关某事件的信息
远程命令 达到触发器,可以在被监控端执行命令
模板(template) 可以快速监控被监控端,模块包含:itemtriggergraphscreenapplication
web场景(web scennario) 用于检测web站点可用性,监控HTTP关键词
web前端(frontend) Zabbixweb接口
图形(graph) 监控图像
屏幕(screens) 屏幕显示
幻灯(slide show) 幻灯显示

Grafana简介

Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库

Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。 官方支持以下数据源:GraphiteElasticsearchInfluxDBPrometheusCloudwatchMySQLOpenTSDBZabbix

所需环境

系统 IP 名称 角色
CentOS 7.4 192.168.2.14 zabbix LAMP、zabbix、grafana(版本8.0)
CentOS 7.4 192.168.2.13 agent agent(FTP,Web)

一、安装zabbix server服务端

[root@zabbix ~]# echo '
192.168.2.14 zabbix
192.168.2.13 agent
192.168.2.14 agent
' >> /etc/hosts    
 安装 LAMP 使用本地yum
 
[root@zabbix ~]# yum -y install net-snmp net-snmp-devel libxml2 libxml2-devel libcurl-devel libevent libevent libevent-devel curl curl-devel mysql-devel snmp perl-DBI php-xml php-bcmath php-mbstring php-ldap php-xmlrpc httpd php php-mysql php-common php-gd php-odbc php-pear gcc* net-snmp libssh2 libssh2-devel mariadb-server mariadb mariadb-devel ntpdate                                       

添加一个网卡连接外网

[root@zabbix ~]# systemctl restart network              
[root@zabbix ~]# yum -y install wget                      
 
[root@zabbix ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo                             
因本地yum安装 有部分安装包没有需要网络yum源       安装 LAMP
 
[root@zabbix ~]# yum -y install net-snmp net-snmp-devel libxml2 libxml2-devel libcurl-devel libevent libevent libevent-devel curl curl-devel mysql-devel snmp perl-DBI php-xml php-bcmath php-mbstring php-ldap php-xmlrpc httpd php php-mysql php-common php-gd php-odbc php-pear gcc* net-snmp libssh2 libssh2-devel mariadb-server mariadb mariadb-devel ntpdate                                    
 
[root@zabbix ~]# yum -y install libevent-devel           
[root@zabbix ~]# yum install *bcmath* --skip-broken               
[root@zabbix ~]# yum install php-mbstring                 
同步时间
 
[root@zabbix ~]# yum -y install ntpdate                      
....
[root@zabbix ~]# ntpdate ntp1.aliyun.com             
27 Dec 16:10:33 ntpdate[44367]: adjust time server 120.25.115.20 offset 0.003932 sec
启动myslq
 
[root@zabbix ~]# systemctl start mariadb                
[root@zabbix ~]# systemctl enable mariadb            
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
 
[root@zabbix ~]# mysqladmin -u root password 123.com            
启动httpd
 
[root@zabbix ~]# systemctl start httpd                 
[root@zabbix ~]# systemctl enable httpd            
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

下载 [Zabbix](https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX Latest Stable/4.4.7/zabbix-4.4.7.tar.gz)

如果没有提示下载可以使用下面的方式进行下载

 
[root@zabbix ~]# tar zxvf zabbix-4.4.7.tar.gz                     
[root@zabbix ~]# cd zabbix-4.4.7                     
 
[root@zabbix zabbix-4.4.7]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2                                        
...................
.........
  LDAP support:          no
  IPv6 support:          yes
 
***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************
 
[root@zabbix zabbix-4.4.7]# make &&make install               
...........
.....
..
 
[root@zabbix ~]# mysql -uroot -p123.com                    
 
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;                                 
Query OK, 1 row affected (0.00 sec)
 
MariaDB [(none)]> use zabbix;                                
Database changed
 
MariaDB [(none)]> source /root/zabbix-4.4.7/database/mysql/schema.sql;                 
..................
...........
.....
Query OK, 0 rows affected (0.00 sec)               
Records: 0  Duplicates: 0  Warnings: 0
 
MariaDB [zabbix]> source /root/zabbix-4.4.7/database/mysql/images.sql;                                   
........
....
.
 
Query OK, 1 row affected (0.00 sec)
 
Query OK, 1 row affected (0.00 sec)
 
MariaDB [zabbix]> source /root/zabbix-4.4.7/database/mysql/data.sql;                                    
...............                   
........
..
 
Query OK, 1 row affected (0.00 sec)
 
Query OK, 0 rows affected (0.01 sec)
 
MariaDB [zabbix]> grant all on zabbix.* to zabbix@'192.168.2.14' identified by 'zabbix';                                          
Query OK, 0 rows affected (0.00 sec)
 
MariaDB [zabbix]> flush privileges;                                              
Query OK, 0 rows affected (0.00 sec)
 
MariaDB [zabbix]> quit        
Bye
 
[root@zabbix ~]# groupadd zabbix                    
[root@zabbix ~]# useradd -r -g zabbix zabbix                    
[root@zabbix ~]# mkdir /usr/local/zabbix/logs                   
[root@zabbix ~]# chown zabbix:zabbix /usr/local/zabbix/ -R               
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf                   
 
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/tmp/zabbix_server.pid
DBHost=192.168.2.14
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
Timeout=4                                   #与AGNET/SNMP 设备和其他外部通信超时设置,单位:秒s
LogSlowQueries=3000                         #用于服务端数据库慢查询功能,单位:毫秒
StatsAllowedIP=127.0.0.1,192.168.2.0/24     #来源IP访问控制限制
 
————————————
:%g/^#/d     删除以#开头的内容    :%g/^$/d    删除空行
 
保存
 
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf             
 
PidFile=/tmp/zabbix_agentd.pid                             #运行的PID 文件
Server=127.0.0.1,192.168.2.14                              #zabbix的主机IP
ServerActive=192.168.2.14                                  #agent主机采集到的数据发送到server端
Hostname=zabbix                                            #本机的主机名称
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log           #指定日志文件
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf  #开启附加配置文件目录
 
 
:%g/^#/d     删除以#开头的内容    :%g/^$/d    删除空行
 
保存
 
[root@zabbix ~]# /usr/local/zabbix/sbin/zabbix_server                
[root@zabbix ~]# netstat -utpln|grep 10051                
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      16176/zabbix_server 
tcp6       0      0 :::10051                :::*                    LISTEN      16176/zabbix_server 
[root@zabbix ~]# /usr/local/zabbix/sbin/zabbix_agentd             
[root@zabbix ~]# netstat -utpln|grep 10050           
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      17469/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      17469/zabbix_agentd 
[root@zabbix ~]# mkdir /var/www/html/zabbix                
[root@zabbix ~]# mv /root/zabbix-4.4.7/frontends/php/* /var/www/html/zabbix               
[root@zabbix ~]# vim /etc/php.ini                 
....
 384 max_execution_time = 300             #单位秒,通过 POST、GET 以及 PUT 方式接收数据时间进行限制
.....
 394 max_input_time = 300                 #php 程序上传文件解析数据时的时间限制
....
 405 memory_limit = 128M                  #设置 php 程序的内存限制
....
 672 post_max_size = 32M                  #POST 方式请求数据所允许的最大大小
.....
 853 extension=bcmath.so                  #加载 zabbix 程序需要加载的扩展模块 bcmath.so
..... 
 878 date.timezone = Asia/Shanghai        #时区
 
保存
 [root@zabbix ~]# systemctl restart httpd             
[root@zabbix ~]# cd /var/www/html/zabbix/conf          
[root@zabbix conf]# vim  zabbix.conf.php.example                      
 
<?php
// Zabbix GUI configuration file.
global $DB, $HISTORY;
 
$DB['TYPE']                     = 'MYSQL';
$DB['SERVER']                   = 'localhost';
$DB['PORT']                     = '0';
$DB['DATABASE']                 = 'zabbix';
$DB['USER']                     = 'zabbix';
$DB['PASSWORD']                 = 'zabbix';               #mysql授权的用户密码
// Schema name. Used for IBM DB2 and PostgreSQL.
                                                           
......
保存

二、配置zabbix服务的web页面做优化

访问安装:http://192.168.2.14/zabbix/

Zabbix监控结合Grafana绘图_第2张图片

查看是否全部ok;下一步

Zabbix监控结合Grafana绘图_第3张图片

填写相关信息

Zabbix监控结合Grafana绘图_第4张图片

填写信息

Zabbix监控结合Grafana绘图_第5张图片

检查输入内容

Zabbix监控结合Grafana绘图_第6张图片

点击连接下载配置文件

Zabbix监控结合Grafana绘图_第7张图片

下载的配置文件如下

img

把配置文件上传到 /var/www/html/zabbix/conf/

[root@zabbix ~]# cd /var/www/html/zabbix/conf/
[root@zabbix conf]# ls
maintenance.inc.php  zabbix.conf.php  zabbix.conf.php.example

上传后直接下一步

Zabbix监控结合Grafana绘图_第8张图片

注意:用户名Admin A是大写

Zabbix监控结合Grafana绘图_第9张图片

Zabbix监控结合Grafana绘图_第10张图片

安装完成;设置字体为中文

Zabbix监控结合Grafana绘图_第11张图片

Zabbix监控结合Grafana绘图_第12张图片

Zabbix监控结合Grafana绘图_第13张图片

解决zabbix显示图像下边文字乱码问题

上传simkai.ttf 文件
 
[root@zabbix ~]# cd /var/www/html/zabbix/assets/fonts/          
[root@zabbix fonts]# ls          
DejaVuSans.ttf  simkai.ttf
 
[root@zabbix fonts]# mv DejaVuSans.ttf DejaVuSans.ttf.bak           
[root@zabbix fonts]# mv simkai.ttf DejaVuSans.ttf        
[root@zabbix fonts]# ls         
DejaVuSans.ttf  DejaVuSans.ttf.bak

三、监控zabbix端的OS、MySQL、Httpd

(一)、 创建主机zabbix服务

Zabbix监控结合Grafana绘图_第14张图片

Zabbix监控结合Grafana绘图_第15张图片

选择两个监控模板即可:**Template App HTTP Service***、***Template DB MySQL******

Zabbix监控结合Grafana绘图_第16张图片

Zabbix监控结合Grafana绘图_第17张图片

Zabbix监控结合Grafana绘图_第18张图片

Zabbix监控结合Grafana绘图_第19张图片

Zabbix监控结合Grafana绘图_第20张图片

Zabbix监控结合Grafana绘图_第21张图片

Zabbix监控结合Grafana绘图_第22张图片

查看监控主机状态

Zabbix监控结合Grafana绘图_第23张图片

发现关于MySQL数据库的所有监控项没有图形

Zabbix监控结合Grafana绘图_第24张图片

解决方法

设置监控失效的键值

 
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf               
 
PidFile=/tmp/zabbix_agentd.pid   
Server=127.0.0.1,192.168.2.14
ServerActive=192.168.2.14
Hostname=zabbix
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
 
UserParameter=mysql.ping[*], HOME=/etc/zabbix mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], HOME=/etc/zabbix mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"    
 
 
保存
——————————————————————————————————————————————————————————————————————
 
 ############    解释:
 
PidFile=/tmp/zabbix_agentd.pid
Server=127.0.0.1,192.168.2.14                                        #指定 zabbix 服务器的地址
ServerActive=192.168.2.14                                            #指定 agent 采集到数据之后发送给 server 端
Hostname=zabbix                                                      #指定 agent 端的主机名、server 端必须需要解析,注意:在 web 界面添加被监控主机时,必须写此主机名
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
UserParameter=mysql.ping[*], HOME=/etc/zabbix mysqladmin -h"$1" -P"$2" ping    #自定义监控项
             =定义名称,key值

验证:打开 zabbix 的 web 界面,查看 mysql 服务器的监控界面

注意:刚查看是没有数据的需要耐心的等待

Zabbix监控结合Grafana绘图_第25张图片

Zabbix监控结合Grafana绘图_第26张图片

(二)、安装及配置agent代理端FTP服务器

[root@agent ~]# echo '
192.168.2.14 zabbix
192.168.2.13 agent
' >> /etc/hosts             
[root@agent ~]# yum -y install wget                    
.....
[root@agent ~]# systemctl restart network                       
[root@agent ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo                    
....
[root@agent ~]# yum -y install ntpdate                     
...
[root@agent ~]# ntpdate ntp1.aliyun.com                  
29 Dec 20:53:08 ntpdate[971]: adjust time server 120.25.115.20 offset -0.004758 sec
 
[root@agent ~]# yum -y install vsftpd                  
.....
[root@agent ~]# systemctl start vsftpd            
...
[root@agent ~]# yum -y install libxml2-devel libcurl-devel pcre-devel              
 ....
[root@agent ~]# tar zxvf zabbix-4.4.7.tar.gz                       
[root@agent ~]# cd zabbix-4.4.7                       
[root@agent zabbix-4.4.7]# ./configure --prefix=/usr/local/zabbix --enable-agent --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2                            
...........
....
..
[root@agent zabbix-4.4.7]# make && make install                              
...........
.....
 
[root@agent ~]# groupadd zabbix                    
[root@agent ~]# useradd -r -g zabbix zabbix                                
[root@agent ~]# chown zabbix:zabbix /usr/local/zabbix -R           
[root@agent ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf             
 
Server=192.168.2.14           
ServerActive=192.168.2.14                   
Hostname=agent                     
LogFile=/tmp/zabbix_agentd.log                  
 
:%g/^#/d     删除以#开头的内容    :%g/^$/d    删除空行
保存
 
[root@agent zabbix-4.4.7]# /usr/local/zabbix/sbin/zabbix_agentd                 
[root@agent zabbix-4.4.7]# netstat -utpln|grep zabbix                    
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      69639/zabbix_agentd 
tcp6       0      0 :::10050                :::*                    LISTEN      69639/zabbix_agentd 

1、登录zabbix的web界面,进行添加agent主机

Zabbix监控结合Grafana绘图_第27张图片

img

Zabbix监控结合Grafana绘图_第28张图片

img

2、 添加agent主机完成,手动添加ftp服务图形显示

Zabbix监控结合Grafana绘图_第29张图片

Zabbix监控结合Grafana绘图_第30张图片

Zabbix监控结合Grafana绘图_第31张图片

img

Zabbix监控结合Grafana绘图_第32张图片

3、 添加模块CPU

Zabbix监控结合Grafana绘图_第33张图片

Zabbix监控结合Grafana绘图_第34张图片

Zabbix监控结合Grafana绘图_第35张图片

4、 把web添加进来

[root@agent ~]# yum -y install httpd           
[root@agent ~]# systemctl start httpd                
[root@agent ~]# echo '            
<h1>Zabbix 监控服务<h1/>
' > /var/www/html/index.html             
 
保存

Zabbix监控结合Grafana绘图_第36张图片

右上角点击>>创建web场景

Zabbix监控结合Grafana绘图_第37张图片

Zabbix监控结合Grafana绘图_第38张图片

点击添加

在 监控 >> web 监控 中可以查看(*前提先访问*)

Zabbix监控结合Grafana绘图_第39张图片

5、自定义监控项,创建项目,触发器,图形,验证监控效果

以上关联的 Template OS Linux by Zabbix agent 模板基本涵盖了所有系统层面的监控,包括了我们最关注的几项:ping、load、cpu 使用率、memory、disk、网卡流量等等,当然有些触发器的阀值可能需要根据服务器的自身情况进行修改

也可以添加自定义服务器内存使用检测项,在此配置一个监控项为:内存使用 70M 进行警告
提醒

在agent上进行操作
[root@agent ~]# yum -y install psmisc                
....
.
[root@agent ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf                
..........
.....
UserParameter=memory_usage,free -m|grep Mem|awk '{print $3}'                 
 
 
保存
 
加入到最后一行
——————————————————————————————————————————
            说明
语法:UserParameter=key,shell command
监控 key 值:memory_usage,key 值可以随意编写,但是一会需要在 web 页面创建监控项时指定 key 值;
 
Shell 命令或脚本:free -m|grep Mem|awk '{print $3}'
 
注意:在 zabbix_server 端可以使用 | zabbix_get -s agent 端 ip 地址 -p 10050 -k key名 |可以通过此命令可以查看 agent 端 key 的监控值;
——————————————————————————————————————————
 
[root@agent ~]# killall -9 zabbix_agentd                
[root@agent ~]# /usr/local/zabbix/sbin/zabbix_agentd          
[root@agent ~]# free -m|grep Mem|awk '{print $3}'              
116
 
————————————————————————————————————————————————————————————
在zabbix上查看监控值
 
[root@zabbix ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.2.13 -k memory_usage                   
116

5.1、使用web添加监控项

Zabbix监控结合Grafana绘图_第40张图片

Zabbix监控结合Grafana绘图_第41张图片

Zabbix监控结合Grafana绘图_第42张图片

Zabbix监控结合Grafana绘图_第43张图片

5.2、监控项添加完成后,创建触发器(根据条件进行触发某个告警操作)

Zabbix监控结合Grafana绘图_第44张图片

Zabbix监控结合Grafana绘图_第45张图片

Zabbix监控结合Grafana绘图_第46张图片

Zabbix监控结合Grafana绘图_第47张图片

Zabbix监控结合Grafana绘图_第48张图片

Zabbix监控结合Grafana绘图_第49张图片

Zabbix监控结合Grafana绘图_第50张图片

Zabbix监控结合Grafana绘图_第51张图片

5.3、 创建监控显示图形

Zabbix监控结合Grafana绘图_第52张图片

Zabbix监控结合Grafana绘图_第53张图片

Zabbix监控结合Grafana绘图_第54张图片

5.4、验证

[root@agent ~]# ab -n 5000000 -c 100 -k http://192.168.2.13/    测试

Zabbix监控结合Grafana绘图_第55张图片

首页也会显示警告

Zabbix监控结合Grafana绘图_第56张图片

也可以监控交换机和用户访问的情况可以编写脚本进行完成

6、实现邮件报警

6.1、配置zabbix端的邮件

 
[root@zabbix ~]# yum -y install mailx dos2unix           
.....
...
[root@zabbix ~]# mailx -V           
12.5 7/5/10
 
——————————————————————————————————————————
在此文件末尾添加,指定接收邮件邮箱地址,指定邮箱服务器地址,指定接收邮件邮箱地址的授权码,并非 qq 邮箱的密码,而是授权码
登陆 qq 邮箱后 >--设置--开启 smtp 和 pop--点击客户端生成授权码--使用此授权码进
行指定到此配置文件
 
接收服务器:pop.qq.com    发送服务器:smtp.qq.com
 
[root@zabbix ~]# vi /etc/mail.rc             
...........(邮箱,授权码需填写自己的这里就写案例)
.....
set from=12345678901@qq.com smtp=smtp.qq.com             
set smtp-auth-user=12345678901@qq.com smtp-auth-password=授权码         
set smtp-auth=login            
 
保存退出

开启后会生成授权码

Zabbix监控结合Grafana绘图_第57张图片

测试接收情况

[root@zabbix ~]# echo "测试内容"|mail -s "测试一收到没有" 12345678901@qq.com                 

Zabbix监控结合Grafana绘图_第58张图片

配置zabbix_server.conf

 
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf           
........
...
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts               
 
保存退出

编写报警邮件脚本,调整 mail 命令语法位置,使用 dos2unix 命令转换字符,避免收到邮件不显示正常邮件内容而出现 ATT00001.bin 的错误

 
[root@zabbix ~]# vim /usr/local/zabbix/share/zabbix/alertscripts/2.sh         
#!/bin/bash
#export.UTF-8
bt=$2
sjr=$1
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
/usr/bin/dos2unix -k $FILE
/bin/mail -s "$bt" "$sjr" <$FILE        
 
保存退出
 
[root@zabbix ~]# chmod 777 /usr/local/zabbix/share/zabbix/alertscripts/2.sh               
[root@zabbix ~]# chown zabbix:zabbix /usr/local/zabbix/share/zabbix/alertscripts/2.sh              
[root@zabbix ~]# touch /tmp/mailtmp.txt             
[root@zabbix ~]# chmod 777 /tmp/mailtmp.txt                
[root@zabbix ~]# chown zabbix:zabbix /tmp/mailtmp.txt             
 
注意文件以及报警脚本的归属以及权限,注:脚本文件和存放邮件消息文件归属必须是 zabbix
 [root@zabbix ~]# /usr/local/zabbix/share/zabbix/alertscripts/2.sh 12345678901@qq.com "测试标题 二" "测试内容 二"                   
dos2unix: converting file /tmp/mailtmp.txt to Unix format ...

Zabbix监控结合Grafana绘图_第59张图片

6.2、配置监控项邮件报警

配置 zabbix web 网站进行监控项的邮件报警,每一张图片后附带解释和注意事项,大体
步骤为: 监控***>>***创建报警媒介类型***>>***更新用户使用的报警媒介类型***>>***创建动作
(根据触发器
触发)***>>*验证

创建报警媒介类型

Zabbix监控结合Grafana绘图_第60张图片

输入创建的报警媒介类型的名称,指定类型为脚本的方式,并且输入 zabbix_server 端
/usr/local/zabbix/share/zabbix/alertscripts 目录下的脚本名称,确保脚本的归属是 zabbix,并且脚本的权限是 777,下边设置脚本参数,也就是发送邮件的语法:脚本 收件人 标题 内容,必须严格按照此标准填写(*注意:有 . 符号不要忘记*

Zabbix监控结合Grafana绘图_第61张图片

创建报警媒介类型成功后,进行确认

Zabbix监控结合Grafana绘图_第62张图片

配置 zabbix 中的用户所使用的报警媒介类型以及接收邮件的邮箱

Zabbix监控结合Grafana绘图_第63张图片

选择报警媒介类型为刚刚创建的类型,并且输入接收邮件的地址,指定报警时间和报警级

Zabbix监控结合Grafana绘图_第64张图片

Zabbix监控结合Grafana绘图_第65张图片

Zabbix监控结合Grafana绘图_第66张图片

创建动作,也就是发送邮件的动作

Zabbix监控结合Grafana绘图_第67张图片

输入动作名,动作名最好为英文,可以选择触发这个动作的条件(可以选择触发器=触发器的名称或者选择触发器似触发器名称),作为条件,若不选择触发器的条件,那么任何消息都会提示到邮箱

Zabbix监控结合Grafana绘图_第68张图片

添加报警动作,一旦此触发器添加触发,添加报警邮件的标题和内容,默认操作步骤持续
时间(修改持续时间为 1h (一小时发送一次邮件)),添加操作(添加接收邮件的用户);
**默认标题:**故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
消息内容:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID :{EVENT.ID}

Zabbix监控结合Grafana绘图_第69张图片

添加操作(添加接收邮件的用户),步骤(指定邮件发送的次数),仅送到(选择创建的媒
介类型)

Zabbix监控结合Grafana绘图_第70张图片

添加恢复操作(指故障恢复之后发送邮件的动作),具体步骤和添加操作相同

Zabbix监控结合Grafana绘图_第71张图片

更新动作创建的完成**(同上)**

Zabbix监控结合Grafana绘图_第72张图片

Zabbix监控结合Grafana绘图_第73张图片

开始测试邮件报警

测试:,测试邮件报警情况

[root@agent ~]# dd if=/dev/zero of=/opt/1.txt bs=1G count=5          

Zabbix监控结合Grafana绘图_第74张图片

7、实现企业微信报警

7.1、先注册企业微信到官方注册省略…

7.2、注册好之后需要创建应用

Zabbix监控结合Grafana绘图_第75张图片

Zabbix监控结合Grafana绘图_第76张图片

Zabbix监控结合Grafana绘图_第77张图片

加入成员

img

查看部门ID号

Zabbix监控结合Grafana绘图_第78张图片

Zabbix监控结合Grafana绘图_第79张图片

Zabbix监控结合Grafana绘图_第80张图片

Zabbix监控结合Grafana绘图_第81张图片

Zabbix监控结合Grafana绘图_第82张图片

**AgentId:**1000003

**Secret :**SiaRe_eMY9zKb4qQ0-LKhAvwgaS7Od_6LC43Kcuiblc

查看企业ID

Zabbix监控结合Grafana绘图_第83张图片

准备完成后编写脚本在zabbix服务器上

[root@zabbix ~]# vim /usr/local/zabbix/share/zabbix/alertscripts/1.sh              
 
#!/bin/bash
#set -x
CorpID="........."                   #上面有查看过    我的企业 ==>  企业ID
Secret="........."                   #应用管理中查看  Secret
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
#echo $Token
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
 
function body(){
        local int agentid=1000002             #改为AgentId的ID号 之前查看的信息
        local UserID=$1                       #发送的用户名称 位于$1的字符串
        local PartyID=2                       #之前查看的部门ID
        local Msg=$(echo "$@" | cut -d" " -f3-)
        printf '{\n'
        printf '\t"touser": "'"$UserID"\"",\n"
        printf '\t"toparty": "'"$PartyID"\"",\n"
        printf '\t"msgtype": "text",\n'
        printf '\t"agentid": "'"$agentid"\"",\n"
        printf '\t"text": {\n'
        printf '\t\t"content": "'"$Msg"\""\n"
        printf '\t},\n'
        printf '\t"safe":"0"\n'
        printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
``
保存

测试脚本

 
[root@zabbix ~]# cd /usr/local/zabbix/share/zabbix/alertscripts          
[root@zabbix alertscripts]# chmod 777 1.sh                  
[root@zabbix alertscripts]# ./1.sh admin 测试 这是一条测试信息           
{"errcode":0,"errmsg":"ok","invaliduser":"admin","msgid":"mrVtVXE39it1tWVvd57npD6jUrq6gFySn7k5BWrwqgsEYHiEHLs42nHRhgOAhr

Zabbix监控结合Grafana绘图_第84张图片

配置zabbix_server.conf

 
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf           
........
...
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts               #脚本位置如果已经有了就无需添加
 
保存退出

开始配置zabbix

Zabbix监控结合Grafana绘图_第85张图片

Zabbix监控结合Grafana绘图_第86张图片

Zabbix监控结合Grafana绘图_第87张图片

选择报警媒介类型为刚刚创建的类型,并且输入接收邮件的地址,指定报警时间和报警级

Zabbix监控结合Grafana绘图_第88张图片

Zabbix监控结合Grafana绘图_第89张图片

Zabbix监控结合Grafana绘图_第90张图片

创建动作

Zabbix监控结合Grafana绘图_第91张图片

Zabbix监控结合Grafana绘图_第92张图片

**默认标题:**故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
消息内容:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID :{EVENT.ID}

Zabbix监控结合Grafana绘图_第93张图片

**默认标题:**恢复{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}恢复!
消息内容:
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE} {EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}
恢复项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID :{EVENT.ID}

测试

[root@agent ~]# ab -n 5000000 -c 100 -k http://192.168.2.13/

Zabbix监控结合Grafana绘图_第94张图片

Ctrl+c 结束命令

Zabbix监控结合Grafana绘图_第95张图片

测试完成企业微信报警完成了哈哈!!!!

8、自动发现主机

Zabbix监控结合Grafana绘图_第96张图片

img

Zabbix监控结合Grafana绘图_第97张图片

可见名称:可以选择主机名称、DNS名称、ip地址

Zabbix监控结合Grafana绘图_第98张图片

IP地址可以使用逗号隔开

Zabbix监控结合Grafana绘图_第99张图片

img

部署agent2进行验证

[root@agent2 ~]# vim /etc/hosts
......
192.168.2.12 zabbix
192.168.2.13 agent
192.168.2.14 agent2
 
保存
 

添加网卡使用网络yum源

[root@agent2 ~]# systemctl restart network                     
[root@agent2 ~]# yum -y install wget             
...........
....
[root@agent2 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo                    
 
[root@agent2 ~]# yum -y install ntpdate              
............
.....
[root@agent2 ~]# ntpdate ntp1.aliyun.com
 9 Jan 21:01:57 ntpdate[22908]: adjust time server 120.25.115.20 offset -0.004508 sec
 
[root@agent2 ~]# yum -y install net-snmp net-snmp-devel libxml2 libxml2-devel libcurl-devel libevent libevent libevent-devel curl curl-devel mysql-devel snmp perl-DBI php-xml php-bcmath php-mbstring php-ldap php-xmlrpc httpd php php-mysql php-common php-gd php-odbc php-pear gcc* net-snmp libssh2 libssh2-devel mariadb-server mariadb mariadb-devel ntpdate                          
............................
................
......
[root@agent2 ~]# tar zxvf zabbix-4.4.7.tar.gz
[root@agent2 ~]# cd zabbix-4.4.7
[root@agent2 zabbix-4.4.7]# ./configure --prefix=/usr/local/zabbix --enable-agent --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2               
................
...........
[root@agent2 zabbix-4.4.7]# make && make install
...........
[root@agent2 zabbix-4.4.7]# groupadd zabbix              
[root@agent2 zabbix-4.4.7]# useradd -r -g zabbix zabbix               
[root@agent2 zabbix-4.4.7]# chown zabbix:zabbix /usr/local/zabbix -R              
[root@agent2 zabbix-4.4.7]# vim /usr/local/zabbix/etc/zabbix_agentd.conf             
 
Server=192.168.2.12   
ServerActive=192.168.2.12
Hostname=agent2
LogFile=/tmp/zabbix_agentd.log             
 
保存  
 
 
[root@agent2 zabbix-4.4.7]# /usr/local/zabbix/sbin/zabbix_agentd           
[root@agent2 zabbix-4.4.7]# netstat -utpln|grep zabbix             
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      42040/zabbix_agentd 
tcp6       0      0 :::10050                :::*                    LISTEN      42040/zabbix_agentd 
 

验证

我的企业微信已经收的了信息

Zabbix监控结合Grafana绘图_第100张图片

查看已经自动加入主机了;在部署多台服务器时可以设置自动加入Zabbix监控结合Grafana绘图_第101张图片

如果没有收到信息可能是服务器没有连接到外网可以重启一下网卡就可以收到了

9、安装配置Grafana

在执行以下命令时先ping一下百度看看是否可以上网;如果设置了虚拟网卡确定可以通信

[root@zabbix ~]# wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.3-1.x86_64.rpm                 
.....
 
[root@zabbix ~]# yum -y localinstall grafana-enterprise-8.3.3-1.x86_64.rpm               
.......
..
[root@zabbix ~]# grafana-cli plugins install alexanderzobnin-zabbix-app    #安装 zabbix 插件
installing alexanderzobnin-zabbix-app @ 4.0.1
from url: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/4.0.1/download
into: /var/lib/grafana/plugins
 
✔ Installed alexanderzobnin-zabbix-app successfully 
 
Restart grafana after installing plugins . <service grafana-server restart>
 
 
[root@zabbix ~]# mkdir -p /opt/grafana/data/plugins/                  
[root@zabbix ~]# cp -r /var/lib/grafana/plugins/alexanderzobnin-zabbix-app/ /opt/grafana/data/plugins/                    
[root@zabbix ~]# ls /opt/grafana/data/plugins/                
alexanderzobnin-zabbix-app
[root@zabbix ~]# systemctl start grafana-server                
[root@zabbix ~]# netstat -utpln |grep 3000              
tcp6       0      0 :::3000                 :::*                    LISTEN      7875/grafana-server 
 

访问测试: http://192.168.2.14:3000

Zabbix监控结合Grafana绘图_第102张图片

这里设置密码123.com

Zabbix监控结合Grafana绘图_第103张图片

7.1、配置Grafana的web界面

启用插件

Zabbix监控结合Grafana绘图_第104张图片

Zabbix监控结合Grafana绘图_第105张图片

Zabbix监控结合Grafana绘图_第106张图片

Zabbix监控结合Grafana绘图_第107张图片

添加数据源

Zabbix监控结合Grafana绘图_第108张图片

Zabbix监控结合Grafana绘图_第109张图片

Zabbix监控结合Grafana绘图_第110张图片

Zabbix监控结合Grafana绘图_第111张图片

因画面太大分开截屏

Zabbix监控结合Grafana绘图_第112张图片

添加仪表盘

Zabbix监控结合Grafana绘图_第113张图片

Zabbix监控结合Grafana绘图_第114张图片

输入图形名称

Zabbix监控结合Grafana绘图_第115张图片

选择数据源和图中需要显示的主机和主机的监控项

Zabbix监控结合Grafana绘图_第116张图片

Zabbix监控结合Grafana绘图_第117张图片

Zabbix监控结合Grafana绘图_第118张图片

创建完成,保存此仪表盘,输入仪表盘的名称

Zabbix监控结合Grafana绘图_第119张图片

Zabbix监控结合Grafana绘图_第120张图片

Zabbix监控结合Grafana绘图_第121张图片

在现有的 zabbix服务 中添加图形

Zabbix监控结合Grafana绘图_第122张图片

Zabbix监控结合Grafana绘图_第123张图片

Zabbix监控结合Grafana绘图_第124张图片

Zabbix监控结合Grafana绘图_第125张图片

验证最终的仪表盘显示图形(大小可以自己调节)

Zabbix监控结合Grafana绘图_第126张图片

1、问题描述

安装好zabbix插件后,在Plugins中将其启用
Zabbix监控结合Grafana绘图_第127张图片

然后添加数据源时,会发现找不到zabbix
Zabbix监控结合Grafana绘图_第128张图片

2、解决方法

修改grafana的配置,将zabbix插件配置允许
找到 “;allow_loading_unsigned_plugins =“ 项,删掉 “;“ ,加上 “alexanderzobnin-zabbix-datasource

vim /etc/grafana/grafana.ini
allow_loading_unsigned_plugins = alexanderzobnin-zabbix-datasource

重启grafana服务

systemctl restart grafana-server

重新打开grafana页面,添加数据源,可以找到zabbix源了
Zabbix监控结合Grafana绘图_第129张图片

总结:总体实验过程遇到的都相对来说简单,在安装grafana时侯应注意版本

你可能感兴趣的:(Zabbix,zabbix,grafana)