zabbix监控

Zabbix

Zabbix 简介

Zabbix 由 Alexei Vladishev 于 1998 年创建,现由 Zabbix SIA 公司维护。它采用 C 和 PHP 编写,遵循 GPLv2 开源协议,广泛应用于企业级 IT 运维场景。

🧱 核心组件

复制代码
Zabbix Server:系统核心,负责接收数据、存储配置和执行告警。

Zabbix Agent:部署在被监控主机上,采集本地数据并上报。

Zabbix Proxy:可选组件,用于分布式部署,缓解 Server 压力。

数据库:存储所有监控数据和配置,支持 MySQL、PostgreSQL 等。

Web 前端:基于 PHP 的管理界面,展示监控图表、配置项和告警信息。

功能亮点

复制代码
多协议支持:SNMP、IPMI、JMX、SSH、Telnet 等。

灵活告警机制:支持邮件、短信、微信、钉钉等通知方式。

图形化展示:内置图表、仪表盘、地图等可视化工具。

自动发现:支持主机、服务自动发现与注册。

模板机制:快速批量部署监控项与触发器。

应用场景

复制代码
企业服务器与网络设备监控

云平台与虚拟化环境监控

Web 服务性能与可用性监控

数据中心容量规划与故障预警

Zabbix是基于LNMP架构部署

搭建LNMP架构

安装nginx
bash 复制代码
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

#创建nginx的yum源
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

#安装nginx
yum install nginx -y

#开启服务
systemctl start nginx 
systemctl enable nginx

#防火墙添加通过http
firewall-cmd --permanent --add-service=http --zone=public
firewall-cmd --reload
安装mariadb

配置yum源

bash 复制代码
#配置Mariadb10.5 yum源(zabbix6.0必须使用该版本,低版本不支持)
cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
EOF
#备用源
cat > /etc/yum.repos.d/MariaDB.repo << EOF
[mariadb]
name = MariaDB
baseurl = https://archive.mariadb.org/mariadb-10.5.23/yum/centos7-amd64/
gpgcheck = 0
enabled = 1
EOF

下载mariadb

bash 复制代码
yum -y install mariadb-server mariadb      
#开启服务             
systemctl enable mariadb --now

#自定义设置root密码,默认密码为空,直接回车
mysql_secure_installation

#如果解决出现密码未知,需要重置密码
systemctl stop mariadb
mysqld_safe --skip-grant-tables &
连接数据库执行
bash 复制代码
mysql -u root

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'abc123';
EXIT;
正常重启服务
bash 复制代码
pkill mysqld_safe
systemctl start mariadb

#如果启动失败
ps aux | grep mysql

kill -9   进程号
安装php
bash 复制代码
yum -y install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath
配置nginx支持php
bash 复制代码
#修改php-fpm配置文件,把apache改为nginx
vim /etc/php-fpm.d/www.conf

8行 user = nginx
10行 group = nginx

#配置location,在index中添加index.php。以支持index.php的首页
vim /etc/nginx/conf.d/default.conf

9行  index  index.php index.html index.htm;

#配置php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改
#把fastcgi_param中的/scripts改为$document_root。root是配置php程序放置的根目录。
#29~35行     

location ~ \.php$ {
          root           /usr/share/nginx/html;
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_index  index.php; 
          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
          include        fastcgi_params;
      }
配置php
bash 复制代码
vim /etc/php.ini      #修改PHP配置文件

359 expose_php = Off   #隐藏php版本
202 short_open_tag = On   #支持php短标签

#以下为zabbix优化配置要求
368 max_execution_time = 300  #执行时间
378 max_input_time = 300    #接收数据等待时间
389 memory_limit = 128M    #每个脚本占用内存
656 post_max_size = 16M    #POST数据大小
799 upload_max_filesize = 2M #上传文件大小
800 always_populate_raw_post_data = -1  #需要添加可以用 $HTTP_RAW_POST_DATA 接收post raw data(原始未处理数据)
877 date.timezone = Asia/Shanghai  #时区

#启动php-fpm服务
systemctl enable php-fpm --now

