Zabbix简介
Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司 Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务 Zabbix 是一个企业级分布式开源监控解决方案 Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择 Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用 Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使
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)?? ?幻灯显示 ?
所需环境
系统 | IP | 名称 | 角色 | CentOS 7.4 | 192.168.10.209 | zabbix | LAMP、zabbix、grafana(版本8.0) | CentOS 7.4 | 192.168.10.210 | agent | agent(FTP,Web) |
一、安装zabbix server服务端
[root@zabbix ~]# echo '
192.168.10.209 zabbix
192.168.10.210 agent
' >> /etc/hosts ???
添加一个网卡连接外网
[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
[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.repos.d]# ntpdate ntp1.aliyun.com
?2 Jan 12:27:10 ntpdate[2937]: adjust time server 120.25.115.20 offset 0.000401 sec
启动mysql
[root@zabbix yum.repos.d]# systemctl start mariadb
[root@zabbix yum.repos.d]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@zabbix yum.repos.d]# mysqladmin -u root password 123.com
启动httpd
[root@zabbix yum.repos.d]# systemctl start httpd
[root@zabbix yum.repos.d]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
下载zabbix
[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
[root@zabbix zabbix-4.4.7]# make &&make install
[root@zabbix zabbix-4.4.7]# mysql -u root -p123.com
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> use zabbix;
MariaDB [(none)]> source /root/zabbix-4.4.7/database/mysql/schema.sql;
MariaDB [zabbix]> source /root/zabbix-4.4.7/database/mysql/images.sql;
MariaDB [zabbix]> source /root/zabbix-4.4.7/database/mysql/data.sql;
MariaDB [zabbix]> grant all on zabbix.* to zabbix@'192.168.10.209' identified by 'zabbix';
MariaDB [zabbix]> flush privileges;
MariaDB [zabbix]> exit
Bye
[root@zabbix zabbix-4.4.7]# groupadd zabbix
[root@zabbix zabbix-4.4.7]# useradd -r -g zabbix zabbix
[root@zabbix zabbix-4.4.7]# mkdir /usr/local/zabbix/logs
[root@zabbix zabbix-4.4.7]# chown zabbix:zabbix /usr/local/zabbix/ -R
[root@zabbix zabbix-4.4.7]# vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/tmp/zabbix_server.pid
DBHost=192.168.10.209
DBName=zabbix
DBUser=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
Timeout=4 #与AGNET/SNMP 设备和其他外部通信超时设置,单位:秒s
LogSlowQueries=3000 #与AGNET/SNMP 设备和其他外部通信超时设置,单位:秒s
StatsAllowedIP=127.0.0.1,192.168.10.0/24 #与AGNET/SNMP 设备和其他外部通信超时设置,单位:秒s
:%g/^#/d 删除以#开头的内容
:%g/^$/d 删除空行
保存退出
[root@zabbix zabbix-4.4.7]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid #运行的PID 文件
Server=127.0.0.1,192.168.10.209 #zabbix的主机IP
ServerActive=192.168.10.209 #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 zabbix-4.4.7]# netstat -utpln |grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 31494/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 31494/zabbix_server
[root@zabbix zabbix-4.4.7]# /usr/local/zabbix/sbin/zabbix_agentd
[root@zabbix zabbix-4.4.7]# netstat -anptu |grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 31567/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 31567/zabbix_agentd
[root@zabbix zabbix-4.4.7]# mkdir /var/www/html/zabbix
[root@zabbix zabbix-4.4.7]# mv /root/zabbix-4.4.7/frontends/php/* /var/www/html/zabbix
[root@zabbix zabbix-4.4.7]# 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 zabbix-4.4.7]# systemctl restart httpd
[root@zabbix zabbix-4.4.7]# 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.10.209/zabbix/
查看是否全部ok;下一步
填写相关信息
检查输入的内容
?
点击连接下载配置文件
?
下载的配置文件如下
?
把配置文件上传到/var/www/html/zabbix/conf/下
[root@zabbix conf]# cd /var/www/html/zabbix/conf [root@zabbix conf]# ls
maintenance.inc.php ?zabbix.conf.php ?zabbix.conf.php.example
上传完成后直接下一步
?
安装完成;设置字体为中文
?
?
?
三、监控zabbix端的OS、MySQL、Httpd
创建主机zabbix服务
?
选择监控模板:Template?App HTTP Service、Template DB MySQL、Template OS Linux by Zabbix agent
?
?
?
?
?
查看监控主机状态
?
?
解决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
发现关于MySQL数据库的所有监控项没有图形
解决方法
设置监控失效的键值
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid
Server=127.0.0.1,192.168.10.209
ServerActive=192.168.10.209
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
yum -y install psmisc
[root@zabbix ~]# mysql -uroot -p123.com
MariaDB [(none)]> grant all on *.* to 'root'@'192.168.10.209' identified by '123.com';
Query OK, 0 rows affected (0.10 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.03 sec)
MariaDB [(none)]> quit
Bye
[root@zabbix ~]# vim /etc/my.cnf
[mysqld]
……
skip-grant-table
……
[root@zabbix ~]# systemctl restart mariadb
[root@zabbix ~]# killall -9 zabbix_server
[root@zabbix ~]# killall -9 zabbix_agentd
[root@zabbix ~]# netstat -utpln | grep zabbix
[root@zabbix ~]# /usr/local/zabbix/sbin/zabbix_server
[root@zabbix ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@zabbix ~]# netstat -utpln | grep 1005
tcp ???????0 ?????0 0.0.0.0:10050 ??????????0.0.0.0:* ??????????????LISTEN ?????34551/zabbix_agentd
tcp ???????0 ?????0 0.0.0.0:10051 ??????????0.0.0.0:* ??????????????LISTEN ?????34479/zabbix_server
tcp6 ??????0 ?????0 :::10050 ???????????????:::* ???????????????????LISTEN ?????34551/zabbix_agentd
tcp6 ??????0 ?????0 :::10051 ???????????????:::* ???????????????????LISTEN ?????34479/zabbix_server
验证:打开 zabbix 的 web 界面,查看?mysql 服务器的监控界面
注意:刚查看是没有数据的需要耐心的等待
?
安装及配置agent代理端FTP服务器
[root@agent ~]# echo '
192.168.10.209 zabbix
192.168.10.210 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?vsftpd libxml2-devel libcurl-devel pcre-devel
[root@agent ~]# ntpdate ntp1.aliyun.com
?2 Jan 17:12:57 ntpdate[15598]: adjust time server 120.25.115.20 offset -0.000174 sec
[root@agent ~]# systemctl start vsftpd
[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 zabbix-4.4.7]# groupadd zabbix
[root@agent zabbix-4.4.7]# useradd -r -g zabbix zabbix
[root@agent zabbix-4.4.7]# chown zabbix:zabbix /usr/local/zabbix/ -R
[root@agent zabbix-4.4.7]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.10.209
ServerActive=192.168.10.209
Hostname=agent
:%g/^#/d 删除以#开头的内容
:%g/^$/d 删除空行
保存
[root@agent zabbix-4.4.7]# /usr/local/zabbix/sbin/zabbix_agentd
[root@agent zabbix-4.4.7]# netstat -anptu |grep zabbix
tcp ???????0 ?????0 0.0.0.0:10050 ??????????0.0.0.0:* ??????????????LISTEN ?????24221/zabbix_agentd
tcp6 ??????0 ?????0 :::10050 ???????????????:::* ???????????????????LISTEN ?????24221/zabbix_agentd
1.登录zabbix的web界面,进行添加agent主机
2.添加agent主机完成,手动添加ftp服务图形显示
?
?
?
?
?
3.添加模块CPU
?
?
?
4、把web添加进来
[root@agent zabbix-4.4.7]# yum -y install httpd
[root@agent zabbix-4.4.7]# systemctl start httpd
[root@agent zabbix-4.4.7]# echo ' ???????????
> <h1>Zabbix 监控服务<h1/>
> ' > /var/www/html/index.html
?
??
5、自定义监控项,创建项目,触发器,图形,验证监控效果
以上关联的 Template OS Linux by Zabbix agent?模板基本涵盖了所有系统层面的监控,包括了我们最关注的几项:ping、load、cpu 使用率、memory、disk、网卡流量等等,当然有些触发器的阀值可能需要根据服务器的自身情况进行修改
也可以添加自定义服务器内存使用检测项,在此配置一个监控项为:内存使用 70M 进行警告提醒
[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}'
126
在zabbix上查看监控值
[root@zabbix fonts]# /usr/local/zabbix/bin/zabbix_get -s 192.168.10.210 -k memory_usage
126
5.1使用web添加监控项
?
?
5.2、监控项添加完成后,创建触发器(根据条件进行触发某个告警操作)
?
?
?
5.3、 创建监控显示图形
5.4验证
[root@agent ~]# ab -n 5000000 -c 100 -k http://192.168.10.210/
?
首页也会显示警告
?
|