监控
netstat -tunlp #查看进程
tail -f /var/log/zabbix/zabbix_server.log #查看日志
tail #显示文件末尾内容
history #查看历史命令 !+ 行号 直接使用
# hostnamectl set-hostname +主机名(修改主机名)
监控的生命周期
- 服务器上架到机柜
- 基础设施监控
服务器温度,风扇转速,ipmitool命令(只能用在物理机)
存储的监控(df,fdisk,iotop)
cpu监控 lscpu,uptime,top,htop,glances
- 应用监控
安装服务端
1.关闭防火墙
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl disable --now firewalld
2.zabbix-server内存尽量大一点,4G最好
3.获取zabbix的下载源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
4.更换zabbix.repo源,为阿里
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
5.清空缓存,下载zabbix服务端
yum clean all
yum makecache
yum install zabbix-server-mysql zabbix-agent -y
6.安装工具,可以在机器上,使用多个版本的软件,并且不会影响整个系统的依赖环境
yum install centos-release-scl -y
7.更改zabbix.repo中zabbix-frontend的数值
vi /etc/yum.repos.d/zabbix.repo
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.初始化数据库,并设置密码
mysql_secure_installation
12.添加数据库用户
# 进入数据库,创建一个zabbix数据库:
create database zabbix character set utf8 collate utf8_bin;
# 创建一个zabbix用户,密码123
create user zabbix@localhost identified by '123';
# 修改权限
grant all privileges on zabbix.* to zabbix@localhost;
13.使用zabbix-mysql命令,导入数据库信息
# mysql -u 用户名 -p 数据库名
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -u zabbix -p zabbix
14.修改zabbix server配置文件,修改数据库密码
# 进入/etc/zabbix/zabbix_server.conf中,修改DBPassword为数据库密码
vim /etc/zabbix/zabbix_server.conf
DBPassword=123
# 查看修改是否成功
grep '^DBPass' /etc/zabbix/zabbix_server.conf
15.修改zabbix PHP的配置文件
#进入/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf中最后一行改成php_value[date.timezone] = Asia/Shanghai
16.启动zabbix相关服务器
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
17.访问zabbix入口
本机ip/zabbix
18.安装成功后默认用户名:Admin,密码是:zabbix
安装客户端
agent2新版本采用golang开发,默认使用10050端口,也会zabbix客户端的端口。
1.环境准备,关闭防火墙
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl disable --now firewalld
2.注意时间正确
yum install ntpdate -y
ntpdate -u ntp.aliyun.com
3.时区统一
mv /etc/localtime{,.back}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
zabbix-agent2部署流程
1.获取zabbix的下载源
rpm -Uvh https://repo.zabbix.com/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.安装
yum install zabbix-agent2 -y
4.查看配置命令
/etc/zabbix/zabbix-agent2.conf
5.启动命令
ls -l /usr/sbin/zabbix_agent2
6.启动客户端
systemctl enable --now zabbix-agent2
#检查端口(yum install net-tools)
netstat -tnlp | grep zabbix
7.修改配置文件
nano /etc/zabbix/zabbix_agent2.conf
# 将Server,ServerActive改为server的IP地址
# 将Hostname改为本机名(使用hostname查询本机名)
# 查看修改后的文件
grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
8.重启
systemctl restart zabbix-agent2
PidFile端口文件
LogFile日志文件
Server=x.x.x.x #被动模式的server IP地址,如果为纯主动模式可以注释
# Server若有多个IP地址,使用逗号分隔开
ServerActive=x.x.x.x #主动模式的serverIP地址
验证zabbix-agent2连通性
1.在Server中安装zabbix—get
yum install zabbix-get -y
2.验证连通性
zabbix_get -s '192.168.253.130' -p 10050 -k 'agent.ping'
#agent.ping 测试连通性
#agent.name 查看主机名
#agent.uname 查看主机信息
解决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
添加zabbix-agent主机
自定义监控内容
自定义监控服务器登陆的人数
命令行角度
1.明确需要执行的Linux命令
who | wc -l #查看当前用户数
2.手动创建zabbix的配置文件,用于自定义key
vim /etc/zabbix/zabbix_agent2.conf
3.创建配置文件,以及内容
[root@zbx-agent01 zabbix_agent2.d]# cat userparameter.conf
UserParameter=login.user,who|wc -l
4.在server中测试
zabbix_get -s '192.168.253.131' -p 10050 -k 'login.user'
在页面添加
添加流程
- 创建模板
- 创建应用集(好比一个文件夹,里面放入一堆监控项)
- 创建监控项,自定义item,具体监控内容
- 创建触发器,当监控项获取到值得时候和触发器比较,判断,决定是否报警
- 创建图形
- 将具体的主机和该模板链接,关联
邮件报警
全网监控方案
自动添加主机监控
- 克隆监控模板
- 自动注册,自动发现
- 使用zabbix的api接口,使用curl语言,或者开发自己的编程脚本如python等
监控实施方案
硬件监控(自带)
应用服务监控
rsync服务监控(实时文件同步)
监控服务器的873端口是存活的
有关端口的监控,使用zabbix自带的key net.tcp.port[,873]
进行数据推拉,检测效果
检测NFS服务是否正常(网络文件系统)
通过key检测111端口 net.tcp.port[,111]
showmount -e ip | wc -l #查看挂载
检测mysql数据库是否正常
通过 net.tcp.port[,3306]
zabbix自带了mysql的监控模板,直接添加模板
web服务器监控
net.tcp.port[,80]
监控服务的具体方法
#端口检测命令
netstat -tunlp | grep
ss
lsof
#查询进程信息
ps
#通过客户端连接
web服务器用curl查询
mysql 用sql语句连接验证
自动发现,自动注册
自动发现:(agent被动模式)
zabbix server 主动的去发现所有的客户端,然后将客户端的信息,登记在服务端的机器上(主动发现客户端)
缺点:zabbix server压力会较大,耗时较久
自动注册:(agent主动模式)
zabbix agent2主动上报自己的信息,发给zabbix-server
缺点:agent2可能找不到server(配置文件错了,网络不通)
被动模式,主动模式:
被动模式,对于agent2来说,server来找agent2
主动模式,agent2主动把数据上传给server
1.检测客户端是否存活
[root@zbx-agent01 ~]# systemctl is-active zabbix-agent2
active
2.练习
配置hosts解析
#在server 和 agent 的/etc/hosts中添加
192.168.253.128 localhost.DZQ
192.168.253.130 z
自动发现配置
自动注册,主动模式
#将/etc/zabbix/zabbix_agent2.conf中的HostnameItem前面的注释符删除
[root@zbx-agent01 ~]# 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.253.128
ServerActive=192.168.253.128
Hostname=zbx-agent01
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
分布式监控
分布式监控的作用
- 分担server的集中式压力
agent > proxy > server - 多机房之间的网络延时问题
异地机房 > proxy > server
部署分布式zabbix-proxy
#1.环境准备
192.168.253.128 zabbix-server
192.168.253.130 zabbix-proxy
192.168.253.131 zabbix-agents
#2.关闭192.168.253.130 的agent2服务
systemctl stop zabbix-agent2
#3.安装proxy,以及数据库(数据库用来存储agent2发来的数据,并最终发给server)
yum install zabbix-proxy-mysql zabbix-get -y
yum install mariadb-server mariadb -y
systemctl enable mariadb #设置开机自启
#4.启动数据库,配置数据库用户,存储zabbix-agent2信息
mysql -uroot -p
create database zabbix_proxy character set utf8 collate utf8_bin;
#针对zabbix用户所有权限在zabbix_proxy数据库里
grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix';
#刷新
flush privileges;
#5.导入zabbix_proxy数据库信息
#查看yum安装路径
rpm -ql zabbix-proxy-mysql
/usr/share/doc/zabbix-proxy-mysql-5.0.15/schema.sql.gz
#将sql.gz文件导入mysql(zcat命令用于不真正解压缩文件,就能显示压缩包中文件的内容)
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.15/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy
#6.配置zabbix-proxy配置文件
#修改162行
sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
sed -i 's#Server=127.0.0.1#Server=192.168.253.128#' /etc/zabbix/zabbix_proxy.conf
sed -i 's#Hostname=Zabbix proxy#Hostname=zbx-agent01' /etc/zabbix/zabbix_proxy.conf
#7.检查代理服务器的配置文件
[root@zbx-agent01 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
Server=192.168.253.128
Hostname=zbx-agent01(与web中的agent代理程序名称需要一致)
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
#8.启动代理服务
systemctl restart zabbix-proxy
systemctl status zabbix-proxy
agent配置
[root@zbx-agent02 ~]# 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.253.130(proxy地址)
ServerActive=192.168.253.130
Hostname=zbx-agent02
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
web界面配置
SNMP 监控
简单网络管理协议
1.服务端安装snmp监控程序
yum -y install net-snmp net-snmp-utils
2.snmp的配置
sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf
systemctl start snmpd.service
3.使用snmp命令
#-v 指定版本
#-c 指定暗号
#sysname snmp的key
snmpwalk -v 2c -c public 127.0.0.1 sysname
简单网络管理协议
1.服务端安装snmp监控程序
yum -y install net-snmp net-snmp-utils
2.snmp的配置
sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf
systemctl start snmpd.service
3.使用snmp命令
#-v 指定版本
#-c 指定暗号
#sysname snmp的key
snmpwalk -v 2c -c public 127.0.0.1 sysname