一、监控概述
1.1、为什么要监控
监控是整个运维乃至整个产品生命周期中重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。
- 对系统不间断实时监控
- 实时反馈系统当前状态
- 保证服务可靠性安全性
- 保证业务持续稳定运⾏
1.2、如何进行监控
# ⽐如我们需要监控磁盘的使⽤率
1.如何查看磁盘使⽤率 df -h
2.监控磁盘的那些指标 block、inode
3.如何获取具体的信息 df -h|awk \'/\/$/{print $(NF-1)}\'
4.获取的数值到达多少报警 80%
1.3、流⾏的监控⼯具
1.cacti、Nagios、Zabbix、
2.Lepus(天兔)数据库监控系统
3.Open-Falcon ⼩⽶
4.Prometheus(普罗⽶修斯,Docker、K8s)
1.4、如何入手监控
1.硬件监控 路由器、交换机、防⽕墙、服务器
2.系统监控 Windows/Linux CPU、内存、磁盘、⽹络、进程、TCP
3.服务监控 nginx、php、tomcat、redis、memcache、mysql
4.WEB监控 请求时间、响应时间、加载时间、
5.⽇志监控 ELk(收集、存储、分析、展示) ⽇志易、阿里云日志系统
6.安全监控 Firewalld(限制来源的ip)、WAF(Nginx+lua)、安全宝、⽜盾云、安全狗
7.⽹络监控 smokeping 多机房、监控宝、全国各地实时延迟
8.业务监控 活动引⼊多少流量、产⽣多少注册量、带来多⼤价值
1.5、Linux常用监控命令
1.5.1、CPU监控命令
w、top、htop、glances
# 安装
yum install epel* -y
yum install glances htop -y
1.5.2、内存监控命令
free -m
1.5.3、磁盘监控命令
df iotop iostat
# 安装
yum install iotop sysstat -y
1.5.4、网络监控命令
ifconfig、route、glances、iftop、nethogs、netstat
# 安装
yum install -y netstat
iftop
中间的<= =>这两个左右箭头,表示的是流量的⽅向。
TX:发送流量、RX:接收流量、TOTAL:总流量
# 查看TCP11中状态
netstat -an|grep ESTABLISHED
netstat -rn #查看路由信息
netstat -lntup
1.6、Shell脚本进行简单监控
需求: 每隔1分钟监控⼀次内存,当你的可⽤内存低于100m,发邮件报警,要求显示剩余内存
1.怎么获取内存可⽤的值 free -m|awk \'/^Mem/{print $NF}\'
2.获取到内存可⽤的值如何和设定的阈值进⾏⽐较
3.⽐较如果⼤于100m则不处理,如果⼩于100则报警
4.如何每隔1分钟执⾏⼀次
[root@zabbix-server ~]# cat free.sh
#!/usr/bin/bash
HostName=$(hostname)_$(hostname -i)
Date=$(date +%F)
while true;do
Free=$(free -m|awk \'/^Mem/{print $NF}\')
if [ $Free -le 100 ];then
echo "$Date: $HostName Mem Is < ${Free}MB"
fi
sleep 5
done
二、Zabbix概述及安装
2.1、Zabbix概述
2.2、Zabbix基础架构
2.3、Zabbix Server安装
zabbix安装步骤:https://www.zabbix.com/download
1)配置zabbix仓库
[root@zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@zabbix-server ~]# yum clean all
2)安装Zabbix server 和 agent
[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-agent -y
3)安装zabbix前端
# 1、安装centos-release-scl
[root@zabbix-server ~]# yum install centos-release-scl -y
# 2、配置/etc/yum.repos.d/zabbix.repo
[root@zabbix-server ~]# vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1 #配置zabbix-frontend生效
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
# 3、安装zabbix前端包
[root@zabbix-server ~]# yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -y
4)安装mysql并初始化
# 安装mysql5.7
[root@zabbix-server ~]# cd /usr/local/src/
[root@zabbix-server src]# wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
[root@zabbix-server src]# rpm -ivh mysql57-community-release-el7-8.noarch.rpm
[root@zabbix-server src]# yum -y install mysql-server
# 启动mysql并查看初始化密码
[root@zabbix-server src]# systemctl start mysqld
[root@zabbix-server src]# systemctl enable mysqld
[root@zabbix-server src]# netstat -lntp|grep 3306
tcp6 0 0 :::3306 :::* LISTEN 2045/mysqld
[root@zabbix-server src]# grep \'temporary password\' /var/log/mysqld.log
2021-02-13T02:27:31.983845Z 1 [Note] A temporary password is generated for root@localhost: .&Ewqebl*31,
# 登录mysql并修改密码
[root@zabbix-server src]# mysql -uroot -p\'.&Ewqebl*31,\'
mysql> set password for root@localhost = password(\'Root123@@\'); #密码需要尽可能复杂
# 初始化mysql
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by \'Zabbix123@@\';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit
# 导入zabbix初始数据(166张表)
[root@zabbix-server src]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
5)配置Zabbix server连接数据库
[root@zabbix-server src]# vim /etc/zabbix/zabbix_server.conf
DBPassword=Zabbix123@@
6)zabbix前端配置
# 打开注释并配置域名
[root@zabbix-server src]# vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
listen 80;
server_name dianchou.com;
#配置php-fpm
[root@zabbix-server src]# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
listen.acl_users = apache,nginx #添加nginx用户
php_value[date.timezone] = Asia/Shanghai #修改时区
# 配置nginx,注释默认配置
[root@zabbix-server src]# vim /etc/opt/rh/rh-nginx116/nginx/nginx.conf
# server {
# listen 80 default_server;
# listen [::]:80 default_server;
# server_name _;
# root /opt/rh/rh-nginx116/root/usr/share/nginx/html;
....
7)启动zabbix server及agent
[root@zabbix-server src]# systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
[root@zabbix-server src]# systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
8)访问zabbix并配置
浏览器访问:http://ip或http