#重启nginx
systemctl restart nginx
测试
测试首页
bash 复制代码
vim /usr/share/nginx/html/info.php

<?php
 phpinfo();
?>
测试连接数据库
bash 复制代码
<?php
 $link=mysqli_connect('127.0.0.1','root','abc123');
 if ($link) echo "success";
 else echo "fail";
?>

注:mysql_connect扩展自 PHP 5.5.0 起已废弃,改用mysqli或pdo_mysql

bash 复制代码
mysql -u root -p

CREATE DATABASE zabbix character set utf8 collate utf8_bin;
GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'admin123';
GRANT all privileges ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
collate的作用

对于mysql中那些字符类型的列,如VARCHAR,CHAR,TEXT类型的列,都需要有一个COLLATE类型来告知mysql如何对该列进行排序和比较。COLLATE会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛选出来的结果,会影响DISTINCTGROUP BYHAVING语句的查询结果。另外,mysql建索引的时候,如果索引列是字符类型,也会影响索引创建,只不过这种影响我们感知不到。凡是涉及到字符类型比较或排序的地方,都会和COLLATE有关。

bash 复制代码
<?php
 $link=mysqli_connect('127.0.0.1','zabbix','admin123');
 if ($link) echo "zabbix success";
 else echo "Zabbix数据库连接失败!";
?>
解决本地无法登录问题(连接成功,可忽略)
bash 复制代码
select user,host from mysql.user;   //有空用户名称占用导致本地无法登录远程可登录
+--------+-----------+
| user   | host      |
+--------+-----------+
| zabbix | %         |
| root   | 127.0.0.1 |
| root   | ::1       |
|        | cacti     |
| root   | cacti     |
|        | localhost |
| root   | localhost |
+--------+-----------+


drop user ''@localhost;

drop user ''@cacti;

flush privileges;
zabbix-server
导入数据库
bash 复制代码
#解压
tar zxvf zabbix-6.0.6.tar.gz

#导入数据库
cd /root/zabbix-6.0.6/database/mysql

mysql -uroot -pabc123 zabbix < schema.sql 
mysql -uroot -pabc123 zabbix < images.sql 
mysql -uroot -pabc123 zabbix < data.sql 
mysql -uroot -pabc123 zabbix < double.sql 
mysql -uroot -pabc123 zabbix < history_pk_prepare.sql

#进入zabbix数据库查看
mysql -uroot -pabc123
use zabbix;
show tables;
共178张表
安装软件包
bash 复制代码
#安装环境包
yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make
# 创建zabbix用户
useradd -s /sbin/nglogin -M zabbix
cd zabbix-6.0.6/

#使得编译器在编译 C 代码时使用 GNU C99 标准
export CFLAGS="-std=gnu99"  
./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp --with-libxml2 --with-ssh2 --with-openipmi --with-zlib --with-libpthread --with-libevent --with-openssl --with-ldap --with-libcurl --with-libpcre

#安装
make install

#检查版本
zabbix_server --version          
修改zabbix-server配置文件
bash 复制代码
vim /etc/zabbix/zabbix_server.conf
38 LogFile=/var/log/zabbix_server.log
123 DBPassword=admin123

#创建日志文件并修改属组和属主
touch /var/log/zabbix_server.log
chown zabbix.zabbix /var/log/zabbix_server.log

#创建并添加systemctl服务管理zabbix-server
vim /usr/lib/systemd/system/zabbix-server.service
#添加
[Unit]

Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service

