一、软件安装
zabbix下载源
aliyun镜像
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
2.更换zabbix.repo源,为阿里的(因国外的网站下载慢)
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
3.清空缓存,下载zabbix服务器
yum clean all
yum makecache 也可以生成一个缓存
yum install -y zabbix-server-mysql zabbix-agent
4.安装software Collection,便于后续安装高版本的php,可以让你再统一操作系统上安装和使用多个版本的软件,而不会影响整个系统的安装包
yum install centos-release-scl -y
5.修改zabbix前端语言zabbix-frontend为1
6.安装前端环境
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
这个会安装到scl下,会下载到/opt/rht下,不会影响整个操作系统的环境
7.安装mariadb数据库,并设置开机自启
yum install -y mariadb-server
systemctl enable --now mariadb
初始化并设置密码
mysql_secure_installation
8.添加数据库用户,以及zabbix所需的数据库信息
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> create user zabbix@localhost identified by 'root';
Query OK, 0 rows affected (0.00 sec)授权
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.00 sec)
刷新一下MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
9.使用zabbix-mysql命令,导入数据库信息
[root@localhost ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password:root
mysql -u用户名 -p 数据库
10修改zabbix-server命令,修改数据库密码
vim /etc/zabbix/zabbix_server.conf
11修改php的配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
12启动zabbix相关服务
[root@localhost ~]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@localhost ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
访问zabbix:192.168.64.140\zabbix
默认登陆账户密码Admin zabbix(注意大小写)
部署zabbix客户端
5.0版本
agent2新版本才用golang语言开发的客户端
鱿鱼丝go语言开发,不竖起来就十分方便,和之前的程序部署形式不一样
agent2默认使用端口,也就是zabbix客户端的端口
旧版本的客户端,zabbix-agent
新版本的客户端,zabbix-agent2
1.环境准备,2台zabbix客户端
192.168.64.141 zabbix-agent1
192.168.64.142 zabbix-agent2
2.注意时间正确
yum -y install ntpdate
ntpdate -u ntp.aliyun.com
3.安装yum源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
更换zabbix.repo源,为阿里的(因国外的网站下载慢)
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
yum install zabbix-agent2 -y
修改zabbix-agent2配置文件
vim /etc/zabbix/zabbix_agent2.conf
启动命令
[root@192 ~]# ls -l /usr/sbin/zabbix_agent2
-rwxr-xr-x 1 root root 16188624 1月 29 16:12 /usr/sbin/zabbix_agent2
启动客户端
systemctl enable --now zabbix-agent2
cat /lib/systemd/system/zabbix-agent2.service yum生成,执行一条启动命令
查看zabbix-agent2配置文件
grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
[root@192 ~]# grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
[root@192 ~]# cat /var/run/zabbix/zabbix_agent2.pid
5252[root@192 ~]# ps -ef |grep zabbix2
root 5391 4852 0 13:43 pts/2 00:00:00 grep --color=auto zabbix2
[root@192 ~]# ps -ef |grep zabbix
zabbix 5252 1 0 13:35 ? 00:00:00 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf
root 5403 4852 0 13:44 pts/2 00:00:00 grep --color=auto zabbix
[root@192 ~]#
改主机名
hostnamectl set-hostname zabbix-agent1
vim /etc/zabbix/zabbix_agent2.conf
[root@zabbix-agent1 ~]# grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.64.140 改成服务端的ip
ServerActive=192.168.64.140 改成服务端的ip
Hostname=zabbix-agent1 改成和自己的主机名一致
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
[root@zabbix-agent1 ~]#将两个机器都修改
最后一步,重启zabbix-agent读取配置文件
systemctl restart zabbix-agent2
验证zabbix-agent2的连通性
1.在服务端上通过命令,主动获取数据-----192.168.64.140
[root@localhost ~]# zabbix_get -s '192.168.64.141' -p 10050 -k 'system.hostname'
zabbix-agent1
[root@localhost ~]# zabbix_get -s '192.168.64.141' -p 10050 -k 'agent.ping'
1
[root@localhost ~]# zabbix_get -s '192.168.64.142' -p 10050 -k 'system.hostname'
zabbix-agent2
解决zabbix-server查看的乱码问题
zabbix默认剪了服务端本身,但是编码有问题
1.安装字体
yum install -y wqy-microhei-fonts
或yum -y install wqy-microhei-fonts.noarch
2.复制字体
[root@localhost ~]# \cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
可用
zabbix_get -s '192.168.64.142' -p 10050 -k 'system.hostname'
自定义监控内容
需求:限制登录人数不超过三个,超过三个就发出警报信息
先从命令行角度
1.明确需要自行的linux命令
who | wc -l
2.手动创建zabbix的配置文件,用于自定义key
/etc/zabbix/zabbix.agent2.conf
3.创建配置文件,以及内容如下
[root@zabbix-agent1 ~]# cd /etc/zabbix/zabbix_agent2.d/
[root@zabbix-agent1 zabbix_agent2.d]# ls
[root@zabbix-agent1 zabbix_agent2.d]# vim userparameter_login.conf
[root@zabbix-agent1 zabbix_agent2.d]# cat userparameter_login.conf
UserParameter=login.user,who|wc -l
[root@zabbix-agent1 zabbix_agent2.d]#4.重启
systemctl restart zabbix-agent2
在页面进行添加zabbix-server的自定义监控项模板
添加流程是
- 创建模板
- 创建应用集(好比一个文件夹,里边放入一推监控项)
- 创建监控项,自定义item,你具体想监控的内容
- 创建触发器(当监控项获取到值的时候,进行核触发器比较,判断,决定是否报警)
- 创建图形
- 将具体的主机和该模板连接
将用户超过三个
这是,zabbix会出现
确认问题
邮件报警
全网监控方案
如何自动添加主机监控
- 克隆监控模板
- 自动注册和自动发现
- 使用zabbix的api接口,利用curl语言,或者开发自己的编程脚本如python
我们日常使用的各种软件,都是提供了API接口,给开发人员进行修改以及获取数据的
监控实时方案
互联网上有大量的开源模板可以下载使用
rsync服务监控
监控服务器的873端口是存活的
有关端口的监控,使用zabbix自带的 key net.tcp.port[,873]
进行数据推拉,检测效果监控NFS服务是否正常
通过key检测111端口 et.tcp.port[,111]
showmount -e ip| wc -l
监控mysql数据库是否正常
通过端口 net.tcp.port[,3306]
mysql -uroot -p
zabbix自带了mysql的监控模板,直接添加主板和mysql的主机关联即可
web服务器监控
net.tcp.port[,80]
zabbix也提供了对web服务器的监控模板
监控服务的具体方法
端口检测的命令
netstatss
lsof结合grep查看端口是否存活
[root@localhost ~]# zabbix_get -s '192.168.64.142' -p 10050 -k 'net.tcp.port[,80]'
0
自动发现,自动注册
自动发现
是zabbix server主动去发现所有的客户端,然后将客户端的信息,登记在服务端的机器上
缺点是:zabbix_server压力会很大
如果说你定义了一个网段100-200网段,耗时久,压力大
自动注册
zabbix agent2主动上报自己的信息,发给zabbix-server
缺点是agent2可能找不到server(配置文件写错了,网络不通)
被动模式,主动模式区别(站在agent2立场)
被动模式:对于agent2来说,就是server来找agent2拿数据
主动模式:agent2主动把数据发给server
配置host解析
192.168.64.140 zbx-server
192.168.64.141 zabbix-agent1
自动发现配置
自动注册-主动模式
1.准备机器
server
agent2
2.修改agent2的配置文件
[root@zabbix-agent1 zabbix_agent2.d]# grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.64.140 写入服务端地址
ServerActive=192.168.64.140 写入服务端地址
Hostname=zabbix-agent1 agent2主机名
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
3.验证通信
[root@localhost ~]# zabbix_get -s '192.168.64.141' -p 10050 -k 'agent.ping'
1
分布式监控
分布式监控作用
分担server的集中式压力
Agent》proxy》server
多机房之间的网络延迟问题
上海机房>proxy》server
部署分布式zabbix-proxy
1.环境准备
192.168.64.140 zabbix-server
192.168.64.141 zabbix-agent2
192.168.64.143 zabbix-proxy
2.关闭防火墙
1.确保之前的自动发现,注册已经关闭
2.zabbix-server服务端无需变化,运行着就好
3.准备好客户端机器,agent2机器
4.来配置代理服务器,并且部署数据库,用于存储agent2发来的数据,最终发给zabbix-server
配置zabbix的yum源
修改原地址
5.安装proxy,以及数据库
yum install zabbix-proxy-mysql zabbix-get -y
6.启动数据库,配置数据库用户,存储zabbix-agent2信息数据
yum install -y mariadb-server mariadb
systemctl enable --now mariadb
7.数据库sql设置
mysql -uroot -p
create database zabbix_proxy character set utf8 collate utf8_bin;
grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix';
flush privileges;
8.导入zabbix-proxy数据库信息
rpm -ql zabbix-proxy-mysql 查询sql文件在哪
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.41/schema.sql.gz | mysql -uzabbix -pzabbix zabbix_proxy
修改zabbix-proxy配置文件,链接数据库信息
sed -i.org '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
sed -i 's#Server=127.0.0.1#Server=192.168.64.140#' /etc/zabbix/zabbix_proxy.conf
sed -i 's#Hostname=Zabbix proxy#Hostname=zbx-proxy#' /etc/zabbix/zabbix_proxy.conf
9.检查代理服务器配置文件 zabbix-proxy
[root@192 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
Server=192.168.64.140
Hostname=zbx-proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBPassword=zabbix
DBName=zabbix_proxy
DBUser=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
[root@192 ~]#10.启动zabbix-proxy服务器
systemctl start zabbix-proxy
11.如何在zabbix页面添加代理配置
agent使用proxy
[root@zabbix-agent1 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.64.143 改成proxy服务器
ServerActive=192.168.64.143 改成proxy服务器
Hostname=zabbix-agent1
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
[root@zabbix-agent1 ~]#重启 systemctl restart zabbix-agent2proxy也重启下
snmp监控
简单网络管理协议
1.服务端安装snmp监控程序
yum -y install net-snmp net-snmp-utils
2.开启snmp配置
sed -i.org '57a view systemctl included .1' /etc/snmp/snmp.conf
systemctl restart snmpd
3.使用snmp命令
snmpwalk -v 2c -c public 127.0.0.1 sysname
-v 指定协议版本 -c指定暗号 sysname