为什么需要监控?
保证业务7*24小时,稳定运行
小厂要求满足:99.9%
大厂要求满足99.99%
提前做监控,只要有问题立马报警,报警需要时间
有时候出的故障,故障处理需要时间
高可用性99.99% 这个很难
linux系统 oom Out of memory linux内核杀掉程序进程,释放内存
网速快,网页秒开
网速慢,网页超时 1M/s 100M/s
挖矿: 比特币
load average: 0.12, 5.28, 7.87
负载高峰期已经过去了
1分钟 5分钟 15分钟
load average: 7.87,5.28,0.12
负载高峰期要来了
nginx 业务日志,ip来源 url
zabbix 监控工具,监控系统
写shell脚本,读取当前内存的值,判断内存是否不足,如果内存不足,发送邮件
定时任务:分时日月周 命令
个人来说:我的业务就一个博客,就运行在一台云主机上
shell脚本来监控:
好处:省资源
缺点:监控内存,监控cpu,监控网卡,
当监控主机多的时候
centos6
centos7
Ubuntu
监控工具:
zabbix: 安装简单,功能强大,易用性比较强,扩展灵活 ,数据存储,数据分析
nagios: 没有数据库,不能做数据分析,
cacti: 数据库,做数据分析,自定义监控麻烦
ganglia:
open-falcon: 适合有开发基础的人去用
prometheus:插件比较少,最适合监控容器
部署一套zabbix监控系统
数据采集 zabbix-agent(被监控主机)
数据分析,报警 zabbix-server 核心程序(配置数据库的账号密码)
数据存储 支持多种数据库mysql,mariadb,pgsql,sqlite
数据展示 zbbix-web界面(配置数据库的账号密码)
zabbix 安装LTS版本
yum安装软件
centos-base 基础软件包
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
a:添加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
b:yum安装zabbix-server-mysql,zabbix-web-mysql,数据库mysql,pgsql
yum install zabbix-server-mysql zabbix-web-mysql -y
yum install mariadb-server -y
c:启动配置数据库(创库,授权,导入初始数据)
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.19/create.sql.gz|mysql -uzabbix -p123456 zabbix
#验证数据导入
mysql -uzabbix -p123456 zabbix -e “show tables;”|head -6
d:配置启动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.71/zabbix来安装
初始账号密码:Admin/zabbix
Congratulations! You have successfully installed Zabbix frontend.
Configuration file “/etc/zabbix/web/zabbix.conf.php” created.
登录界面后修改密码和调整中文
下载zabbix源码包,编译参数
zabbix-server也需要通过zabbix-agent来监控自己
#在zabbix-server上安装zabbix-agent
安装,配置,启动
yum install zabbix-agent -y
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
在web01上安装zabbix-agent(不需要配置zabbix仓库,直接下载rpm包即可)
b:yum安装配置启动zabbix-agent
rpm -ivh zabbix-agent-4.0.19-1.el7.x86_64.rpm
vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.71
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个监控指标,监控,取值
应用集就是对监控项进行分组
触发器:定义报警条件(阈值)
图形:根据多个监控项的值来出图
想监控io的读写速度
创建自定义监控项:
a:命令行取值
iostat|awk ‘$1~/sda/{print $2}’
tps kB_read/s kB_wrtn/s
每秒传输的次数 每秒读取的速度 每秒写入的数据
b:修改zabbix-agent配置文件
UserParameter=,
key变量名称不能相同
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=tps,iostat|awk ‘$1~/sda/{print $2}’
systemctl restart zabbix-agent.service
c:在zabbix-server上使用zabbix-get测试取值(在服务端安装 yum -y install zabbix-get)
zabbix_get -s 10.0.0.100 -k nginx_staus
d:在web界面上鼠标点点
前两步操作,是为了让web01支持监控tps值,zabbix-web决定要不要监控tps值
keepalived nginx健康状态
#!/bin/bash
status_code=$(ps -fe | grep nginx | wc -l)
if [ $status_code -lt 2 ]
then
echo 0
else
echo 1
fi
值映射
1 up
0 down
管理–一般–值映射–创建值映射