1.zabbix基础搭建

Zabbix 是由 Alexei Vladishev 开发的⼀种⽹络监视、管理系统,基于 Server-Client 架构。可⽤于监视各种⽹络服务、服务器和⽹络机器等状态。 使⽤各种 Database-end 如 MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 储存资料。Server 端基于 C语⾔、Web 管理端 frontend 则是基于 PHP 所 制作的。 Zabbix 可以使⽤多种⽅式监视。可以只使⽤ Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP … 各种协议定制监视。  在客户端如 UNIX, Windows 中安装 Zabbix Agent 之后,可监视 CPU Load、⽹络使⽤状况、硬盘容量等各种状态。⽽就算没有安装 Agent 在监视对象 中,Zabbix 也可以经由 SNMP、TCP、ICMP、利⽤ IPMI、SSH、telnet 对⽬标进 ⾏监视。 Zabbbix⾃带的Item⾜够满⾜普通⼩公司的监控需求,对于⼤公司也可以设定⾃定义 的Item,⾃动⽣成报表,也有API可以和其他系统集成

zabbix就是可以满⾜理想化的监控系统需求

⽀持⾃定义监控脚本,提供需要输出的值即可 zabbix存储的数据库表结构稍有复杂但是逻辑清晰 zabbix存在模板的概念,可以⽅便的将⼀组监控项进⾏部署 zabbix每⼀个item也就是监控项,都可以看到历史记录,且web界⾯友好 zabbix有强⼤的Trigger(触发器)定义规则,可以定义复杂的报警逻辑 zabbix提供了ack报警确认机制 zabbix⽀持邮件,短信,微信等告警 zabbix在触发告警后,可以远程执⾏系统命令 zabbix有原⽣的PHP绘图模块

1)基础配置

准备三台虚拟机,搭建zabbix的服务器的配置要在2h2g+,另外两台无所谓

虚拟机名称 虚拟机ip 虚拟机配置
zabbix_server 192.168.200.131 2H2G100G
zabbix_agent1 192.168.200.132 无要求
zabbix_agent2 192.168.200.133 无要求

三台虚拟机都进行如下操作:修改名称——关闭防火墙——配置yum源x

1.1修改虚拟机名称

将三台虚拟机修改成指定名称

Zabbix搭建与简单运维 - 图1

1.2关闭防火墙

  1. systemctl stop firewalld
  2. systemctl disable firewalld
  3. setenforce 0
  4. sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

1.3配置yum源

  1. rm -rf /etc/yum.repos.d/CentOS-* #删除默认yum源
  2. curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo #设置阿里云yum源
  3. rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm #获取阿里云官方的zabbix包
  4. sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo #添加repo源
  5. yum clean all && yum repolist #查看yum源是否配置成功

2)yum安装zabbix

此操作只需要在安装zabbix的server端即可。

  1. yum install zabbix-server-mysql zabbix-agent -y #安装zabbix
  2. yum install centos-release-scl -y #安装rh插件
  1. **注意**:安装 Software Collections,便于后续安装⾼版本的 php,默认 yum 安装的 php 版本为 5.4 过低。 SCL(Software Collections)可以让你在同⼀个操作系统上安装和使⽤多个 版本的软件,⽽不会影响整个系统的安装包。 软件包会安装在/opt/rh⽬录下 为了避免系统⼴泛冲突,/opt/rh包安装在⽬录中,例如,这允许你在CentOS 7机器上安装Python 3.5,⽽不会删除或⼲扰Python 2.7. /etc/opt/rh/软件包的所有配置⽂件都存储在⽬录中相应的⽬录中,SCL 提供了定义使⽤所包含应⽤程序所需的环境变量的shell脚本,例如,PATH LD_LIBRARY_PATHMANPATH ,这些脚本存储在⽂件系统中,作为 /opt/rh/package-name/enable

3)配置前端源

3.1修改zabbix前端yum源

  1. vim /etc/yum.repos.d/zabbix.repo #进入repo配置文件

Zabbix搭建与简单运维 - 图2

3.2安装zabbix前端环境

  1. yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -y #前端环境
  2. yum install mariadb-server -y #安装mariadb数据库
  3. systemctl enable --now mariadb #设置mariadb开机自启

3.3配置数据库

安装数据,创建用户,给予权限,导入zabbix的表。

  1. mysql_secure_installation #初始化数据库
  2. Enter current password for root (enter for none):
  3. #输入密码,因为没有密码直接回车
  4. Set root password? [Y/n] y #是否设置密码
  5. Remove anonymous users? [Y/n] y #删除其他数据库用户
  6. Disallow root login remotely? [Y/n] n #是否禁止远程登录管理员账号
  7. Remove test database and access to it?[y/n] #是否删除test数据库
  8. Reload privilege tables now? [Y/n] y #是否重载权限表

