监控知识基本概述
1.为什么要使用监控
1..对系统不间断实时监控 2.实时反馈系统当前状态 3.保证服务可靠性安全性 4.保证业务持续稳定运行 实时、反馈、可靠、稳定
2.如何进行监控,比如我们需要监控磁盘的使用率
1.如何查看磁盘使用率df -h 2.监控磁盘的那些指标block、inode 3.如何获取具体的信息df -h | awk '/\/$/{print $(NF-1)}' 4.获取的数值达到多少报警 80%
监控核心
1.发现问题:当系统发生故障报警,我们会收到故障报警的信息 2.定位问题:故障邮件一般都会写某某主机故障、具体故障的内容,我们需要对报警内容进行分析,比如一台服务器连不上:我们就需要考虑是网络问题、还是负载太高导致长时间无法连接,又或者某开发触发了防火墙禁止的相关策略等等,我们就需要去分析故障具体原因。 3.解决问题:当然我们了解到故障的原因后,就需要通过故障解决的优先级去解决该故障。 4.总结问题:当我们解决完重大故障后,需要对故障原因以及防范进行总结归纳,避免以后重复出现。
3.流行的监控工具
1.cacti、Nagios、zabbix cacti: 网络流量监控 nagios: 主机监控 zabbix: 2.Lepus(天兔)数据库监控系统 3.Open-Falcon 小米
4.如果去到一家新公司,如何入手监控
1.硬件监控 路由器、交换机、防火墙 2.系统监控 CPU、内存、磁盘、网络、进程、TCP 3.服务监控 nginx、php、tomcat、redis、memcache、mysql 4.WEB监控 请求时间、响应时间、加载时间 5.日志监控 ELK(收集、存储、分析、展示)日志易 6.安全监控 Firewalld、WAF(Nginx+lua)、安全宝、牛盾云、安全狗 7.网络监控 smokeping 多机房 8.业务监控 活动引入多少流量,产生多少注册量、带来多大价值
单机时代如何监控
CPU监控命令:w、top、htop、glances 内存监控命令:free 磁盘监控命令:df、iotop 网络监控命令:ifconfig、route、glances、iftop、nethogs、netstat
随着时间的推移,用户不断的增多,服务随时可能扛不住会被oom(out of memory),当系统内存不足的时候,会触发oom 1.当系统内存不足的时候就会大量使用swap 2.当系统大量使用swap的时候,系统会特别卡 注意:有时可能内存还有剩余300MB-500MB,但会发现swap依然被使用
单机时代使用shell脚本实现服务器的监控
需求:每隔1分钟监控一次内存,当你的可用内存低于100m,发邮件报警,要求显示剩余内存
vim check_mem.sh #!/bin/bash #1.定义变量 IP=$(hostname -I | awk '{print $1}') Host=$(hostname) #2.循环语句实现实时监控 while true do Avai_Mem=$(free -m|awk '/^Mem/{print $NF}') Date=$(date +%F-%R) if [ $Avai_Mem -lt 100 ];then echo "报警:${Date}_${Host}_$IP内存不足,可用内存为$Avai_Mem!" else echo "正常,进入下一次循环" fi sleep 60 done 测试内存不足 dd if=/dev/zero of=/dev/null bs=800M 输出结果 sh mem.sh 报警:2020-02-29-19:53_zabbix_10.0.1.81内存不足,可用内存为11! 报警:2020-02-29-19:53_zabbix_10.0.1.81内存不足,可用内存为10!
zabbix3.4监控快速安装
1.配置zabbix仓库
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
2.安装zabbix服务器,前端,代理
yum install zabbix-server-mysql zabbix-agent zabbix-web-mysql mariadb-server -y zabbix-server-mysql #zabbix服务器包 zabbix-web-mysql #zabbix前端包 zabbix-agent #zabbix代理包 mariadb-server #mysql
3.创建初始数据库
#1.启动mariadb systemctl start mariadb && systemctl enable mariadb #2.创建数据库并授权 mysql -uroot -p password mysql> create database zabbix character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; mysql> quit;
4.在Zabbix服务器主机上,导入初始架构和数据。系统将提示您输入新创建的密码
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix
5.为Zabbix服务器配置数据库编辑文件/etc/zabbix/zabbix_server.conf
DBPassword=zabbix
6.修改Apache的/etc/httpd/conf.d/zabbix.conf文件,取消注释并设置正确的时区。
vim /etc/httpd/conf.d/zabbix.conf # 取消注释,并设置正确的时区 php_value date.timezone Asia/shanghai
7.启动zabbix服务器和apache进程,并加入开机自启
systemctl start zabbix-server httpd && systemctl enable zabbix-server httpd.service
8.访问zabbix-web
http://127.0.0.1/zabbix
zabbix快速监控主机
角色 外网IP 内网IP zabbix-server eth0:10.0.1.81 eth1:172.16.1.81 Web01 eth0:10.0.1.7 eth1:172.16.1.7
1.安装zabbix-agent
[root@web01 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.15-1.el7.x86_64.rpm
2.配置Zabbix-Agent指向Zabbix-Server
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.conf Server=172.16.1.81
3.启动Zabbix-Agent,默认监听10050端口
[root@web01 ~]# systemctl start zabbix-agent.service && systemctl enable zabbix-agent.service [root@web01 ~]# netstat -lntp tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1445/zabbix_agentd
4.通过zabbix-web访问zabbix-server,添加zabbix-agent