监控收集信息方式
1.被动模式
监控对象上报故障(何时故障,何时上报)
优点:占用网络资源少,占用存储资源少
缺点:及时性差
2.主动模式
定时查看业务状态
优点:及时性好
缺点:占用资源多
一。部署服务端:
网络源,本地源,epel-release扩展源 zabbix官方源
1.设置主机名
hostname zabbix_server
2.准备zabbix-repo
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
注:此版本为红帽/centos 7版本zabbix
其他版本请去官网下载
(此为阿里云的)rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
国外镜像不可用/过于慢时,可以是用阿里云yum源
具体链接内容请去阿里云镜像网址寻找自己的版本并复制链接
3.安装zabbix服务器
[zabx1]
name=bbaa
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/
gpgcheck=0
enabled=1
[zabx2]
name=aabb
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/frontend/
gpgcheck=0
enabled=1
yum install -y zabbix-server-mysql zabbix-agent(主包)
zabbix-server-mysql:数据库
zabbix-agent:代理程序(上报信息的程序)
yum install -y centos-release-scl(插件)
centos发布scl
ls /opt/rh/
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl(前端包)
zabbix前台页面
安装zabbix所需的数据库mariadb-server
yum install -y mariadb-server
开机启动
systemctl enable --now mariadb
初始化数据库,设置密码
mysql_secure_installation
添加数据库用户,以及zabbix所需的数据库信息
创建zabbix数据库
create database zabbix character set utf8 collate utf8_bin;
创建zabbix用户
create user zabbix@localhost identified by 'qqqqqq';
授权
grant all privileges on zabbix.* to zabbix@localhost;
在zabbix数据库里的所有表给予所有权限,使用的用户为zabbix用户
刷新授权表
flush privileges;
使用zabbix-mysql命令,导入数据库信息
查看文件是否存在
ls /usr/share/doc/zabbix-server-mysql*/create.sql.gz
导入数据库
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -u zabbix -p zabbix
-u指定zabbix用户 -p指定zabbix数据库
注:不要与密码连起来写
修改zabbix server配置文件,修改数据库密码
vim /etc/zabbix/zabbix_server.conf
/DBPass
修改密码为zabbix账户密码
DBPassword=qqqqqq
修改zabbix的php配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
/timezone 找到此行
修改为 。。。= Asia/Shanghai
然后取消前方;的注释
启动zabbix相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
开机启动
systemctl enable zabbix-server zabbix-aganet httpd rh-php72-php-fpm
访问zabbix入口
ip地址/zabbix
安装
默认账号Admin
密码zabbix
二。部署·zabbix客户端
zabbix5.0版本
agent2新版本采用golong语言开发的客户端
(golong语言的并发性能)
由于是go语言开发,部署变方便,和之前的程序部署形式不一样了
agent2默认使用10050端口(也就是客户端的端口)
旧版客户端:zabbix-agent
新版客户端:zabbix-agent2
注:在不修改端口的情况下,是无法两版同时使用的
1.机器环境准备
客户端的防火墙、yum源(网络源,本地源,epel-release扩展源 zabbix官方源)、ip地址、setenforce等
2.注意时间正确
yum install ntpdate -y
ntpdate -u ntp.aliyun.com (注:服务端也需要同步时间)
注:因为需要记录报警时间等
3.时区的统一配置(同样需要同步服务器端)
mv /etc/localtime{,.bak} 备份文件
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
4.部署
yum install -y zabbix-agent2
5.查看配置文件
vim /etc/zabbix/zabbix_agent2.conf
6.启动(开机自启,立即开启)
systemctl enable --now zabbix-agent2
7.修改zabbix-agent2配置文件,查看配置信息
logfilesize=0 (没有限制)
更改:
服务端ip:Server=服务器端ip
Server Active=服务器端ip
Hostname=当前客户端主机名(hostname查看当前主机名)
8.重启zabbix-agent2
systemctl restart zabbix-agent2
三。验证zabbix-agent2的连通性
1.在服务端上通过命令,主动获取数据
yum install -y zabbix-get
zabbix_get -s '客户端ip' -p 10050 -k 'agent.ping' 测试联通1为通
或者'system.hostname' 查看客户端主机名
-p 指定端口 -k 调用命令
插叙:
zabbix页面
检测→主机→某个主机的图形
图形乱码问题
zabbix默认检测了服务端本身,但是编码有问题
1.安装字体
yum install -y wqy-microhei-fonts
2.复制字体
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DeiaVuSans.ttf
四。添加zabbix—agent主机
配置→主机→创建主机
主机名称(与客户端主机名保持一致)
可见的名称(可以在平台上看见的)
群组(根据客户端选择(实验是linux机器,则选择linux server))
interfaces:客户端ip地址,
模板(监控的信息,图形化等模块) 输入linux 选择Template OS Linux by Zabbix agent
五。zabbix创建自定义key
一.自定义监控内容
配置→主机→模板(新加入需要监控的服务(模板))
例:自定义监控服务器登录的人数
限制服务器登录人数不超过三个,超过三个就发出报警信息
先从命令行角度操作
注:在要监控的那台服务器上进行配置
1.查看zabbix自带的检测key
注:zabbix_get -s '客户端ip' -p 10050 -k 'agent.ping'
后agent.ping 为键值,可调用其他键值
配置→主机→某台客户端→监控项
2.明确linux要执行的命令
例:查看当前登录用户数 who | wc -l
3.手动创建zabbix的配置文件,用于自定义key
主配置文件位置 /etc/zabbix/zabbix_agent2.conf
语法(找到UserParameter)
创建的文件放置位置
在主配置文件找到Include 此行路径则为放置位置
4.创建配置文件,以及内容如下
vim who.conf (主配置文件定义的是zabbix_agent2.d目录下所有.conf结尾的配置文件)
语法:UserParameter=login.user,who|wc -l
用户自定义参数=自定义的键值,要执行的命令
重启zabbix
systemctl restart zabbix-agent2
如果没有任何提示,且查看状态为正在运行,则配置成功
在zabbix服务端:
zabbix_get -s '客户端ip' -p 10050(默认端口) -k ’login.user‘ (键值)
二.在页面添加zabbix-server的自定义监控项模板
添加流程:
创建模板
创建应用集(好比一个文件,里面放入一堆监控项)
创建监控项,自定义item,你具体想监控的内容
创建触发器,当监控项获取到值的时候,进行和触发器比较,判断,决定是否报警
创建图形
将具体的主机和该模板链接,关联
1.配置→模板→创建模板
例:模板名称:Template Login User
可见的名称:Template Login User
群组:Template
描述:用于检测用户登录数的模板
添加
注:template(模板)
2.创建应用集
在所有模板中找到你创建的模板
例:点击Template Login User
点击应用集
创建应用集
自定义应用集名称(最好根据应用方向等进行命名)
3.创建监控项
创建完应用集后,点击监控项→创建监控项
添加
4.创建触发器
创建完成监控项后,点击触发器→创建触发器
名称:User nmber 1 (根据实际情况命名(此为用户数))
表达式:添加
添加
5.创建图形
完成创建触发器后,点击图形→创建图形
6.与服务器进行关联
配置→主机→选择主机→模板→找到你配置的模板→更新
六。邮件报警配置
如果出问题时你并未在观看页面怎么办呢
这时候需要用到邮件报警了
管理→报警媒介类型→创建媒体类型
smtp服务器:固定smtp.163.com网易提供的服务器(发邮件的服务器)
smtp电邮:你自己的网易邮箱(收邮件的邮箱(相当于一个转发邮箱,从邮件服务器获取邮件,再发出去))
用户名称:你的邮箱的用户名
密码:不是邮箱密码(是授权码)
然后点击上方Message templates(邮件格式)
添加
默认不变,点击添加。(其他问题解决等以后可根据需要配置)
点击POP3/SMTP服务 后的开启,进行添加授权码
媒体类型创建成功后可在下方找到你创建的媒体类型进行测试
可以给qq发送
收件人其他邮箱 例:QQ号@qq.com
点击用户配置(User settings)→报警媒介
添加
类型为刚刚你自己创建的 例:User nmber email
收件人:例:qq号@qq.com
(可多个)
点击更新
配置→动作→选中report problems to zabbix administration→启用
七。聚合图形创建
八。全网监控方案
互联网上有大量的开源模板可供使用
当需要监控的主机过多时,我们需要自动添加监控主机的配置
思路:
1.克隆监控模板
2.自动注册和自动发下
3.使用zabbix的api接口,利用curl语言,或者开发自己的编程脚本,如python等。
API:我们日常使用的各种软件,都提供了api接口,给开发人员修改以及获取数据的。
硬件监控
应用服务监控
例:rsync服务监控
监控服务器的873端口是否使存活的
有关端口的监控,可使用zabbix自带的key net.tcp.port[,873]
nfs服务是否正常
通过key检测111端口 net.tcp.port[,111]
zabbix_get -s '客户端ip' -p 10050(默认端口) -k ’net.tcp.port[,111]‘ (键值)
或 showmount -e (ip) | wc -l
检测mysql数据库是否正常
通过端口 net.tcp.por[,3306]
zabbix自带了mysql的监控模板,直接添加模板和mysql主机关联即可
web服务器监控
net.tcp.port[,80]
zabbix也提供了对web服务器的监控模板
监控服务的具体方法
检测端口的命令:netstat ss lsof 接和grep可查看端口是否存活
查询进程信息:ps
通过客户端连接:web服务用curl查询
mysql服务用sql语句连接验证
缓存数据库服务数据读写验证
九。zabbix客户端自动发现,自动注册
客户端:systemctl is-active zabbix-agent2 返回active明确这台服务器的zabbix-agent2是正确运行的
服务端:zabbix_get -s '客户端ip' -p 10050(默认端口) -k ’agent.ping' 验证客户端是否存活(1为存活)
什么是自动发现,自动注册
自动发现:
zabbix server 主动的去发现所有客户端,然后将客户端的信息登记在服务端的机器上。
缺点:zabbix server压力会较大
如果你定义了一个网段100~200网段,耗时较久,且压力大
自动注册:
zabbix-agent2 主动上报自己的信息发给zabbix server
缺点:agent2 找不到server (此情况极有可能是配置文件写错)
被动模式,主动模式的区别(站在agent2立场)
被动模式:对agent2来说,就是server来找agent2拿数据
主动模式:agent2主动把数据发给server
自动发现,被动模式
1.配置hosts解析
服务端客户端都要写hosts文件,也都要将ip地址与主机名写入
2.自动发现配置
zabbix页面→配置→自动发现→创建发现规则/修改已有规则
一定注意网段等信息
配置→动作→trigger actions选择Discovery actions
启用
再次点击动作:选择此动作
根据情况做适当的更改
更新
自动注册,主动模式
1.实验中,先将自动发现关闭
2.准备机器:
客户端 agent2
服务器 server
3.修改agent2的配置文件
vim /etc/zabbix/zabbix_agent2.conf
取消HostnameItem=system.hostname行的注释
过滤查看(去掉不需要的行)
grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
4.在服务端验证是否可以联通
zabbix_get -s '192.168.1.2' -p '10050' -k'agent.ping'
5.zabbix页面
回到zabbix网页页面
配置→动作→左上角→选择自动创建的动作(autoregistration actions)→右上角创建动作
动作:
名称:自动注册(自定义)
条件:添加→类型:主机名称
值:客户端主机名
添加
操作:
操作:添加→操作类型:添加主机
add
添加→操作类型:添加到主机群组
主机群组: linux servers
add
添加→操作类型:与模板关联
模板:….OS linux by zabbix….(选择模板)
可添加多个模板
十。分布式监控阐述
关键词:代理服务器
各地区本地机房配置代理服务器,我们只需要保证zabbix服务器与agent2代理服务器的即时通信
可以减小通讯压力
作用:
1.分担server的集中试压力
agent(客户端)→proxy(代理)→server(服务端)
2.多机房之间的网络延时问题
可以理解为:上海机房 → proxy → 公司总部server ← proxy ← 北京机房
十一。zabbix代理服务器配置
注意:配置代理服务器后,客户端配置文件内的Server与ServerActive都要更改为代理服务的ip
部署分布式zabbix-proxy
1。环境准备
至少三台机器
zabbix客户端节点→zabbix-proxy(汇总给)→zabbix server 服务端
例子环境:192.168.1.2 zabbix-server5.0
192.168.1.188 zabbix-proxy
192.168.1.4 zabbix-agent2
2.学习阶段,关闭防火墙
3.关闭自动发现与自动注册
4.zabbix-server服务端无需变动,继续运行即可
5.准备好客户端机器,以便于被监控
6.配置好zabbix-proxy代理服务器,并部署数据库,用于存放客户端发来的数据,最终发送给zabbix-server
1.配置zabbix-proxy代理服务器
注意yum源:配置zabbix官方源
阿里源/其他也可以
epel-release扩展源
安装proxy,以及数据库
因为proxy要采集客户端的数据,并在本地进行存储,达到一定条件才会发送给服务端
yum install -y zabbix-proxy-mysql zabbix-get mariadb-server mariadb(centos7数据库,服务器不同数据库可能会发生改变)
2.启动数据库,配置数据库用户,存储zabbix-agent2信息数据
systemctl start maridb
若进入数据库:错误2002(HY000):无法通过套接字'/var/lib/mysql/mysql.sock'连接到本地MySQL服务器:解决方法请见linux总。程序错误
mysql -u root -p
create database zabbix_proxy character set utf8 collate utf8_bin; 创建zabbix_proxy表,并设置字符编码
grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix'; 授予所有的权限在
zabbix_proxy数据库里面,及里面所有的表,针对zabbix这个用户,验证密码是zabbix
当你使用zabbix用户登录,且输入密码zabbix(自己设置),你就可以针对zabbix_proxy表有所有权限。
flush privileges; 刷新授权表(改外授权后,刷新授权表,好习惯)
exit推出数据库
3.导入zabbix-proxy数据库信息
查找sql.gz文件
rpm -ql zabbix-proxy-mysql
/usr/share/doc/zabbix-proxy-mysql-5.0.18/schema.sql.gz(实验环境中路径)
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.18/schema.sql.gz | mysql -uzabbix -pzabbix zabbix_proxy
将压缩文件中信息读取出来,通过管道符写入到zabbix数据库里面
4.修改zabbix-proxy配置文件,连接数据库的信息
sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf 数据库密码 .ori备份
sed -i 's#Server=127.0.0.1#Server=192.168.1.2#' /etc/zabbix/zabbix_proxy.conf 服务端ip
sed -i 's#Hostname=Zabbix proxy#Hostname=apache#' /etc/zabbix/zabbix_proxy.conf 代理服务主机名
配置文件中其他如跟你的配置不同的情况下,也需要更改
根据你配置的真实情况更改
5.检查代理服务器的配置文件
grep -Ev ‘^#|^$’ /etc/zabbix/zabbix_proxy.conf
6.启动代理服务
systemctl start zabbix-proxy
7.在web页面添加代理(服务端)
管理→agent代理程序→创建代理
代理名称自定
添加,然后启用
如果服务端日志文件一直显示无法解析代理服务器,请检查代理服务器配置文件是否错误,或者web页面代理程序是否错误。
且5s代表以及找到
8.agent使用proxy
在web页面
配置→主机→创建主机
主机名称等于/etc/zabbix/zabbix_agent2.conf中hostname、ip
自定义添加模板
重启zabbix客户端 :systemctl restart zabbix-agent2
重启zabbix代理:systemctl restart zabbix-proxy
十二。snmp监控
打印机、路由器等网络设备无法使用agent2客户端进行监控。
则使用snmp协议监控
普通客户端采用ZBX(zabbix)协议监控
zabbix监控tomcat使用JMX协议
简单网络管理协议。
1.服务端安装snmp监控程序以及它的工具包
yum install -y net-snmp net-snmp-utils
2.开启snmp的配置
sed -i.ori '57a view systemview include .1' /etc/snmp/snmpd.conf
systemctl start snmpd.service
3.使用snmp命令
snmpwalk -v 2c -c public 127.0.0.1 sysname
-v版本 -c暗号 sysname snmp的key
4.添加监控
在web页面
配置→主机→选择连接需要监控设备的主机→添加interfaces→选择snmp协议,本地回环接口127.0.0.1,查看端口并配置。
netstat -tunlp | grep snmp
0.0.0.0:161为端口
127.0.0.1:191为监听口
清理原有linux自带模板,选择
linux snmp模板,否则有冲突