systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled
##进行时间同步
##服务端和客户端都配置时间同步
yum install -y ntpdate
ntpdate -u ntp.aliyun.com
##如果修改了主机名
hostnamectl set-hostname zbx-agent01
##需要在服务端和客户端都设置 hosts 解析
vim /etc/hosts
192.168.242.66 zbx-server
192.168.242.67 zbx-agent01
##客户端安装 zabbix-agent
##在线安装agent
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
##因为一些网络原因,可以使用国内的镜像网址
sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
yum -y install zabbix-agent
systemctl restart zabbix-agent
systemctl enable zabbix-agent
netstat -lntp | grep 10050
#客户端 zabbix_agent 默认监听 10050 端口
##修改 agent 配置文件
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.242.66
#117行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.242.66
#171行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-agent01
#182行,指定当前 zabbix 客户端的主机名
##启动 zabbix-agent
systemctl restart zabbix-agent
systemctl enable zabbix-agent
netstat -natp | grep zabbix
##在服务端测试验证 zbx-agent01的连通性
yum install -y zabbix-get
#安装 zabbix 主动获取数据的命令
zabbix_get -s '192.168.242.67' -p 10050 -k 'agent.ping'
1
##192.168.242.67为zabbix-agent的IP地址
zabbix_get -s '192.168.242.67' -p 10050 -k 'system.hostname'
zbx-agent01
###常用的键值
agent.ping
#服务端与客户端是否连通,返回1表示可达,返回非表示不可达
system.hostname
#系统主机名
agent.hostname
#客户端主机名
net.if.in[if,]
#网络接口进入的流量统计,if表示网卡名称,带<>的参数表示可以省略
net.if.out[if,]
#网络接口流出的流量统计
proc.num[,,,,]
#进程数
net.tcp.port[,port]
#检查是否能建立tcp连接到指定端口,返回0表示不能连接,返回1表示可以连接
##首先在web浏览器登陆到 zabbix 的服务端
http://192.168.242.66/index.php
##添加主机
左侧功能列表
--》 配置
--》 主机
右上角创建主机
在新出来的窗口
--》添加 主机名称
--》模板 Linux by Zabbix agent
--》群组 Linux servers
--》Interfaces 添加 客户端 输入agent的IP地址
--》最后点击添加
##
在主机界面等主机后面的 可用性下的 ZBX 变成绿色就是添加成功了
https://share.zabbix.com/
https://monitoringartist.github.io/zabbix-searcher/
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates
###明确需要执行的 linux 命令
who | wc -l
##创建 zabbix 的监控项配置文件,用于自定义 key
vim /etc/zabbix/zabbix_agentd.conf
#可以将自定义的监控项配置文件创建在 zabbix_agentd.d 目录中
##323行
Include=/etc/zabbix/zabbix_agentd.d/*.conf
自定义监控项的格式如下
##346行
Format: UserParameter=,
cd /etc/zabbix/zabbix_agentd.d/
vim login_user.conf
UserParameter=login.user,who | wc -l
##重启服务并在服务端进行验证
systemctl restart zabbix-agent
zabbix_get -s '192.168.242.67' -p 10050 -k 'login.user'
##这里的login.user为key
##创建模板
左侧配置
--》 模板
--》 右上角创建模板
##创建模板配置
--》模板名称 根据要求写
--》群组 Templates
--》描述 自定义
--》点击添加
--》模块界面。点击刚才创建的模块,进入编辑页面
##创建的模板创建监控项
--》上排监控项
--》右上角创建监控项
--》名称 Number of login user
--》键值 键值必须要与自定义的监控项配置文件中设置的保持一致
--》更新间隔 10s
--》历史数据保留时间
--》趋势存储时间 根据需求设置
--》点击添加
##创建的模板创建触发器
--》上排触发器
--》右上角创建触发器
--》名称 根据需要创建 number of login users is greater than 3
--》严重性 根据需要选择,根据严重程度可自定义设置
--》表达式 右面添加
##表达式添加
--》监控项 选择刚才创建的监控行
--》根据要求选择功能
--》结果 根据要求选择
--》点击插入
##创建的模块创建图形
--》上排图形
--》右上角创建图形
--》名称 根据需要写
--》高、宽 保持默认值
--》监控项,点击添加 选择刚才创建的监控项
--》功能 根据要求选择 最大
--》点击添加
##将主机与创建的模板关联
##一个主机可以关联多个模块
--》左侧配置
--》主机
--》点击主机名
--》模块 选择需要的模块
--》点击更新
##查看主机的图形结构
--》左侧监测
--》主机
--》点击主机名
--》选择图形
--》就能看见各个模块的线型图
##监控 nginx 服务的并发量等数据
##nginx在线源
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
yum -y install nginx
##修改配置文件,打开状态统计模块
vim /etc/nginx/conf.d/default.conf
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
systemctl restart nginx
systemctl enable nginx
netstat -lntp | grep nginx
##获取各种nginx状态数据
curl -sL http://127.0.0.1/nginx_status
Active connections: 当前的活动连接数
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
accepts:已接收的连接数
handled:成功处理的连接数
requests:累计处理的总请求数
Reading:当前正在从客户端读取数据的连接数
Writing:当前正在向客户端写入数据的连接数
Waiting:当前空闲并等待请求的连接数
## nginx 状态统计脚本
vim /opt/zbx-nginx.sh
#/bin/bash
#Description:Automated monitoring nginx performance and process nginx_status scripts
HOST="127.0.0.1"
PORT=80
stub_status="nginx_status"
COMMAND=$1
nginx_check() {
if [ -f /sbin/pidof ]; then
/sbin/pidof nginx | wc -w
else
ps aux | grep -v "grep" | grep -c "nginx:"
fi
}
nginx_active(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Active/ {print $NF}'
}
nginx_reading(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Reading/ {print $2}'
}
nginx_writing(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Writing/ {print $4}'
}
nginx_waiting(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Waiting/ {print $6}'
}
nginx_accepts(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $1}'
}
nginx_handled(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $2}'
}
nginx_requests(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $3}'
}
case $COMMAND in
check)
nginx_check
;;
active)
nginx_active
;;
reading)
nginx_reading
;;
writing)
nginx_writing
;;
waiting)
nginx_waiting
;;
accepts)
nginx_accepts
;;
handled)
nginx_handled
;;
requests)
nginx_requests
;;
*)
echo $"USAGE:$0 {check|active|reading|writing|waiting|accepts|handled|requests}"
esac
chmod +x /opt/zbx-nginx.sh
##到 agent 配置文件中准备文件
cd /etc/zabbix/zabbix_agentd.d/
vim nginx_status.conf
UserParameter=nginx.status[*],/opt/zbx-nginx.sh $1
[*]:代表使用参数时后面的参数
$1:也是表示后面跟的参数,表示[]里的值
##重启服务
systemctl restart zabbix-agent
##在 zabbix 服务端验证键的连通性
zabbix_get -s '192.168.242.67' -p 10050 -k 'nginx.status[requests]'
根据上面的Web创建模块方法,创建模块,创建监控项,创建触发器,创建图形,并连接主机
##创建报警媒介
--》左侧,管理下的报警媒介类型
-->右上角创建媒体类型
--》【名称】设置成需要的名称 例如: qq_Email
--》【SMTP服务器】设置成 smtp.qq.com
--》【SMTP服务器端口】设置成 25
--》【SMTP HELO】设置成 qq.com
--》【SMTP电邮】设置成 自己的邮箱地址
--》【认证】选择 用户名和密码
--》【用户名称】设置成 自己的邮箱地址
--》【密码】可登录QQ邮箱页面,点击【设置】-->【账户】中的【生成授权码】,通过短信 获取授权码
--》【描述】可自定义
--》点击上方菜单栏【Message templates】
--》点击【添加】
--》【Message type】选择 问题,点击【更新】
--》点击 【添加】,并测试功能
##关联用户
--》左侧,user settings,profile
--》上面报警媒介
--》点击添加
--》类型 选择刚才创建的报警类型
--》收件人 写自己的邮箱地址
--》当启用时 选择启用的事件
--》严重性 选择需要的事件的严重性
--》点击添加后点击更新
##报警媒介关联触发器
--》左侧,配置,动作,Trigger actions
--》点击名称进行修改
--》点击条件中的添加
--》类型为触发器
--》操作者为等于
--》触发器选择需要的触发器
--》最后点击添加和更新
##关闭防火墙
systemctl disable --now firewalld
setenforce 0
##确保客户端上的 zabbix-agent 服务状态正常
systemctl is-active zabbix-agent.service
active
在 Web 页面删除原有的客户端主机
点击左边菜单栏【配置】中的【主机】,勾选原有的客户端主机,点击 删除
##在服务端和客户端上配置 hosts 解析
vim /etc/hosts
192.168.242.66 zbx-server
192.168.242.67 zbx-agent01
192.168.242.68 zbx-agent02
##web界面配置自动发现
--》左侧,配置,自动发现
--》右上角创建自动发现规则
--》【名称】设置成 mynetwork
--》【IP范围】设置成 192.168.80.1-254
--》【更新间隔】设置成 10s
--》【检查】点击【添加】
--》【检查类型】选择 Zabbix 客户端
--》【端口范围】设置成 10050
--》【键值】设置成 system.uname
--》【设备唯一性准则】选择 IP地址
--》【主机名称】选择 DNS名称
--》【可见的名称】选择 主机名称
--》勾选 【已启用】
--》点击 【添加】
###开启发现动作
--》左侧配置,动作
--》发现动作
--》勾选 【Auto discovery. Linux servers.】,点击 【启用】
vim /etc/zabbix/zabbix_agentd.conf
##190行
HostnameItem=system.hostname
取消注释
##重启 zabbix-agent 服务
systemctl restart zabbix-agent2
###去除配置文件中的注释项和空白行
egrep -v "^#|^$" /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.80.20
ServerActive=192.168.80.20
Hostname=zbx-agent01
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
###在web页面配置自动注册
--》左侧,配置,动作,自动注册动作
--》右上角创建动作
--》名称 Auto registration
--》点击条件中的 添加
--》类型 主机名称
--》操作者 包含
--》值 zbx-agent
--》添加
--》上面操作
--》点击【添加】,【操作类型】选择 添加主机, 点击 【Add】
--》点击【添加】,【操作类型】选择 添加到主机群组,
【主机群组】选择 Linux servers, 点击 【Add】
--》点击【添加】,【操作类型】选择 与模板关联,
【模板】搜索 Linux,选择 Linux by Zabbix agent,
点击 【Add】
--》点击下方的【添加】
##等待一段时间后,点击左边菜单栏【配置】中的【主机】刷新,即可刷新出自动发现的客户端主机
###在服务端查看 zabbix 日志
tail -f /var/log/zabbix_server.log