1. 为什么需要监控
保证业务7*24小时,稳定运行
提前做监控,只要有问题立马报警,报警需要时间
有时候出的故障,故障处理需要时间
load average: 0.12, 5.28, 7.87
负载高峰期已经过去了
1分钟 5分钟 15分钟
load average: 7.87,5.28,0.12
负载高峰期要来了
nginx 业务日志,ip来源 url
zabbix 监控工具,监控系统
写shell脚本,读取当前内存的值,判断内存是否不足,如果内存不足,发送邮件
定时任务:分时日月周 命令
监控工具:
zabbix: 安装简单,功能强大,易用性比较强,扩展灵活 ,数据存储,数据分析
nagios: 没有数据库,不能做数据分析,
cacti: 数据库,做数据分析,自定义监控麻烦
open-falcon: 适合有开发基础的人去用
prometheus:插件比较少,最适合监控容器
2. 常见linux监控命令
cpu: top htop uptime vmstat
内存: free
磁盘: df iotop
网卡: iftop #查看IP地址占用流量 nethogs #查看进程占用流量
系统进程: ps pstree #以树状的形式查看进程
3. zabbix基础架构
3. zabbix安装
部署一套zabbix监控系统
数据采集 zabbix-agent(被监控主机)
数据分析,报警 zabbix-server 核心程序(配置数据库的账号密码)
数据存储 支持多种数据库mysql,mariadb,pgsql,sqlite
数据展示 zbbix-web界面(配置数据库的账号密码)
yum安装软件(zabbix 安装LTS版本)
centos-base 基础软件包
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
zabbix yum仓库 repo文件 https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
# 1. 添加zabbix的yum仓库,替换repo文件中下载地址为清华源
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
sed -i "s#http://repo.zabbix.com/zabbix#https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix#g" zabbix.repo
# 2. yum安装zabbix-server-mysql,zabbix-web-mysql,数据库mysql,pgsql
yum install zabbix-server-mysql zabbix-web-mysql -y
yum install mariadb-server -y
# 3. 启动配置数据库(创库,授权,导入初始数据)
systemctl start mariadb.service
systemctl enable mariadb.service
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by '123456';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
rpm -ql zabbix-server-mysql # 查看这包有什么文件/usr/share/doc/zabbix-server-mysql-4.0.19/create.sql.gz
#导入初始数据
zcat /usr/share/doc/zabbix-server-mysql-4.0.49/create.sql.gz|mysql -uzabbix -p123456 zabbix
#验证数据导入
mysql -uzabbix -p123456 zabbix -e "show tables;"|head -6
# 4. 配置启动zabbix-server
vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
systemctl start zabbix-server.service
systemctl enable zabbix-server.service
e:配置zabbix-web(lamp)
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
systemctl start httpd
systemctl enable httpd
访问http://10.0.0.10/zabbix来安装
初始账号密码:Admin/zabbix
如果后期需要改动数据库的IP地址,可以到/etc/zabbix/web/zabbix.conf.php进行修改
Congratulations! You have successfully installed Zabbix frontend.
Configuration file "/etc/zabbix/web/zabbix.conf.php" created.
登录界面后修改密码和调整中文
# zabbix-server也需要通过zabbix-agent来监控自己,在zabbix-server上安装zabbix-agent, 安装、配置、启动
yum install zabbix-agent -y
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
4. zabbix监控主机
4.1 zabbix添加监控主机
10.0.0.11被监控主机安装zabbix-agent来采集数据,传递给服务端
# 1. yum安装配置启动zabbix-agent,在web01(10.0.0.11)上安装zabbix-agent(不需要配置zabbix仓库,直接下载rpm包即可)
yum install zabbix-agent -y
vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.10
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
# 剩下的步骤;web界面鼠标点点
zabbix-agent 配置文件中,Server的地址 127.0.0.1
Template OS Linux 模板:
应用集 10 监控项 34 触发器 15 图形 5
监控项:34个监控指标,监控,取值
应用集就是对监控项进行分组
触发器:定义报警条件(阈值)
图形:根据多个监控项的值来出图
zabbix特别好用的功能之一就是模板,模板里面定义了很多监控项
监控项不一定有触发器,监控项可以做数据分析
4.2 zabbix命令行自定义监控项
监控模板中不存在的监控项,这时需要自定义监控项
命令行监控io的读写速度
创建自定义监控项:
1. 命令行取值
yum install sysstat.x86_64 -y
iostat|awk '$1~/sda/{print $2}'
tps kB_read/s kB_wrtn/s
每秒传输的次数 每秒读取的速度 每秒写入的数据
# 2. 修改zabbix-agent配置文件
UserParameter=<key>,<shell command>
key变量名称不能相同
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=tps,iostat|awk '$1~/sda/{print $2}'
systemctl restart zabbix-agent.service
# 3. 在zabbix-server上使用zabbix-get测试取值(在服务端安装 yum -y install zabbix-get)
zabbix_get -s 10.0.0.11 -k nginx_staus
# 4. 在web界面上给web01: 10.0.0.11添加监控项
前两步操作,是为了让web01支持监控tps值,zabbix-web决定要不要监控tps值
4.2 zabbix脚本自定义监控项
监控模板中不存在的监控项,这时需要自定义监控项
脚本监控nginx的健康状态
# 1. 脚本取值/server/scripts/ngx_check.sh
[root@localhost scripts]# cat ngx_check.sh
#!/bin/bash
status_code=$(ps -fe | grep nginx | wc -l)
if [ $status_code -lt 2 ]
then
echo 0
else
echo 1
fi
# 2. 修改zabbix-agent配置文件
[root@localhost scripts]# cat /etc/zabbix/zabbix_agentd.conf|grep
UserParameter=tps,iostat|awk '$1~/sda/{print $2}'
UserParameter=nginx_status,/server/scripts/ngx_check.sh
## 重启zabbix-agent
systemctl restart zabbix-agent.service
# 3. 在zabbix-server上使用zabbix-get测试取值(在服务端安装 yum -y install zabbix-get)
[root@localhost ~]# zabbix_get -s 10.0.0.11 -k nginx_status
1
# 4. 在web界面上给web01: 10.0.0.11添加监控项
# 5. 值映射,在查看最新数据的时候,0和1显示效果不号,显示好看的话可以使用值映射(管理--一般--值映射--创建值映射)也可以自定义映射
1 up
0 down