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的监控原理

img

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

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

AgentZabbix可以基于自身zabbix_agent客户端插件监控OS的状态,例如CPU、内存、硬盘、网卡、文件等
SNMPZabbix通过简单网络管理协议(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.4192.168.2.14zabbixLAMP、zabbix、grafana(版本8.0)
CentOS 7.4192.168.2.13agentagent(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)

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

img

 
[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/

img

查看是否全部ok;下一步

img

填写相关信息

img

填写信息

img

检查输入内容

img

点击连接下载配置文件

img

下载的配置文件如下

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

上传后直接下一步

img

注意:用户名Admin A是大写

img

img

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

img

img

img

解决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服务

img

img

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

img

img

img

img

img

img

img

查看监控主机状态

img

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

img

解决方法

设置监控失效的键值

 
[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 服务器的监控界面

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

img

img

(二)、安装及配置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主机

img

img

img

img

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

img

img

img

img

img

3、 添加模块CPU

img

img

img

4、 把web添加进来

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

img

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

img

img

点击添加

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

img

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添加监控项

img

img

img

img

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

img

img

img

img

img

img

img

img

5.3、 创建监控显示图形

img

img

img

5.4、验证

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

img

首页也会显示警告

img

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

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            
 
保存退出

开启后会生成授权码

img

测试接收情况

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

img

配置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 ...

img

6.2、配置监控项邮件报警

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

创建报警媒介类型

img

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

img

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

img

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

img

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

img

img

img

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

img

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

img

添加报警动作,一旦此触发器添加触发,添加报警邮件的标题和内容,默认操作步骤持续
时间(修改持续时间为 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}

img

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

img

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

img

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

img

img

开始测试邮件报警

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

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

img

7、实现企业微信报警

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

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

img

img

img

加入成员

img

查看部门ID号

img

img

img

img

img

**AgentId:**1000003

**Secret :**SiaRe_eMY9zKb4qQ0-LKhAvwgaS7Od_6LC43Kcuiblc

查看企业ID

img

准备完成后编写脚本在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

img

配置zabbix_server.conf

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

开始配置zabbix

img

img

img

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

img

img

img

创建动作

img

img

**默认标题:**故障{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}

img

**默认标题:**恢复{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/

img

Ctrl+c 结束命令

img

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

8、自动发现主机

img

img

img

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

img

IP地址可以使用逗号隔开

img

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 
 

验证

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

img

查看已经自动加入主机了;在部署多台服务器时可以设置自动加入img

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

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

img

这里设置密码123.com

img

7.1、配置Grafana的web界面

启用插件

img

img

img

img

添加数据源

img

img

img

img

因画面太大分开截屏

img

添加仪表盘

img

img

输入图形名称

img

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

img

img

img

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

img

img

img

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

img

img

img

img

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

img

1、问题描述

安装好zabbix插件后,在Plugins中将其启用
在这里插入图片描述

然后添加数据源时,会发现找不到zabbix
在这里插入图片描述

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源了
在这里插入图片描述

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

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
安装 Grafana 可以为 Zabbix 提供更强大和可视化的监控功能。以下是安装 Grafana 的一般步骤: 1. 首先,确保已经安装了 Zabbix Server,并且能够正常运行。 2. 下载并安装 Grafana。你可以从 Grafana 官方网站的下载页面(https://grafana.com/grafana/download)找到适合你操作系统的安装包。按照官方文档提供的指导进行安装。 3. 安装完成后,启动 Grafana 服务。在大多数 Linux 系统上,可以使用如下命令启动服务: ``` systemctl start grafana-server ``` 4. 默认情况下,Grafana 会在本地监听 3000 端口。你可以在浏览器中访问 `http://localhost:3000` 来打开 Grafana 的 Web 界面。 5. 使用默认的管理员账户(用户名:admin,密码:admin)登录 Grafana。 6. 在登录后,你会被要求修改密码。输入新密码并保存。 7. 登录成功后,点击左侧导航栏中的 Configuration(配置)-> Data Sources(数据源)。 8. 在 Data Sources 页面中,点击 "Add data source"(添加数据源)按钮。 9. 在新建数据源页面中,选择 "Zabbix" 作为类型。 10. 配置 Zabbix 数据源的连接信息,包括 Zabbix Server 的 URL、用户名、密码等。 11. 点击 "Save & Test"(保存并测试)按钮,确保 Grafana 能够成功连接到 Zabbix Server。 12. 配置完成后,你可以在 Grafana 中创建仪表盘,并使用 Zabbix 数据源来展示 Zabbix 监控数据。 这就是安装和配置 GrafanaZabbix 的一般步骤。请注意,具体步骤可能会因操作系统、版本和个人需求而有所不同,建议参考 GrafanaZabbix 的官方文档以获取更详细的安装指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值