1--Zabbix介绍 ; 安装
一、 监控知识基本概述
1.为什么要使用监控
1.对系统不间断实时监控
2.实时反馈系统当前状态
3.保证服务可靠性安全性
4.保证业务持续稳定运行
2.如何进行监控,比如我们需要监控磁盘的使用率
1.如何查看磁盘使用率 df -h
2.监控磁盘的那些指标 block、 inode
3.如何获取具体的信息 df -h
4.获取的数值到达多少报警 80%
3.流行的监控工具
1.Zabbix
2.Lepus(天兔)数据库监控系统
3.Open-Falcon 小米
4.Prometheus(普罗米修斯, Docker、 K8s)
4.如果去到一家新公司,如何入手监控
1.硬件监控 路由器、交换机、防火墙
2.系统监控 CPU、内存、磁盘、网络、进程、 TCP
3.服务监控 nginx、 php、 tomcat、 redis、 memcache、 mysql
4.WEB 监控 请求时间、响应时间、加载时间、
5.日志监控 ELk(收集、存储、分析、展示) 日志易
6.安全监控 Firewalld、 WAF(Nginx+lua)、安全宝、牛盾云、安全狗
7.网络监控 smokeping 多机房
8.业务监控 活动引入多少流量、产生多少注册量、带来多大价值
二、 单机时代如何监控
linux中常见的额监控命令
1.top 系统时间 登录用户 负载 进程 cpu 内存 swap 进程详细信息
2.htop(eple) 系统时间 登录用户 负载 进程 cpu 内存 swap 进程详细信息 支持鼠标 树状 快捷键
3.uptime 当前系统时间、登录用户、负载
4.free 监控内存
5.vmstat 程、虚存、页面交换空间及 CPU
5.iostat 磁盘I/O统计
6.df 硬盘 -h block -i inode
7.iftop 流量监控工具
8.nethogs 查看进程占用的网络带宽
9.iotop 进程占用的硬盘I/O
shell脚本监控服务器
没有监控工具的时候,shell脚本+定时任务
[root@k8s ~]# cat mem_alter.sh
#!/bin/bash
MEM=`free -m|awk 'NR==2{print $NF}'`
if [ $MEM -lt 100 ];then
echo "web服务器 192.168.2.104 可用内存不足,当前可用内存
$MEM" | mail -s "web服务器内存不足" 29262626@qq.com
fi
缺点:效率低,不能实现集中报警,不能分析历史数据
CPU 监控命令: w、 top、 htop、 glances
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us 用户态: 跟用户的操作有关 35%
sy 系统态: 跟内核的处理有关 60%
id CPU 空闲:
内存监控命令: free
[root@m01 ~]# free -h
total used free shared buff/cache available
Mem: 977M 105M 724M 6.6M 148M 729M
Swap: 1.0G 0B 1.0G
磁盘监控命令: df、 iotop
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.80 25.32 33.36 221034 291193
设备名 每秒传输次数 每秒读大小 每秒写大小 读的总大小 写的总大小
网络监控命令: ifconfig、 route、 glances、 iftop、 nethogs、 netstat
单位换算
Mbps 100Mbps/8
MB 12MB
iftop 中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量、 RX:接收流量、 TOTAL:总流量
#查看 TCP11 中状态
netstat -an|grep ESTABLISHED
netstat -rn # 查看路由信息
netstat -lntup
2.随着时间的推移,用户不断的增多,服务随时可能扛不住会被 oom(out of memory),当系统内存不足的时候,会
触发 oom
1.当系统内存不足的时候就会大量使用 swap
2.当系统大量使用 swap 的时候,系统会特别卡
注意: 有时可能内存还有剩余 300Mb-500Mb,但会发现 swap 依然被使用
[root@ZabbixServer ~]# dd if=/dev/zero of=/dev/null bs=800M
[root@ZabbixServer ~]# tail -f /var/log/messages
Out of memory: Kill process 2227 (dd) score 778 or sacrifice child
Killed process 2227 (dd) total-vm:906724kB, anon-rss:798820kB, file-rss:0kB
3.那单机时代,如何使用 shell 脚本来实现服务器的监控
需求: 每隔 1 分钟监控一次内存,当你的可用内存低于 100m,发邮件报警,要求显示剩余内存
1.怎么获取内存可用的值 free -m|awk '/^Mem/{print $NF}'
2.获取到内存可用的值如何和设定的阈值进行比较
3.比较如果大于 100m 则不处理,如果小于 100 则报警
4.如何每隔 1 分钟执行一次
[root@ZabbixServer ~]# 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 监控快速安装
服务端安装zabbix5.0
#安装要求
#硬件
内存和磁盘
Zabbix同时需要物理内存和磁盘空间。刚开始使用Zabbix,建议128MB物理内存和256MB可用磁盘空间。然而, 具体需要的内存大小和磁盘空间要根据主机数量和监控参数而定。如果你计划对监控的参数进行长期保存,你应该考虑至少在数据库中预留几个GB的空间,以用来保留历史数据。 每个Zabbix的守护进程需要与数据库服务器建立多个连接。分配给连接的内存数量,取决于数据库引擎的配置。
CPU
根据监控参数及选择的数据库引擎,Zabbix,特别是Zabbix数据库,可能需要大量的CPU资源
#时钟同步
对于Zabbix稳定运行而言,服务获得精确的系统时间是非常重要的。ntpd 是一个最流行的用于同步主机和其他服务器之间的时间的后台程序。对于所有运行Zabbix组件的系统,强烈建议这些系统的时间保持同步。
# 0、下载epel源
[root@zabbix01 ~]# yum install epel-release -y
# 1 、获取zabbix官方源
[root@zabbix01 ~]# rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 2、修改源
[root@zabbix01 ~]# sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
[root@zabbix01 ~]# yum clean all && yum makecache
# 3、安装zabbix server和agent
[root@zabbix01 ~]# yum install zabbix-server-mysql zabbix-agent -y
# 4、安装software collections便于安装高版本的php (yum默认php是5.4)
[root@zabbix01 ~]# yum install centos-release-scl -y
# 5、修改zabbix前端源
[root@zabbix01 ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1 #修改为1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
# 6、安装zabbix前端环境
[root@zabbix01 ~]# yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
# 注意时间正确
[root@zbbbix ~]# yum install -y ntpdate
[root@zbbbix ~]# ntpdate -u ntp.aliyun.com
[root@zbbbix ~]# mv /etc/localtime{,.bak}
[root@zbbbix ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 7、安装zabbix所需要的数据库
7.1、配置MySQL的yum源
[root@zabbix01 ~]# cat > /etc/yum.repos.d/mysql.repo << EOF
# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF
7.2、安装MySQL
[root@zabbix01 ~]# yum install mysql-community-server
7.3、启动MySQL
[root@zabbix01 ~]# systemctl enable --now mysqld.service
# MYSQL5.7版本默认密码在mysqld.log日志里面
[root@zabbix01 ~]# grep 'localhost' /var/log/mysqld.log
2021-07-31T07:54:52.161434Z 1 [Note] A temporary password is generated for root@localhost: 3dzy(StgsxNT
7.4、检查MySQL运行状态
[root@zabbix01 ~]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-07-29 00:04:02 CST; 8s ago
7.5、创建zabbix依赖数据库
[root@zabbix01 ~]# mysql -uroot -p'3dzy(StgsxNT'
# 7.5.1、修改密码并授权root用户
mysql> set password=password('Cdan@111');
mysql> grant all privileges on *.* to root@'localhost' identified by 'Cdan@111';
mysql> grant all privileges on *.* to root@'%' identified by 'Cdan@111';
mysql> flush privileges;
# 7.5.2、创建zabbix库及授权
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'Cdan@111';
mysql> grant all privileges on zabbix.* to zabbix@'192.168.15.%' identified by 'Cdan@111';
mysql> flush privileges;
mysql> exit
# 7.5.3、 my.cnf文件
[root@zabbix01 ~]# grep '^[^#]' /etc/my.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
default-character-set=utf8mb4
[mysql]
user="root"
password="Cdan@111"
default-character-set=utf8mb4
# 8、启动数据库
[root@zabbix01 ~]# systemctl restart mysqld
# 9、导入数据库
[root@zabbix01 ~]# cd /usr/share/doc/zabbix-server-mysql-5.0.14/
[root@zabbix01 zabbix-server-mysql-5.0.14]# zcat create.sql.gz | mysql -uroot -p'Cdan@111' zabbix
# 10、修改zabbix配置文件
10.1、修改zabbix_server.conf文件
[root@zabbix01 ~]# vim /etc/zabbix/zabbix_server.conf
[root@zabbix01 ~]# grep '^DBPa' /etc/zabbix/zabbix_server.conf
DBPassword=Cdan@111
10.2、修改zabbix.conf文件
[root@zabbix01 ~]# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
[root@zabbix01 ~]# grep 'timezone' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
# 11、启动zabbix
[root@zabbix01 ~]# systemctl enable --now zabbix-server zabbix-agent.service httpd rh-php72-php-fpm.service
# 12、ip访问
192.168.15.10/zabbix 依次完成
默认用户 Admin 密码zabbix
词汇表
zabbix-server :负责接收agent的数据,分析并存入mysql
zabbix-agent :负责采集客户端的数据并发送给zabbix-server
zabbix-web : 负责展示,过滤,配置监控项,触发器,报警媒介
mysql :实际负责存储数据
监控项 :每一个实际的监控内容
自定义监控项 :默认监控模板没有的监控内容,需要自己自定义的监控
应用集 : 把监控项分类划分
触发器 :监控项的报警阈值
报警媒介 :报警的方式 微信 邮件
图形 :监控项历史记录的趋势图,多个监控项可以一起展示
聚合图形 :多个图形可以组合成一个更大的图形
调整字符集为中文
修复中文乱码
打开图形之后会发现语言为乱码,原因是缺少字体
解决方法:安装字体并替换现有字体
[root@m01 ~]# yum install wqy-microhei-fonts -y
[root@m01 ~]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf
再次刷新发现已经变成中文了