[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix

[Install]
WantedBy=multi-user.target

#启动zabbix
systemctl start zabbix-server
netstat -ntap | grep 10051

前端页面复制到站点

bash 复制代码
cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/
chown -R nginx:nginx /usr/share/nginx/html/
被监控端
安装agent
bash 复制代码
:146#更新CA
yum update ca-certificates -y

#安装软件包
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum install zabbix-agent2 -y

#启动服务
systemctl enable zabbix-agent2 --now

#修改配置文件
vim /etc/zabbix/zabbix_agent2.conf

13行 PidFile=/var/run/zabbix/zabbix_agentd.pid
32行 LogFile=/var/log/zabbix/zabbix_agentd.log
43行 LogFileSize=0
82行 Server=192.168.108.10           #指向监控服务器
135行 ServerActive=192.168.108.10  #指向监控服务器
146行 Hostname=test     #名称
283行 Include=:32

zabbix管理

zabbix首页登录后

监控主机

配置->模板

定义模板新名称

添加数据库信息

配置->主机->创建主机

主机群组

被监控主机配置

添加后直接生成

邮件服务

在zabbix-server服务器上安装邮箱服务

shell 复制代码
[root@zabbix-server ~]# yum install mailx -y

配置邮箱服务

shell 复制代码
//注意网易邮箱需要开启客户端授权码进行第三方登录
[root@zabbix-server ~]# vim /etc/mail.rc
----文件末尾新增---
set from=abner_0711@163.com
set smtp=smtp.163.com
set smtp-auth-user=abner_0711@163.com
set smtp-auth-password=UDrdk5SnrXH7RN7d
set smtp-auth=login

发送测试邮件

shell 复制代码
[root@zabbix-server ~]# echo "hello world" | mail -s "zb-test" abner_0711@163.com

创建脚本目录,并重启zabbix服务

shell 复制代码
[root@zabbix-server local]# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@zabbix-server local]# mkdir -p /usr/lib/zabbix/alertscripts
[root@zabbix-server local]# chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts
[root@zabbix-server local]# systemctl restart zabbix-server.service

编写邮件发送脚本

shell 复制代码
[root@zabbix-server local]# vim mailx.sh
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

权限设置

shell 复制代码
[root@zabbix-server alertscripts]# touch /tmp/mailx.log 
[root@zabbix-server alertscripts]# chown -R zabbix.zabbix  /tmp/mailx.log 
[root@zabbix-server alertscripts]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh

测试脚本发送邮件

shell 复制代码
[root@zabbix-server alertscripts]# ./mailx.sh abner_0711@163.com "say hi" "This is test"

已收到邮件

告警服务

管理->报警媒介类型

创建媒体类型

脚本参数

复制代码
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

添加成功

管理->用户

点击Admin进入

选择报警媒介

添加

类型选择刚刚创建的Mail-Test

设置完成后点击添加

一定要进行更新

配置->动作->Trigger actions

定义操作

复制代码
默认接收人 : {TRIGGER.STATUS}:{TRIGGER.NAME}
默认信息:

告警主机:{HOST.NAME}
告警  IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
事件  ID:{EVENT.ID}

恢复操作

最后点击添加

动作添加完成

监视主页面仪表盘

在被监控端关闭数据库服务

shell 复制代码
[root@client ~]# systemctl start mysqld

等待一段时间后

检查接收告警邮件

相关推荐
牛奶咖啡134 天前
zabbix实现监控Apache、Nginx、php-fpm应用的实操保姆级流程
nginx·apache·zabbix·php-fpm·zabbix监控apache·zabbix监控nginx·zabbix监控php-fpm
小小的木头人6 天前
APT 安装方式(适合生产环境)Zabbix 6.4 LTS
运维·zabbix
MOYIXIAOWEIWEI7 天前
rocky 9.5系统安装zabbix监控实现邮件告警
ubuntu·zabbix·rocky
牛奶咖啡138 天前
zabbix实现配置监控Windows设备、SNMP协议设备的全流程实操教程
zabbix·配置监控windows设备·使用snmp协议监控群晖nas·snmp监控项oid·群晖nas监控模板·配置agent端自主自动注册
牛奶咖啡138 天前
zabbix自动发现与自动注册的实操保姆级教程
zabbix·zabbix的自动网络发现·zabbix的自动发现原理·zabbix的自动注册·zabbix客户端的主动模式·zabbix客户端的被动模式·zabbix的低级别发现
奥尔特星云大使9 天前
zabbix安装部署
zabbix
奥尔特星云大使9 天前
CentOS 7 上通过 RPM 包安装 Zabbix 4.x
linux·centos·zabbix
心一信息13 天前
grafana及zabbix在linux上的部署
linux·zabbix·grafana
xx.ii15 天前
Zabbix模板,监控项,图形的使用方法
服务器·网络·zabbix