Zabbix监控
:非常成熟的监控日志
运维人员一定要会监控服务的状态,网站的流量,远程服务的运行状态
保证整个集群的工作正常。
Zabbix是是个基于web界面提供的可视化的监控服务软件,以分布式的方式系统监控以及网络监控,硬件监控等等开源的软件
Zabbix server的作用:通过一系列的组件SNMP,zabbix agent ping通过端口远程的监控客户端的数据,把数据收集到服务端进行展示,以及提供用户分析的页面(web)
Zabbix agent:就是被监控的目标机器,把需要收集到数据以及自定义的监控项数据,发送给zabbix server。
20.0.0.51 server 服务端
20.0.0.52 agent 客户端
---------- 部署 zabbix 服务端 ----------
zabbix-server 内存至少 2G,推荐 4G
//获取 zabbix 的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
//更换 zabbix.repo 为阿里源
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo
清缓存和建立元数据
yum clean all && yum makecache
Zabbix-server-mysql
指定安装zabbix之后,使用mysql作为数据库后端
Zabbix-agent
把主服务加入到目标当中
yum -y install centos-release-scl
scl基于红帽centos系统软件安装使用的一种机制,可以是一个系统运行一个进程的不同版本,而且不会发生冲突
解决Zabbix与其他web组件的兼容性。
//修改 zabbix-front 前端源,安装 zabbix 前端环境到 scl 环境下
vim zabbix.repo
安装mysql的web组件和Apache组件
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
Zabbix-web-mysql-scl
可以安装zabbix的依赖环境PHP,以及mysql依赖环境,可以安装多个版本
Zabbix-Apache-conf-scl
安装所有Apache组件(web组件),可以安装多个版本
Apache提供了所有的可兼容性的进程,确保zabbix前端工作页面正常
//安装 zabbix 所需的数据库
yum install -y mariadb-server mariadb
systemctl enable --now mariadb
给数据库初始化
mysql_secure_installation #初始化数据库,并设置密码,如 123456
//添加数据库用户,以及 zabbix 所需的数据库信息
mysql -u root -p123456mysql -u root -p123456
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
创建一个名为 "zabbix" 的 MySQL 数据库,字符集为 UTF-8,排序规则为 utf8_bin
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;
//导入数据库信息
rpm -ql zabbix-server-mysql #查询 sql 文件的位置
zcat /usr/share/doc/zabbix-server-mysql-5.0.40/create.sql.gz | mysql -uroot -p123456 zabbix
#导入 Zabbix 监控系统所需的 MySQL 数据库架构
//修改 zabbix server 配置文件,修改数据库的密码
vim /etc/zabbix/zabbix_server.conf
//修改 zabbix 的 php 配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
一次性启动所有组件
//启动 zabbix 相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
浏览器访问:http://20.0.0.56/zabbix
Zabbix:
Server端口:10050 服务端端口
Agent:10051 监控端端口
切换成中文
解决 zabbix-server Web页面中文乱码问题
yum install -y wqy-microhei-fonts
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
---------- 部署 zabbix 客户端 ----------
zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。
zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端口。
//服务端和客户端都配置时间同步(两边都做)
yum install -y ntpdate
ntpdate -u ntp.aliyun.com
//设置 zabbix 的下载源,安装 zabbix-agent2
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
yum clean all && yum makecache
yum install -y zabbix-agent2
//修改 agent2 配置文件
vim /etc/zabbix/zabbix_agent2.conf
//启动 zabbix-agent2
systemctl start zabbix-agent2
systemctl restart zabbix-agent2
systemctl enable zabbix-agent2
在服务端验证 zabbix-agent2 的连通性
yum install -y zabbix-get #安装 zabbix 主动获取数据的命令
zabbix_get -s '20.0.0.57' -p 10050 -k 'agent.ping'
zabbix_get -s '20.0.0.57' -p 10050 -k 'system.hostname'
配置》主机》创建主机
就可以实现监控了
例:
监控服务器的登录节点,不能超过三个
在工作当中主要靠脚本
监控5个终端
vim /etc/zabbix/zabbix_agent2.conf
#可以将自定义的监控项配置文件创建在 zabbix_agent2.d 目录中
268 Include=/etc/zabbix/zabbix_agent2.d/*.conf
#自定义监控项的格式如下
291 # Format: UserParameter=
位置监控项的位置
cd /etc/zabbix/zabbix_agent2.d/
vim UserParameter_login.conf
UserParameter=login.user,who|wc -l
systemctl restart zabbix-agent2
Wang6在服务端验证新建的监控项
zabbix_get -s '20.0.0.57' -p 10050 -k 'login.user'
//在 Web 页面创建自定义监控项模板
创建模版
找到模板
创建应用集
创建监控项
测试一下
创建触发器
创建图形
主机和模版进行关联
查看
图形查看
关闭几台虚拟机(只剩两台)
查看
如何添加监控报警的控制邮件
测试
监控告警,邮件结合
最后一步
模拟报警让其验证
监控nginx
步骤一:修改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
Rabbit脚本
服务端测试
创建模板
点击左边菜单栏【配置】中的【模板】,点击【创建模板】
【模板名称】设置成 Template Nginx Status
【可见的名称】设置成 Template Nginx Status
【群组】选择 Template
【描述】可自定义
点击 【添加】,此时就可在【链接的模板】中搜索到Template Nginx Status 了
创建应用集(用于管理监控项的)
点击上方菜单栏【应用集】,点击【创建应用集】
【名称】设置成 Nginx Status
点击 【添加】
创建监控项
点击上方菜单栏【监控项】,点击【创建监控项】
【名称】设置成 Nginx is running
【键值】设置成 nginx.status[check] #键值必须要与自定义的监控项配置文件中设置的保持一致
【更新间隔】设置成 10s
【历史数据保留时长】Storage period 30d #保留时间可自定义设置
点击 【添加】
创建触发器(当监控项获取到监控的值后和触发器预设的值进行对比,判断是否报警)
点击上方菜单栏【触发器】,点击【创建触发器】
【名称】设置成 Nginx is down
【严重性】设置成 一般严重
【表达式】点击添加,【监控项】点击选择 Nginx is running,【功能】选择 last(),【结果】选择=0,点击 【插入】
点击 【添加】
创建图形
点击上方菜单栏【图形】,点击【创建图形】
【名称】设置成 Nginx is running
【宽】、【高】可直接采用默认值
【监控项】点击添加勾选相关监控项 Nginx is running,【功能】选择 最大,其它可保持默认值
点击 【添加】
最后
将主机与模板关联起来(一个主机可以关联多个模板)
点击左边菜单栏【配置】中的【主机】,点击你要关联的主机
点击上方菜单栏【模板】,【Link new tamplates】搜索 Nginx,选择 Template Nginx Status,点击【更新】
此时就点击【监测】中的【主机】,点击你关联主机的【图形】,即可查看到相关的监控项指标