一、zabbix:自带图形化界面,通过网页就可以监控所有的服务器的状态,事件告警,邮箱通知等。
1.zabbix是什么:web界面提供的是分布式监控以及网络监控功能的开源的企业级的软件解决方案。
2.zabbix可以提供各种类型的监控模板,保证服务器的正常运行,灵活的通知机制,可以让管理员快速定位。
3.zabbix由两部分组成:在server上可选安装zabbix-agent
zabbix-server:服务端收集数据,提供网页展示和数据的配置
zabbix-agent:客户端 把收集到的数据发送到服务器
4.zabbix的五大组件:
zabbix server
zabbix agent
zabbix_proxy:代理服务器,是安装在监视的目标系统上的软件组件,可以代替zabbix_server收集数据,然后由代理软件再传送给服务端zabbix_server。减轻主服务器的压力。
zabbix_get:可选组件,提供命令行的工具(zabbix的命令行)。
zabbix_sender:发送器,可选组件,可以将客户端的数据自定义操作之后发送到zabbix服务器。也可以通过脚本,把脚本处理过的数据发送到客户端。
二、实验
1.三台主机关闭防火墙并同步时间
2.部署服务端
更改主机名
获取zabbix下载资源、更换 zabbix.repo 为阿里源
清除缓存建立元数据
如果清除缓存建立元数据遇到报错则执行以下两条命令后再清除及建立
在服务端配置服务端和客户端的监控
修改 zabbix-front 前端源,安装 zabbix 前端环境到 scl 环境下
安装 zabbix 所需的数据库并启动
初始化数据库,并设置密码为123456
添加数据库用户,以及 zabbix 所需的数据库信息
导入数据库信息,查询 sql 文件的位置
导入 Zabbix 监控系统所需的 MySQL 数据库架构
修改 zabbix server 配置文件,修改数据库的密码
修改 zabbix 的 php 配置文件
启动 zabbix 相关服务,并设置为开机自启
避免网页内容乱码
访问
部署客户端
设置 zabbix 的下载源,更改主机名,清理缓存建立元数据
安装 zabbix-agent2
修改 agent2 配置文件
启动 agent2,并设置为开机自启
在服务端验证 zabbix-agent2 的连通性
安装 zabbix 主动获取数据的命令
修改服务器agentd配置文件并重启
添加客户端主机
客户端写一个监控脚本
编写脚本
服务端验证
zabbix页面创建模板
监控nginx
客户端安装nginx
配置nginx的监控脚本,脚本名自定义
#!/bin/bash
#Description:Automated monitoring nginx performance and process nginx_status scripts
HOST="localhost"
PORT=80
stub_status="stub_status"
NGINX_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 $NGINX_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
服务端测试脚本