登录数据库,使⽤root⽤户登录mariadb,建⽴zabbix数据库,这⾥的编码设置,⾮常重要,否则zabbix⽆法安装。

  1. create database zabbix character set utf8 collate utf8_bin;
  2. #创建zabbix库,字符设置为uft8,区分大小写
  3. create user zabbix@localhost identified by 'zabbix';
  4. #创建用户zabbix,本地登录,密码为zabbix
  5. grant all privileges on zabbix.* to zabbix@localhost;
  6. #在zabbix库中所有表,所有的权限给zabbix用户
  7. flush privileges;
  8. #刷新用户
  9. quit;
  10. #退出

导入表。默认数据库没有任何文件,在yum安装时,给我们下载了zabbix的一些sql文件,我们自己导入才能使用他的网页和组件。

  1. zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix
  2. #zcat: 不打开压缩包查看其中文件
  3. #-uzabbix: 用户
  4. #-pzabbix: 密码
  5. #zabbix: 库

修改数据库密码和时间。

  1. vim /etc/zabbix/zabbix_server.conf #设置数据库密码
  2. DBPassword=zabbix

4)配置zabbix

  1. #设置地区
  2. vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
  3. listen.acl_user = apache,nginx #我们这里用nginx来启动网页,因为没有安装apache服务,所以这里要添加nginx
  4. php_alue[date.timezone] = Asia/Shanghai
  5. #记得将前面的 ; 去掉
  6. #设置网站服务器
  7. vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
  8. listen 80; #监听nginx的80端口
  9. server_name 192.168.200.131; #设置ip

5)设置自启

  1. systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
  2. systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm

访问网页

http://192.168.200.131/zabbix

6)网页配置

出现该界面就算成功

Zabbix搭建与简单运维 - 图3

检查先决条件。查看你php配置是否有问题

Zabbix搭建与简单运维 - 图4

配置连接数据库

Zabbix搭建与简单运维 - 图5

Zabbix搭建与简单运维 - 图6

后面的下一步就可以了。

登录账号为 Admin,密码:zabbix,注意⼤⼩写

Zabbix搭建与简单运维 - 图7

Zabbix搭建与简单运维 - 图8

2.zabbix基础使用

进入界面后,设置页面为中文

Zabbix搭建与简单运维 - 图9

1)基础配置

zabbix就是监控系统,所以我们需要添加一些机器。

zabbix_agent1和zabbix_agent2已经配置好了yum源,所以直接yum安装即可。

1.1安装所需的工具

安装时间同步工具

  1. yum install ntpdate -y #安装时间同步工具
  2. ntpdate -u ntp.aliyun.com #时间源设置为阿里云的
  3. mv /etc/localtime{,.bak}
  4. ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

安装所需要的工具包

  1. yum install zabbix-agent2 -y #安装agent2,绑定zabbix监控机所需要的工具
  2. netstat -tunlp|grep zabbix #查看是否开启

1.2修改配置文件

修改配置文件

  1. vim /etc/zabbix/zabbix_agent2.conf #修改配置文件
  2. #将下面三行修改
  3. Server=192.168.200.131 #修改为zabbix_server的ip
  4. ServerActive=192.168.200.131 #修改为zabbix_server的ip
  5. Hostname=zbz-agent01 #修改为当前主机的名称
  6. #保存退出
  7. systemctl restart zabbix-agent2 #重启服务

1.3检测server机器的连通性

在zabbix_server进行如下操作

  1. yum install zabbix-get -y #安装所需的工具
  2. zabbix_get -s '192.168.200.132' -p 10050 -k "agent.ping"
  3. #1
  4. zabbix_get -s '192.168.200.132' -p 10050 -k "system.hostname"
  5. #zabbix_agent1

可以看到,zabbix默认监控了server主机。并且可用性的ZBX也显示了。就代表监控成功。并且可以通过点击 “图形” 来查看图形化界面。

Zabbix搭建与简单运维 - 图10

Zabbix搭建与简单运维 - 图11

解决乱码问题

zabbix是国外公司编写的,其中的ttf文字对于一些页面的中文不兼容,所以需要我们进行替换修改。

  1. yum -y install wqy-microhei-fonts #安装字体
  2. cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf #替换字体文件

2)添加客户端主机

Zabbix搭建与简单运维 - 图12

添加监控模板

Zabbix搭建与简单运维 - 图13

添加客户端主机1

Zabbix搭建与简单运维 - 图14

添加完后,ZBX显示了,即为添加成功。尝试给zabbix_agent2。

Zabbix搭建与简单运维 - 图15

3)zabbix查看客户机cpu动态

点击进入图形化界面

Zabbix搭建与简单运维 - 图16

下拉查看

Zabbix搭建与简单运维 - 图17

4)自定义

zabbix⾃带模板 Template OS Linux (Template App Zabbix Agent) 提供CPU、内存、磁 盘、⽹卡等常规监控,只要新加主机关联此模板,就可⾃动添加这些监控项。

