zabbix学习笔记二
# zabbix专有词汇
对于英文的掌握,是IT人员必须学习的技能,以下是zabbix必须掌握的一些关键词。
- zabbix server,服务端,收集数据,写入数据
- Item,对于某一个监控指标,称之为Items,如某台服务器的内存使用状况,就是一个item监控项
- Trigger,触发器,定义报警的逻辑,有正常,异常,未知三个状态
- Action,当Trigger符合设定值后,zabbix指定的动作,如发个邮件
# zabbix程序组件
- zabbix_server
- zabbix_agentd
- zabbix_proxy
# 部署zabbix 5.0
# 部署zabbix服务端
1、准备机器,环境初始化
- 获取ip
ipconfig
ipconfig eth0
ipconfig eht0 |awk 'NR==2{print $2}'
2
3
4
5
- 关闭防火墙
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl disable --now firewalld
# 查看可接受流量
iptables -L
2
3
4
2、zabbix-server至少4G硬盘,尽量大一些。
- 查看硬盘
free -m
3、获取zabbix的下载源
# 查看仓库文件
ls /etc/yum.repos.d/
# 打开配置信息,改为阿里云
vim /etc/yum.repos.d/
2
3
4
4、更换zabix.repo为阿里云源
sed -i 's#http://repo.zabbix.com#https://mirros.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
更换不会有反馈,需要自己打开配置文件查看
cat /etc/yum.repos.d/
5、清空yum旧缓存,下载zabbix服务端
yum clean all
yum makecache
yum install zabbix-server-mysql zabbix-agent -y
2
3
6、安装软件搜索器,可以在机器上使用多个版本的软件,并且不会影响到系统的依赖环境
yum install centos-release-scl -y^C
7、修改zabbix-front前端源,修改如下参数
vim /etc/yum.repos.d/
参数如下:
# 把enabled改为1
8、安装zabbix前端环境,且是安装到scl环境下
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
9、安装zabbix所需的数据,mariadb
yum install mariadb-server -y
10、配置数据库开机启动,并且立刻启动
systemctl enable --now mariadb
11、初始化数据库设置密码
systemctl status mariadb
# 设置密码,默认为空
mysql-secure-installation
# 是否要移除用户,是的
# 禁止root远程登录,否
2
3
4
5
6
12、添加数据库,并且添加zabbix专用用户
mysql -uroot -p
show databases;
# 创建数据库
create database zabbix character set utf8 collate utf_bin;
# 添加用户 localhost是指允许本机登录
create user zabbix@localhost identified by '你想要的密码';
# 授权
grant all privileges on zabbix.* to zabbix@localhost;
# 刷新授权表
flush privileges;
2
3
4
5
6
7
8
9
10
11
13、使用zabbix-mysql命令,导入数据库信息
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix
mysql -u后面是用户,-p是密码,空格后面是数据库名
导入完成后,进入数据库,查看有哪些表,检查是否导入成功
mysql -uroot -p
show databases;
use zabbix;
show tables;
2
3
4
5
6
7
如果导入成功的话,这些表都会创建成功。
14、修改zabbix-server配置文件,修改数据库的密码
vim /etc/zabbix/zabbix_server.conf
检查一下
grep '^DBPa' /etc/zabbix/zabbix_server.conf
15、修改zabbix的php配置文件,修改时区
Asia/Shanghai
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
检查一下
grep 'timezone' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
16、启动zabbix相关服务器
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
2
17、访问zabbix入口
访问端口测试一下:
ip+/zabbix
配置数据库
细节设置
- 显示安装细节
安装成功
18、安装成功后默认账号密码
Admin
zabbix
2
19.设置zabbix网页端中文
- user-settings
- Language选择中文
- update
还有就是zabbix的仪表板,都可以自定义拖动组件和大小
# 部署zabbix客户端
zabbix5.0版本
agent新版本采用golang语言开发的客户端
由于是go语言开发,部署起来就很方便了,和之前的部署形式不一样了
agent2默认用10050端口,也就是zabbix客户端的端口
- 旧版本的客户端,zabbix-agent
- go语言新版客户端,zabbix-agent2
1.机器环境准备,2台zabbix客户端
- linux-2,zabbix-agent2
- linux-3,zabbix-agent2
2.注意时间正确
yum install ntpdate -y
ntpdate -u ntp.aliyun.com
2
3.时区的统一配置
date # 检查时间是否一致
mv /etc/lcaoltime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2
3
# 验证zaabix-agent2的连通性
# 解决zaabix-server查看的乱码问题
- 检测->主机,zabbix默认检测的就是它自己的服务端
zabbix默认检测了服务端本身,但是编码有问题
1.安装字体
yum -y install wqy-microhei-fonts
2.复制字体
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
2
3
4
5
# 添加zabbix-agent主机
模板
- 我们添加监控项的时候可以直接使用模板,不需要每一个监控项都自己手动添加。
- 我们只需要选择模板
操作:菜单->报表->主机
- 点击创建主机
- 主机名称:尽量和Linux hostname保持一致
- 可见的名称:在平台上看见的名称,为了通俗易懂,可以使用hostname+ip地址
- 群组:Linux servers,把当前加入到Linux主机群组
- 客户端Ip:填写IP
- DNS名称:不用管,没用到
- 端口:默认是10050
- 描述:备注信息
- 代理程序:不用管
创建完主机后,发现可用性那一列,没一个是绿色的,接下来需要操作:
- 编辑主机
- 选择模板
- 输入Linux,自动搜索出许多模板
- 可以使用
Template OS linux By Zabbix agent
等待ZBX
亮了之后,才算是正常的
# 自定义监控内容
# 从命令行角度
从zabbix-server就可以获取zabbix-agent端的数据
# 查看是否能连接指定机器
zabbix_get -s 'IP' -p 10050 -k 'agent.ping'
# 查看指定机器内核信息
zabbix_get -s 'IP' -p 10050 -k 'system.uname'
# 查看指定机器的名字
zabbix_get -s 'IP' -p 10050 -k 'system.hostname'
# 获取指定机器的指定目录容量占用
zabbix_get -s 'IP' -p 10050 -k `vfs.fs.size[/,used]`
# 获取指定机器的指定目录总大小
zabbix_get -s 'IP' -p 10050 -k `vfs.fs.size[/,total]`
# 查看指定的key
zabbix_get -s 'IP' -p 10050 -k 'login.user'
# 查看zabbix检查自带的登录机器人数
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
如果是错误命令,控制行会报错误ZBX_NOTSUPPORTED: Unkown metric xxxx
zabbix-agent端查看有多少登录人数
who | wc -l
- 查看zabbix配置文件
cd /etc/zabbix/zabbix_agent2.
# 全网监控的方案
- 如何快速添加n台机器
思路:
- 克隆监控模板
- 自动注册和自动发现
- 使用zabbix的api接口,利用curl语言,或者开发自己的编程脚本如python等
我们日常使用的各种软件,都是提供了API接口,给开发人员进行修改以及获取数据的。
接口的定义。
# 监控实施方案
从硬件监控角度
配置->模板,可以发现zabbix自带的模板已经包含了常用的监控项
应用服务监控
有关端口的监控,使用zabbix自带的key,net.tcp.port[,8080]
rsync服务监控
- 监控服务器的873端口是存活的
- 通过key检测873端口,
net.tcp.port[,873]
- 进行数据推拉,检测效果
监控NFS服务是否正常
- 通过key检测111端口,
net.tcp.port[,111]
showmount -e ip | wc -l
- 通过key检测111端口,
监控mysql数据库是否正常
- 通过key检测3306端口,
net.tcp.port[,3306]
- 链接:mysql -uroot -p
- zabbix自带mysql的监控模板,直接添加模板和mysql的主机关联即可
- 通过key检测3306端口,
web服务器监控
- 通过key检测8080端口,
net.tcp.port[,8080]
- zabbix也提供了对web服务器的监控模板
- 通过key检测8080端口,
互联网上有大量的监控模板
# 监控服务的具体方法
# 端口检测的命令
netstat
ss
lsof
# 结合grep查看端口是否存货
# 在zabbix服务端
zabbix_get -s 'IP' -p [port] - k 'bash'
2
3
4
5
6
7
8
查看进程信息
ps
通过客户端连接
web服务器用 curl查询
mysql 用sql语句连接验证
缓存数据库服务 数据读写验证
2
3
# zabbix自动发现,自动注册
- 准备好一台客户端机器,用来演示自动发现,自动注册
- 练习
# 什么是自动发现,自动注册
自动发现(agent2是被动模式)
zabbix server主动的去发现所有的客户端,然后将客户端的信息,登记在服务端的机器上。
缺点是,zabbix-server压力会比较大
如果说你定义了一个网段100~200网段,耗时较久,且压力大
自动注册(agent2是主动模式)
zabbix agent2主动上报自己的信息,发给zabbix-server
缺点是agent2可能找不到server(配置文件写错了,网络不通)
被动模式,主动模式的区别(站在agent2立场)
- 被动模式,对于agent2就是server来找agent2拿数据
- 主动模式,agent2主动把数据发给server
# 自动发现配置
# 配置host解析
在服务端和客户端都要配置
# 打开host文件
vim /etc/host
# 服务端
10.211.55.10 tech_linux3
# 客户端
10.211.55.12 zbx-agent05
2
3
4
5
6
7
- 创建发现规则
进入zabbix服务端web配置->自动发现->创建发现规则
- 配置->动作
启用发现动作
- 当自动发现配置,可以检测服务端的日志
# 自动注册配置
流程:
- 准备机器server和agent
- 修改agent2的配置文件
修改agent2的配置文件
vim /etc/zabbix/zabbix_agent2.conf
打开HostnameItem=system.hostname
- 检查文件
grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
- 改了配置记得重启zabbix-agent2
systemctl restart zabbix-agent2
验证通信
去zabbix-server的web界面,去配置注册动作,
菜单路径:配置->动作
- 配置动作
这里条件可以去掉
- 查看zabbix-server日志
tail -f /var/log/zabbix/zabbix_server.log
- 查看zabbix-agent2日志
tail -f /var/log/zabbix/zabbix_agent2.log
# 分布式监控
常规监控架构
- 一台通过zabbix-server去监控多个zabbix-agent
- 如果都是同一个局域网,没什么问题,不存在网络安全等问题,不会存在网络延时
- 如果不是同一个局域网,跨数据中心,很可能存在高网络延时,以至于server以为agent宕机了
- 如果server宕机了,那就检测不到数据了,存在单点故障风险
- 1个server接收多个agent,压力较大
分布式监控
- 比如有500台linux,需要负债均衡到server端
- 通过zabbix-proxy的模式分区接收数据,保存自己本地的数据库当中,达到一定条件之后,汇总发给zabbix-server
- zabbix-proxy还能解决网络延迟问题
总结来说,分布式监控的作用:
- 分担server的集中式压力
- agent->proxy->server
- 多机房之间的网络延时问题
# 部署分布式zabbix-proxy
1、环境准备,准备3台机器
10.211.55.10 zabbix-server
10.211.55.11 zabbix-proxy
10.211.55.12 zabbix-agent2
2
3
2.在学习阶段,关闭防火墙
3台机器都要关闭
# 查看防火墙规则链
iptables -L
2
都是默认ACCEPT就行
- 显示当前SELinux的应用模式,是强制、执行还是停用。
getenforce
显示disabled
就行
3、确保zabbix-agent自动发现、自动注册都没关闭
之前开过了,就要关闭。
4、zabbix-server端无需变动,运行着就好
5、配置zabbix-proxy服务器,并且部署数据库,用于存储agent2发来的数据,最终发给zabbix-server
- 配置zabbix5.0的yum源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.e17.noarch.rpm
- 修改源地址
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
6、安装proxy,以及数据库
yum install zabbix-proxy-mysql zabbix-get -y
yum install mariadb-server mariadb -y
2
7、启动数据库,配置数据库用户,存储zabbix-agent2信息数据
systemctl start mariadb
- 检查是否启动成功,看3306端口是否在使用就知道了
netstat -tunlp
- 进入mysql,默认没有密码
mysql -uroot -p
- 创建数据库
zabbix_proxy
,注意结尾有分号
create database zabbix_proxy character set utf8 collate utf8_bin;
- 授予所有权限给zabbix_proxy,以及里面所有的表,验证密码都是zabbix
grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix';
说白了就是用户密码都是zabbix
- 刷新授权表
flush privileges;
- 退出mysql
exit
7、导入zabbix-proxy数据库信息
- 查询sql文件在哪里
rpm -ql zabbix-proxy-mysql
- 把sql文件读取,通过管道写入到数据库里面
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.6/schema.sql.gz | mysql -uzabbix -pzabbix zabbix_proxy
- 导入成功,检测一下
show databases;
use zabbix_proxy;
show tables;
2
3
会发现有166行记录,说明数据库基本配置完毕
8、修改zabbix-proxy配置文件,链接数据库的信息
- 把162行写一个db,修改配置,并且做个.ori的备份文件
sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
- 配置zabbix-server端地址
sed -i 's#Server=127.0.01#Server=10.0.1.50#' /etc/zabbix/zabbix_proxy.conf
- 配置zabbix_proxy的hostname,注意这里是配置代理服务器的主机名
sed -i 's#Hostname=Zabbix proxy#Hostname=zbz-agent04#'
9、检查代理服务器的配置文件zabbix_proxy
grep '^[A-z]' /etc/zabbix/zabbix_proxy.conf
10、启动zabbix-proxy
前面改过了zabbix-proxy的配置文件,要重启后才生效
systemctl restart zabbix-proxy
systemctl status zabbix-proxy
2
3
# web页面添加代理
如何在zabbix-server端web页面添加代理
菜单路径:管理->agent代理程序->创建agent代理程序
主动式,是指,客户端主动把数据发给服务端
添加完记得启用
查看zabbix-server服务端日志
tail -f /var/log/zabbix/zabbix_server.log
- 最好在zabbix-server服务端解析代理
cat /etc/hosts
- 查看server端日志,当重启proxy时会立刻发送数据
# agent使用proxy
首先去到zabbix-server的web界面,去配置agent代理,一定要确保主机的名字和zabbix-proxy Linux物理机上的hostname相同,并且最近出现有数据,这才能是保证已经链接上了。
准备一台新的Linux
安装好zabbix-agent2
编辑zabbix-agent2的配置文件
vim /etc/zabbix/zabbix_agent2.conf
# hostname当前主机名字,等下要和zabbix-server那边添加的主机名字保持一致
hostname=zbx-agent-05
# 改为zabbix-proxy的地址
ServerActive=10.211.55.11
# 改为zabbix-proxy的地址
Server=10.211.55.11
2
3
4
5
6
7
8
确保你的信息要改正确
grep '^[z-Z]' /etc/zabbix/zabbix_agent2.conf
修改完毕后,记得重启zabbix-agent2
systemctl restart zabbix-agent2
现在去添加zabbix-agent2
一定要选代理程序
如果ZBX一直没有亮色,去关联一个模板
查看zabbix-proxy的日志
tail -f /var/log/zabbix/zabbix_proxy.log
也可以看得到,它检测到了zabbix-agent的加入
而且在zabbix-server端的小绿灯也亮了
# SNMP监控
前言
我们目前的监控形式通过zabbix的形式去监控,都是检测Linux服务器,如果说需要监控打印机或者路由器,就无法使用zabbix-agent的方法去监控了,因为类似路由器无法安装zabbix-agent,但是网络设备都支持SNMP协议。
SNMP是简单网络管理协议
- 1、zabbix-server安装snmp监控程序
yum -y install net-snmp net-snmp-utils
- 2、开启snmp的配置,并且做好set文件的备份
sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf
# 开启服务
sysetemctl start snmpd.service
2
3
4
- 3、使用snmp命令
# -v指定snmp的版本,-c 暗号,127.9.9.1检测地址,sysname类似zabbix的key,也叫snmp的key
snmp -v 2c -c public 127.9.9.1 sysname
2
拿到Linux的主机名字了
- 4、在zabbix-server去监控snmp
打开zabbix-server的配置
配置关联模板
查看zabbix-server的snmp地址和端口,其实默认端口是161,不过我们还是要查看一下
netsat -tunlp