监控知识基本概述

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