4.1制作模板

需求:限制登录⼈数不超过三个,超过三⼈则发出报警

服务器不希望有太多⼈在操作,除了管理员以外的⼈,⼈数超了,我就怀疑有问题, 需要看看是谁,防⽌他乱操作服务器,给我们运维背锅呀。

自定义key

  1. #zabbix⾃带的key
  2. zabbix_get -s '192.168.200.132' -p 10050 -k "system.uname"
  3. zabbix_get -s '192.168.200.132' -p 10050 -k "system.hostname"
  4. #如果写错了key,会报错

Zabbix搭建与简单运维 - 图18

我们可以通过查看监控项,看看都有哪些key

Zabbix搭建与简单运维 - 图19

自行查看键值

Zabbix搭建与简单运维 - 图20

自定义监控语法

  1. who |wc -l #显示登录人数
  2. vim /etc/zabbix/zabbix_agent2.d/userparameter_login.conf
  3. UserParameter=login.user,who|wc -l
  4. systemctl restart zabbix-agent2 #重启agent
  5. zabbix_get -s '192.168.200.132' -p 10050 -k "login.user"
  6. #通过命令检测是否成功

5)创建模板

5.1查看服务器有多少在线用户

Zabbix搭建与简单运维 - 图21

添加模板

Zabbix搭建与简单运维 - 图22

找到创建的模板

Zabbix搭建与简单运维 - 图23

点击,添加应用集

Zabbix搭建与简单运维 - 图24

Zabbix搭建与简单运维 - 图25

Zabbix搭建与简单运维 - 图26

Zabbix搭建与简单运维 - 图27

创建触发器

Zabbix搭建与简单运维 - 图28

Zabbix搭建与简单运维 - 图29

创建图形

Zabbix搭建与简单运维 - 图30

配置——主机——客户机——添加模板

Zabbix搭建与简单运维 - 图31

查看仪表盘数据

查看客户机1的图形化界面

Zabbix搭建与简单运维 - 图32

查看仪表盘

Zabbix搭建与简单运维 - 图33

5.2查看nginx状态

生成状态监控界面

  1. ./configure --with-http_stub_status_module #安装状态监控模块
  2. vim /usr/local/nginx/conf/nginx.conf #进入配置文件
  3. #添加字段
  4. locahost /nginx_status {
  5. stub_status on;
  6. }
  7. systemctl restart nginx #重启nginx
  8. curl http://192.168.218.156/nginx_status

image.png
配置脚本

  1. yum install -y zabbix_agent2 #安装agent2
  2. mkdir /etc/zabbix/scripts/ #创建存储脚本的文件夹
  3. vim /etc/zabbix/scripts/nginx_status
  4. #!/bin/bash
  5. function active {
  6. /usr/bin/curl "http://192.168.218.156/nginx_status" 2>/dev/null| grep 'Active' | awk '{print $NF}'
  7. }
  8. function reading {
  9. /usr/bin/curl "http://192.168.218.156/nginx_status" 2>/dev/null| grep 'Reading' | awk '{print $2}'
  10. }
  11. function writing {
  12. /usr/bin/curl "http://192.168.218.156/nginx_status" 2>/dev/null| grep 'Writing' | awk '{print $4}'
  13. }
  14. function waiting {
  15. /usr/bin/curl "http://192.168.218.156/nginx_status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
  16. }
  17. function accepts {
  18. /usr/bin/curl "http://192.168.218.156/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $1}'
  19. }
  20. function handled {
  21. /usr/bin/curl "http://192.168.218.156/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $2}'
  22. }
  23. function requests {
  24. /usr/bin/curl "http://192.168.218.156/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $3}'
  25. }
  26. $1
  27. vim /etc/zabbix/zabbix_agent2.d/nginx_zabbix.conf #创建监控文件
  28. UserParameter=nginx[*],/etc/zabbix/scripts/nginx_status $1
  29. chmod 755 /etc/zabbix/scripts/nginx_status #设置权限
  30. systemctl restart zabbix_agent2
  31. #此时就可以通过server节点查看该节点的脚本
  32. zabbix_get -s 192.168.218.156 -k 'nginx[accepts]'

配置zabbix模板

  1. 创建模板——模板名称(自定义)——设置群组
  2. 应用集——创建应用集——名称(自定义)
  3. 监控项——创建监控项——将7个函数添加进去

image.png

  1. 触发器——创建触发器——根据自己情况添加
  2. 图形——创建图形——将7个监控项添加进去

image.png

3.zabbix进阶

1)邮件报警

Zabbix搭建与简单运维 - 图37

Zabbix搭建与简单运维 - 图38

qq的具体操作方法可以百度。

Zabbix搭建与简单运维 - 图39

设置收件人——记得点击更新

Zabbix搭建与简单运维 - 图40