zabbix安装部署及监控配置
- 构建LAMP环境: yum -y install httpd mariadb mariadb-server php php-mysql
- 安装zabbix需要的php库,网络源: yum install php-bcmath php-gd php-ldap php-mbstring php-xml -y
- 上传并解压zabbix源: tar xf zabbix-4.4.6.tar.gz -C /opt/
编写yum源: vim /etc/yum.repos.d/zabbix.repo
[zabbix4-4-6]
name=Zabbix4-4-6
baseurl=file:///opt/zabbix4-4-6
enabled=1
gpgcheck=0安装依赖包: yum install OpenIPMI OpenIPMI-libs OpenIPMI-modalias unixODBC fping -y
- 安装zabbix: yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get -y
- 启动数据库: systemctl enable —now mariadb
- 设置密码: mysqladmin -uroot password 123456
- 登录数据库,并创建zabbix数据库: mysql -uroot -p123456 -e ‘create database zabbix character set utf8 collate utf8_bin;’
- 创建登录用户: mysql -uroot -p123456 -e ‘grant all privileges on zabbix.* to zabbix@localhost identified by “密码”;’
- 导入数据库: zcat /usr/share/doc/zabbix-server-mysql-4.4.6/create.sql.gz | mysql -uzabbix -pzabbix zabbix
- 编辑配置: vim /etc/zabbix/zabbix_server.conf
124行 # DBPassword= 取消注释并写上数据库密码
- 查看zabbix在httpd里面的别名: vim /etc/httpd/conf.d/zabbix.conf
修改20行php时区: # php_value date.timezone Europe/Riga 取消注释并更改为: php_value date.timezone Asia/Shanghai
- 启动zabbix的web页面: systemctl enable zabbix-server zabbix-agent httpd mariadb —now
- 访问 ip:/zabbix/setup.php来安装 zabbix

- 检查环境,确认所有选项为ok

- 输入连接数据库的详细信息

- 输入zabbix服务器的主机名或ip,以及安装可选项

- 确认配置

- 完成安装

- 输入ip/zabbix/index.php来登入 初始密码为: Admin/zabbix

- 修改为中文界面


- 配置主机,启动本主机,如果没有启动点后面的停用,点确认即可启用
zabbix监控其他主机
- 安装配置监控端: rpm -Uvh zabbix-agent-4.4.6-1.el7.x86_64.rpm
- 配置监控端文件: vim /etc/zabbix/zabbix_agentd.conf
改: Server=127.0.0.1 为: Server=192.168.1.63
改: ServerActive=127.0.0.1为: ServerActive=192.168.1.63
改: Hostname=Zabbix server 为: Hostname=主机名
- 启动服务: systemctl enable –now zabbix-agent
- 验证是否启动: netstat -anutp |grep 10050
- 在服务端测试通讯: zabbix_get -s 192.168.1.64 -p 10050 -k system.uname
参数说明: -s 指定客户端ip或者主机名 -p 指定端口 -k 指定想获取的参数key
zabbix_agentd -p 可以寻找自己想要的参数
- 将主机添加到zabbix服务器上并监控




- 定义主机模板




- 查看监控项
解决zabbix中文乱码问题
- 将楷体字体导入到服务器中,

- 修改权限: chown zabbix:zabbix simkai.ttf
- 移到到字符目录下: mv simkai.ttf /usr/share/zabbix/assets/fonts/
- 将之前字体改名: mv graphfont.ttf{,.bak}
- 将导入字体改成之前字体名字: mv simkai.ttf graphfont.ttf
- 重启web服务: systemctl restart httpd
-
修改监控项报警 (以磁盘空间小于20G报警为例)
1.找到模板

2.创建监控项


键值可以找到自己想要监控项目对应的键值

3.检测
在创建确认之前,可以在服务端向命令端发起查询键值,如果返回数值就证明可用
zabbix_agentd -p | grep vfs.fs.size[fs,] 查询是否有这个键值
https://www.zabbix.com/documentation/4.0/manual/config/items/itemtypes/zabbix_agent 官方查询文档
4.创建监控
5. 创建图形,便于查看数据

6. 创建触发器报警



使用Grafana展示zabbix监控图标
上传包并安装: yum -y install grafana-6.6.2-1.x86_64.rpm
- 安装zabbix支持包: unzip grafana-zabbix-v3.10.5.zip -d /var/lib/grafana/plugins/
- 启动: systemctl start grafana-server
- 登录web页面: http://ip:3000/login 用户名: admin/admin
- 登录,修改密码

- 启用插件


- 添加数据源


zabbix api地址: http://ip/zabbix/api_jsonrpc.php
- 启动仪表盘


- 查看效果
监控apache
- 监控端安装: yum -y install httpd
- 安装监控rpm包: rpm -ivh zabbix-agent
- 修改配置文件: vim /etc/zabbix/zabbix_agentd.conf
找到Server 和 ServerActive 后面修改成server的ip地址
- 修改httpd文件: vim /etc/httpd/conf/httpd.conf 添加到最后一行即可
ExtendedStatus On #开启httpd状态检测
SetHandler server-status
Order allow,deny # 开启权限
Allow from 127.0.0.1 192.168.1.0/24 # 指定可以访问的ip网段
- 重启: systemctl restart httpd
- 主机关联模板:





