监控知识
为什么要使用监控
实时
对系统不间断实时监控
反馈
实时反馈系统当前状态
可靠
保证服务可靠性安全性
稳定
保证业务持续稳定运行
如何进行监控
先举个小例子
磁盘df -h
内存 free -h|m
这四个值相加为内存总大小
磁盘 iostat(下载sysstat.x86_64)
一般情况下各项指标在百分之60-70属于正常状态,超过80%进行报警
监控思想:
发现问题:当系统发生故障报警,我们会收到报警的信息
定位问题:故障邮件一般都会写某某主机故障、具体故障的内容,我们需要对报警聂荣进行分析,比如一台服务器连不上,我么就需要考虑是网络问题,还是负载太高导致长时间无法连接,又或者某开发触发了防火墙禁止的相关策略等等
解决问题:通过解决的优先级去解决该故障
总结问题:当我们解决完重大故障后,需要对故障原因以及防范进行总结归纳
流行的监控工具
cacti:基于网络流量监控,图形界面
nagios:基于主机监控(绿黄橙红)
zabbix:是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的agent代理,也支持SNMP、IPMI、Telnet ssh等多种协议,将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统所不能比的,相对来说,很牛逼
小米监控open-faicon:
lepus天兔:数据库监控
prometheus普罗米修斯:容器监控
监控内容:
系统监控:CPU、内存、磁盘、网络、进程、TCP
硬件监控:路由器、交换机、防火墙
服务监控:nginx php tomcat redis memcache mysql
web监控:请求时间、响应时间、加载时间
日志监控 ELK(手机、存储、分析、展示)日志易
Elasticsearch:基于json将日志整理成统一格式
Logstash:集中转换存储
Kibana:实现数据可视化,运维人员可以通过Kibana分析日志信息
安全监控 firewalld WAF(Nginx+lua)安全宝、牛盾云、安全狗
网络监控 smokeping 多机房
业务监控 活动引入多少流量、产生多少注册量、带来多大价值
监控流程
数据采集:zabbix通过SNMP、Agent、ICMP、SSH、IPMI等对系统进行数据采集
数据存储:zabbix存储在MySQL上,也可以存储在其他数据库服务
数据分析:当我们时候需要复盘分析故障时,zabbix能够给我们提供图形以及时间等相关信息,方便我们确定故障所在
数据展示:web界面展示
监控报警:电话报警、邮件报警、微信报警、短信报警、报警升级机制等(无论什么报警都可以)
报警处理:当收到报警,我们需要根据故障的级别进行处理,比如:重要紧急、重要不紧急,根据故障级别,配合相关的人员进行快速处理
单机监控
监控命令:
cpu监控命令
uptime
vmstat
w
top
检测cpu内存和交换分区进程
us:用户态,跟用户操作有关
sy:系统态,和内核处理有关
id:CPU空闲
htop
检测进程
glances
同时监控cpu内存网络和磁盘读写(最全)
测网速拖个文件进来就好
sar
内存监控命令
free
磁盘监控命令
df
磁盘挂载情况、使用情况
iotop
检测磁盘IO
检测磁盘写
dd if=/dev/zero of=/tmp/test bs=100M count=100
检测磁盘读
磁盘 iostat(下载sysstat.x86_64)
网络监控命令
ifconfig
网卡和本地回环
route
glances
iftop
nethogs
netstat
使用shell脚本实现服务器的监控
要求:每隔1分钟监控一次内存,当你的可用内存低于100m,发邮件报警,要求显示剩余内存
思路:
获取内存可用的值
获取到的内存可用的值如何设定阈值进行比较
比较如果大于100m则不处理,如果小于100m则报警
如何每隔1分钟执行一次
操作:
可用和剩余:
总体减去剩余等于可用的
获取可用内存
vim check_mem.sh
测试:
dd if=/dev/zero of=/tmp/test bs=1500M count=10
bs比available大一些即可
脚本优化
#!/bin/bash
Avai_mem=$(free -m | awk '/^Mem/{print $NF}')
IP=$(hostname -I | awk '{print $1}')
Host=$(hostname)
while :;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 1
done
发布者:LJH,转发请注明出处:https://www.ljh.cool/36137.html