前文提要:本文为整个zabbix的介绍及配置以及案例
目录
一.监控的概述
二.zabbix的概述
1.zabbix是什么
2.zabbix的作用
3.zabbix的特性
4.zabbix系统的组成
5.zabbix 3.2.4的软件环境要求
三.zabbix的安装
1.环境准备
2.部署监控服务器
3.部署被监控主机Zabbix Agent
四.配置及使用Zabbix监控系统
1.添加监控主机
2.自定义Zabbix监控项目
3.创建监控模板
4.实现Zabbix报警功能
6.设置邮件
8.自动发现规则
9.创建动作
10.添加新的虚拟机
五.Zabbix主动监控
1.添加被监控主机
2.创建主动监控的监控模板
3.添加监控主机
六.拓扑图与聚合图形
1.创建拓扑图
2.创建聚合图形
七.自定义监控案例
1.监控Nginx服务状态
2.创建自定义key
2.监控网络连接状态
一.监控的概述
监视并控制各种服务器(网站服务、数据库服务器)的网络流量、访问量、操作系统的运行情况.硬件资源使用情况、、服务的运行状态
使用操作系统自带命令控制
计划任务执行自己编写的监控脚本
搭建监控服务器实现对所有服务器的监控
监控的目的
报告系统运行状况
-每一部分必须同时监控
-内容包括吞吐量、反应时间、使用率等
提前发现问题
-进行服务器性能调整前,知道调整什么
-找出系统的瓶颈在什么地方
二.zabbix的概述
1.zabbix是什么
zabbix是一款基于web页面的、开源的、企业级的,可以分布式部署的监控软件。
2.zabbix的作用
监控windows和Linux主机上的软硬件状态。 监控各网络设备,如路由器、交换机、防火墙、f5、打印机等。 发送告警通知。 通过web页面及图形展示监控数据。
3.zabbix的特性
1)由server和agent程序协同工作,如果是分布式监控还需要proxy程序。 监控方式站在agnet的角度分为主动监控(agent active)和被动监控(agent)。 主动监控 当监控条目配置为agent active时,即为主动监控,此时agent会主动根据配置好的时间间隔去向server或proxy询问要监控哪些item,然后将item的数据主动提交给server或proxy。 被动监控 当监控条目配置为agent时,即为被动监控,此时server或proxy会主动向agent请求它要监控的item的数据,然后agent会将数据发送给server或proxy。支持的监控手段
2)所谓监控手段即server或proxy通过什么方式来收集监控到的数据,常用的有: SNMP(polling,trapping) IPMI(监控硬件状况) JMX(监控java应用) 自定义监测(自定义各类监控脚本监测) 3)告警阈值定义 在trigger中定义告警阈值或条件 存储于后台数据库中 可以自定义告警升级机制 调用action实现自动化动作
4)监控数据呈现 zabbix通过内置的画图软件将监控到的数据实时通过web页面呈现出来。 历史数据存储 存储于数据库中 支持多种数据库,mysql,db2,oracle,postgresql,sqlite 存储时长可自定义 自动清理过期历史数据
5)监控主机配置 通过添加监控设备方式添加 可以使用模板进行配置
6) 模板的使用 模板包含item,trigger,action等一系列单个主机支持的元素 模板中可以使用组监控 模板可以继承
7) 自动发现功能 网络设备自动发现 agent自动注册 自动发现文件系统、网卡、SNMP OID
8)web界面 web前端采用php编写 界面样式可以灵活自定义 自带操作日志审计
9)zabbix API 供第三方程序接入 权限系统 可以对用户进行分组认证及授权。
10)agent端 支持Linux和Windows系统。 守护进程 基于C语言开发。
4.zabbix系统的组成
zabbix_server 服务端守护进程。 负责处理客户端主动送上来以及它主动去取回的数据。 通过web界面呈现这些数据。
zabbix_agentd 客户端守护进程。 负责收集客户端上的数据并发送给server或proxy。
zabbix_get 服务端工具。 在服务器上执行,用于手动收集客户端的监控数据,可以用于监控测试或者排错。 zabbix_sender 客户端工具。 对于非常耗时间的检测项,可以在其检测完成以后,通过它将数据发送给server或者proxy。 需要与trapper配合使用。
zabbix_proxy 类似于server,但它只是一个中转站,当跨地区,跨机房部署zabbix系统时,需要用到它,以将它收集到的数据发送给server。
zabbix_java_gateway 类似于agentd程序。 只用于java应用程序的监控。 只能主动去获取数据,类似于agent active。 最终将收集到的数据发送给server或proxy。
zabbix_web 构建zabbix专用的站点,将监控数据以web页面的形式呈现出来,并对zabbix系统进行配置设定。
5.zabbix 3.2.4的软件环境要求
zabbix 3.2.4 web需求php的环境如下:
三.zabbix的安装
1.环境准备
硬件:CentOS7.5
软件:
gcc
pcre-devel
openssl
nginx-1.12.2.tar.gz
php
php-mysqlnd
php-fpm
mysql-community*
php-xml
php-json
net-snmp-devel
curl-devel
autoconf
libevent-devel
php-gd
zabbix-3.4.4.tar.gz
php-bcmath
php-mbstring
autoconf
nginx所需模块:
--with-http_ssl_module
zabbix-server所需模块
--enable-server
--enable-proxy
--enable-agent
--with-mysql=/usr/bin/mysql_config
--with-net-snmp
--with-libcurl
zabbix-agent所需模块
--enable-agent
2.部署监控服务器
1)zabbix服务端搭建LNMP环境
[root@zabbixserver ~]# yum -y install gcc pcre-devel openssl-devel
[root@zabbixserver ~]# tar -xf nginx-1.12.2.tar.gz
[root@zabbixserver ~]# cd nginx-1.12.2
[root@zabbixserver nginx-1.12.2]# ./configure --with-http_ssl_module
[root@zabbixserver nginx-1.12.2]# make && make install
[root@zabbixserver ~]# yum -y install php php-mysql php-fpm
[root@zabbixserver ~]# yum -y install mysql-community*
2)修改Nginx配置文件
配置Nginx支持PHP动态网站,因为有大量PHP脚本需要执行,因此还需要开启Nginx的各种fastcgi缓存,加速PHP脚本的执行速度
[root@zabbixserver ~]# vim /usr/local/nginx/conf/nginx.conf
… …
http{
… …
fastcgi_buffers 8 16k; #缓存php生成的页面内容,8个16k
fastcgi_buffer_size 32k; #缓存php生产的头部信息,32k
fastcgi_connect_timeout 300; #连接PHP的超时时间,300秒
fastcgi_send_timeout 300; #发送请求的超时时间,300秒
fastcgi_read_timeout 300; #读取请求的超时时间,300秒
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf; #[注意这里别出错]
}
....
3)启动服务
[root@zabbixserver ~]# systemctl enable mysqld --now
[root@zabbixserver ~]# systemctl enable php-fpm --now #设置开机并自启
[root@zabbixserver ~]# /usr/local/nginx/sbin/nginx #启动服务
[root@zabbixserver ~]# echo /usr/local/nginx/sbin/nginx >> /etc/rc.local
[root@zabbixserver ~]# chmod +x /etc/rc.local
#通过rc.local设置开机自启
[root@zabbixserver ~]# firewall-cmd --set-default-zone=trusted
[root@zabbixserver ~]# setenforce 0
[root@zabbixserver ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
4)部署监控服务器Zabbix Server
源码安装Zabbix Server
[root@zabbixserver lnmp_soft]# yum -y install net-snmp-devel \
curl-devel autoconf libevent-devel
#安装相关依赖包
[root@zabbixserver lnmp_soft]# tar -xf zabbix-3.4.4.tar.gz
[root@zabbixserver lnmp_soft]# cd zabbix-3.4.4/
[root@zabbixserver zabbix-3.4.4]# ./configure --enable-server \
--enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config \
--with-net-snmp --with-libcurl
5)创建并初始化数据库
[root@zabbixserver ~]# grep -i password /var/log/mysqld.log
# 修改数据库的root用户密码为NSD2021@tedu.cn
[root@zabbixserver ~]# mysqladmin -uroot -p'A8cCwrjefY(v' password NSD2021@tedu.cn
#原密码在上面的配置
[root@zabbixserver ~]# mysql -uroot -pNSD2021@tedu.cn
mysql> create database zabbix default charset utf8mb4;
mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
[root@zabbixserver mysql]# ls
schema.sql images.sql data.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
注.该数据包无法上传,有需要联系我
如何测试?
[root@zabbixserver ~]# mysql -uzabbix -pzabbix -h localhost zabbix
#-u指定用户名,-p指定密码,-h指定服务器IP,最后的zabbix是数据库名称
#使用zabbix账户(密码为zabbix)连接localhost服务器上面的zabbix数据库
mysql> show tables
#查看有没有数据表
mysql> exit
#退出数据库
6)修改zabbix_server配置并启动监控服务
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_server.conf
DBHost=localhost
# 85行,定义哪台主机为数据库主机,localhost为本机
DBName=zabbix
#95行,设置数据库名称
DBUser=zabbix
#111行,设置数据库账户
DBPassword=zabbix
#119行,设置数据库密码
LogFile=/tmp/zabbix_server.log
#38行,日志的位置,排错使用,该行仅查看即可
[root@zabbixserver ~]# useradd -s /sbin/nologin zabbix
通过创建service文件管理zabbix服务
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_server.service
[Unit]
Description=zabbix server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_server.pid
ExecStart=/usr/local/sbin/zabbix_server
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@zabbixserver ~]# systemctl enable zabbix_server --now
[root@zabbixserver ~]# ss -ntulp |grep zabbix_server #确认连接状态,端口10051
tcp LISTEN 0 128 *:10051 *:*
users:(("zabbix_server",pid=23275,fd=4),("zabbix_server",pid=23274,fd=4)
7) 修改Zabbix_agent配置文件,启动Zabbix_agent服务
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.2.5 #93行,允许哪些主机监控本机(主动监控)
ServerActive=127.0.0.1,192.168.2.5 #134行,允许哪些主机通过主动模式监控本机(被动监控)
Hostname=zabbix_server #145行,设置本机主机名(名称可以任意)
LogFile=/tmp/zabbix_agentd.log #设置日志文件(不需要修改)
UnsafeUserParameters=1 #280行,是否允许自定义监控传参(0不允许)
编写zabbix_agentd的service文件,通过systemd管理服务
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]
Description=zabbix agent
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@zabbixserver ~]# systemctl enable zabbix_agentd --now
[root@zabbixserver ~]# ss -ntulp |grep zabbix_agentd #查看端口信息为10050
tcp LISTEN 0 128 *:10050 *:*