- httpd压力测试下,看数据变化: ab -n 1000 -c 10 测试地址 在10秒内,访问1000次
监控mysql或mariadb
- 安装mariadb: yum -y install mariadb-server
- 启动: systemctl enable —now mariadb
- 设置管理员密码: mysqladmin -uroot password 密码
- 设置zabbix监控时的账号: mysql -uroot -p管理员密码 -e ‘grant usage on . to zabbix@’localhost’ identified by “密码”;’
- 测试验证: mysql -uzabbix -p密码
- 复制监控模板: cp /usr/share/doc/zabbix-agent-4.4.6/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/
- 检查zabbix-agent配置文件: vim /etc/zabbix/zabbix_agentd.conf
搜索关键字: zabbix_agentd.d 查看是否有/etc/下路径,如果被注释则取消注释,如果没有则自定义一个: Include=/etc/zabbix/zabbix_agentd.d/*.conf
- 编辑数据库自动登入: vim /etc/my.cnf.d/client.cnf
[client-mariadb]
user=zabbix
password=zabbix
- 验证: 配置自动登入的文件后,直接敲mysql即可登录,进行验证
数据库登入后查询: select user(); 查询当前用户
- 给主机添加监控模板







- 数据库压测查看数据变化: mysqlslap -uroot -p密码-concurrency=100 —number-of-queries=1000 —number-int-cols=5 —number-char-cols=20 —auto-generate-sql
—concurrency=100 #指定同时有 100 个客户端连接; concurrence [kənˈkʌrəns] 同时,并发
—number-of-queries=1000 #指定总的测试查询次数(并发客户端数 * 每个客户端的查询次数)
—auto-generate-sql #作用是自动生成测试 SQL。自动测试时,创建的表结构非常简单,只有两列,实际的产品环境肯定会更复杂,可以使用参数指定列的数量和类型。
–number-int-cols=5 #指定生成 5 个 int 类型的列
–number-char-cols=20 #指定生成 20 个 char 类型的列
返回数据结果:
Average number of … #运行所有语句的平均秒数
Minimum number of … #运行所有语句的最小秒数
Maximum number of … #运行所有语句的最大秒数
Number of clients … #客户端数量
Average number of queries per client #每个客户端运行查询的平均数
配置邮件报警
- 安装邮件服务: yum -y install mailx
- 编辑邮件报警配置文件: vim /etc/mail.rc 在末尾添加
set from= xxx # 发件人邮箱
set smtp= xxx # 邮件smtp地址
set smtp-auth-user= xxx # 发件人用户
set smtp-auth-password=xxxxx # smtp授权码
set smtp-auth=login
- 检测邮件是否能发送: echo “邮件内容” | mailx -s “主题” 收件人邮箱
- 编写邮件脚本: vim /usr/lib/zabbix/alertscripts/sendmail.sh
!/bin/bash
messages=echo $3 | tr '\r\n' '\n'
subject=echo $2 | tr '\r\n' '\n'
echo “${messages}” | mailx -s “${subject}” $1
- 授权: chown zabbix.zabbix /usr/lib/zabbix/alertscripts/sendmail.sh && chmod +x /usr/lib/zabbix/alertscripts/sendmail.sh
- 查看文件路径: vim /etc/zabbix/zabbix_server.conf
搜索关键字 AlertScriptsPath ,如果是/usr/lib/zabbix/alertscripts目录则不用修改,如果被注释删除注释,不是则手动添加: AlertScriptsPath=/usr/lib/zabbix/alertscripts
- 创建报警媒介:



添加脚本参数依次如下: {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
- 给用户添加邮件:



- 创建报警动作


修改操作,邮件内容为:
默认标题:故障{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}





- 可以手动制造故障来测试邮件发送性
- 报警邮件发送查看:
优化数据收集频率以及触发时间
- 以mysql模板为例



主要看表达式中使用哪个监控项进行判断的。mysql 的表达式明显可以看到根据 mysql.ping 进行判断。


自动发现、自动注册
- 适用于同一网段其他主机自动加入监控








发送模版
默认标题
自动发现主机: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}
消息内容
发现规则: {DISCOVERY.RULE.NAME}
设备 IP:{DISCOVERY.DEVICE.IPADDRESS}
设备 DNS: {DISCOVERY.DEVICE.DNS}
设备状态: {DISCOVERY.DEVICE.STATUS}
设备运行时间: {DISCOVERY.DEVICE.UPTIME}
设备服务端口: {DISCOVERY.SERVICE.NAME}
- 自动发现后加入主机组


- 自动发现主机添加监控模板


- 自动发现主机启用



- 自动发现机器安装监控插件: rpm -ivh zabbix-agent
- 修改配置文件: vim /etc/zabbix/zabbix_agentd.conf
修改Server和 ServerActive 为服务端ip 修改 Hostname = 主机名
- 启动插件: systemctl enbale zabbix-agent —now
- 随后等待自动发现




