Zabbix简介
Zabbix 由 Alexei 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、应用程序
首先监控应用程序是否正常运行(端口进程)、监控应用程序的性能
运维常用的监控软件:nagios、cacti、ganglia、promethues、zabbix、open-falcon
zabbix监控软件:它是一个C/S架构,还是一个B/S架构, zabbix软件的前端是由php页面写的
zabbix数据的采集的两个模式
主动模式:被监控端主动将采集到的数据,发送给监控端
被动模式:zabbix默认的模式,监控端定时的向被监控端拿数据
zabbix的监控原理
Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,规范项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)
Zabbix分布式监控系统监控客户端的方式常见有三种:Agent、SNMP、IPMI
Agent | Zabbix可以基于自身zabbix_agent客户端插件监控OS的状态,例如CPU、内存、硬盘、网卡、文件等 |
---|---|
SNMP | Zabbix通过简单网络管理协议(Simple Network Management Protocol)监控网络设备或windows主机等。通过设定SNMP的参数将相关监控数据传送至服务端,交换机、防火墙等网络设备一般都支持SNMP协议 |
IPMI | 智能平台管理接口(Intelligent Platform Management Interface,IPMI)即主要应用于设备的物理特性,包括:温度、电压、电扇工作状态,电源供应以及机箱入侵等。IPMI最大的优势在于无论OS的开机还是关机状态下,只要接通电源就可以实现对服务器的监控 |
Zabbix监控客户端分为主动监控与被动监控,主被动模式以客户端为参照,Zabbix监控客户端默认为被动模式,可以修改为主动模式,只需要在客户端配置文件中添加 StartAgents=0 | |
Zabbix主动模式 | Agent主动请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy,zabbix agent首先向ServerActive配置的IP请求获取active items,获取并提交active items数据至server/proxy |
Zabbix被动模式 | Server向agent请求获取监控项的数据,agent返回数据,server打开一个TCP连接,Server发送请求agent.ping,Agent接收到请求并且响应,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) | 发送通知的方式,可以支持Mail、SMS、Scripts等 |
通知(notification) | 通过设置的媒介向用户发送的有关某事件的信息 |
远程命令 | 达到触发器,可以在被监控端执行命令 |
模板(template) | 可以快速监控被监控端,模块包含:item、trigger、graph、screen、application |
web场景(web scennario) | 用于检测web站点可用性,监控HTTP关键词 |
web前端(frontend) | Zabbix的web接口 |
图形(graph) | 监控图像 |
屏幕(screens) | 屏幕显示 |
幻灯(slide show) | 幻灯显示 |
Grafana简介
Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库
Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。 官方支持以下数据源:Graphite、Elasticsearch、InfluxDB、Prometheus、Cloudwatch、MySQL、OpenTSDB和Zabbix等
所需环境
系统 | 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) |
[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.
......
保存
访问安装:http://192.168.2.14/zabbix/
查看是否全部ok;下一步
填写相关信息
填写信息
检查输入内容
点击连接下载配置文件
下载的配置文件如下
把配置文件上传到 /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
上传后直接下一步
注意:用户名Admin A是大写
安装完成;设置字体为中文
解决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
选择两个监控模板即可:**Template App HTTP Service***、***Template DB MySQL******
查看监控主机状态
发现关于MySQL数据库的所有监控项没有图形
设置监控失效的键值
[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值
注意:刚查看是没有数据的需要耐心的等待
[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
[root@agent ~]# yum -y install httpd
[root@agent ~]# systemctl start httpd
[root@agent ~]# echo '
<h1>Zabbix 监控服务<h1/>
' > /var/www/html/index.html
保存
右上角点击>>创建web场景
点击添加
在 监控 >> web 监控 中可以查看(*前提先访问*)
以上关联的 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添加监控项
5.2、监控项添加完成后,创建触发器(根据条件进行触发某个告警操作)
5.3、 创建监控显示图形
5.4、验证
[root@agent ~]# ab -n 5000000 -c 100 -k http://192.168.2.13/ 测试
首页也会显示警告
也可以监控交换机和用户访问的情况可以编写脚本进行完成
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
保存退出
开启后会生成授权码
测试接收情况
[root@zabbix ~]# echo "测试内容"|mail -s "测试一收到没有" 12345678901@qq.com
配置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 ...
6.2、配置监控项邮件报警
配置 zabbix web 网站进行监控项的邮件报警,每一张图片后附带解释和注意事项,大体
步骤为: 监控***>>***创建报警媒介类型***>>***更新用户使用的报警媒介类型***>>***创建动作(根据触发器
触发)***>>*验证
创建报警媒介类型
输入创建的报警媒介类型的名称,指定类型为脚本的方式,并且输入 zabbix_server 端
/usr/local/zabbix/share/zabbix/alertscripts 目录下的脚本名称,确保脚本的归属是 zabbix,并且脚本的权限是 777,下边设置脚本参数,也就是发送邮件的语法:脚本 收件人 标题 内容,必须严格按照此标准填写(*注意:有 . 符号不要忘记*)
创建报警媒介类型成功后,进行确认
配置 zabbix 中的用户所使用的报警媒介类型以及接收邮件的邮箱
选择报警媒介类型为刚刚创建的类型,并且输入接收邮件的地址,指定报警时间和报警级
别
创建动作,也就是发送邮件的动作
输入动作名,动作名最好为英文,可以选择触发这个动作的条件(可以选择触发器=触发器的名称或者选择触发器似触发器名称),作为条件,若不选择触发器的条件,那么任何消息都会提示到邮箱
添加报警动作,一旦此触发器添加触发,添加报警邮件的标题和内容,默认操作步骤持续
时间(修改持续时间为 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}
添加操作(添加接收邮件的用户),步骤(指定邮件发送的次数),仅送到(选择创建的媒
介类型)
添加恢复操作(指故障恢复之后发送邮件的动作),具体步骤和添加操作相同
更新动作创建的完成**(同上)**
开始测试邮件报警
测试:,测试邮件报警情况
[root@agent ~]# dd if=/dev/zero of=/opt/1.txt bs=1G count=5
7.1、先注册企业微信到官方注册省略…
7.2、注册好之后需要创建应用
加入成员
查看部门ID号
**AgentId:**1000003
**Secret :**SiaRe_eMY9zKb4qQ0-LKhAvwgaS7Od_6LC43Kcuiblc
查看企业ID
准备完成后编写脚本在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_server.conf
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
........
...
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #脚本位置如果已经有了就无需添加
保存退出
开始配置zabbix
选择报警媒介类型为刚刚创建的类型,并且输入接收邮件的地址,指定报警时间和报警级
别
创建动作
**默认标题:**故障{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}
**默认标题:**恢复{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/
Ctrl+c 结束命令
测试完成企业微信报警完成了哈哈!!!!
可见名称:可以选择主机名称、DNS名称、ip地址
IP地址可以使用逗号隔开
部署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
验证
我的企业微信已经收的了信息
如果没有收到信息可能是服务器没有连接到外网可以重启一下网卡就可以收到了
在执行以下命令时先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
这里设置密码123.com
7.1、配置Grafana的web界面
启用插件
添加数据源
因画面太大分开截屏
添加仪表盘
输入图形名称
选择数据源和图中需要显示的主机和主机的监控项
创建完成,保存此仪表盘,输入仪表盘的名称
在现有的 zabbix服务 中添加图形
验证最终的仪表盘显示图形(大小可以自己调节)
修改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时侯应注意版本