监控服务存在价值意义(监视 控制)
1.对系统不间断监控
2.实时了解服务器情况
3.保证服务可靠安全性
4.保证业务持续稳定运行
监控服务监控方式
1) 利用系统命令进行监控
监控CPU信息命令: w top htop glances
监控内存信息命令: free
监控系统硬盘命令: df
监控系统进程命令: top htop
监控系统负载命令: uptime w
监控网络信息命令: ifconfig/ip/route/glances/iftop/nethogs
监控服务端口状态: netstat ss
监控磁盘读写情况: iostat iotop
监控硬件信息命令: vmstat
top: 实时查看进程信息情况/cpu情况/内存情况
CPU是每个核心串行处理进程任务, 正处理任务显示为 runing 状态等待处理任务显示为sleep状态
CPU具体情况: CPU处理任务信息情况
us: 系统用户态信息 用户操作 --- CPU
sy: 内核态信息(系统状态) 进程信息 --- CPU
ni: 进程优先级信息(-20~20), 数值越小越优先
网站处理压力访问时, 还可以连接主机进行调试, 调整优先级
id: 系统空闲状态 空闲数值 = 100 - 用户态占用CPU资源 - 系统态占用CPU资源
wa: 系统io等待时间 数值过高, 磁盘性能可能不足
hi: 硬中断信息 CPU识别硬件信息调整
si: 软中断信息 CPU识别软件信息调整
st: CPU真实资源消耗数值 虚拟化有关
2) 利用系统脚本进行监控
脚本编写思路
- 获取到指定监控数据信息
- 将获取监控数据信息和指定阈值进行判断比较
- 利用邮件进行报警通知
需求1: 监控系统内存情况, 进行报警通知
free_test=$(free -h|awk -F '[ M]+' 'NR==2{print $(NF-1)}')
if [ $free_test -lt 100 ]
then
需求2: 监控硬盘使用情况, 进行报警通知
df_test=$(df -h|awk -F "[ %]+" '$1~/sda3/{print $(NF-1)}')
if [ $df_test -gt 80 ]
then
需求3: 监控系统用户登录情况, 进行报警通知
user_test=$(who|wc -l)
if [ $user_test -gt 3 ]
then
3) 利用监控服务进行监控
zabbix: 目前比较主流监控软件
Nagios: 早期比较主流监控软件(实现报警功能比较强大)
cacti: 网络流量数据监控(出图显示数据信息)
Promtheus(普罗米修斯): 监控docker容器主机
open Falcon(小米): 监控架构环境(小米公司技术支持)
Lepus(天兔): 监控数据服务
监控服务工作原理(架构组成)
监控服务部署过程
安装部署过程总结: zabbix安装过程
1) 构建LAMP架构环境, 用户显示zabbix静态和动态页面
2) 获取网站代码信息, zabbix网站代码信息
3) 手动构建数据和表
zabbix服务端部署过程
第一步: 下载更新yum源
清华源(使用)
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
官方说明
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
第二步: 修改调整yum源
vim /etc/yum.repos.d/zabbix.repo
:%s#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#g
第三步: 下载zabbix软件包
yum install -y zabbix-server-mysql zabbix-web-mysql
补充: 页面管理服务
zabbix-web-mysql : 构建 zabbix 前端软件 - A(apache) P(php)
第四步: 构建数据库服务
yum install -y mariadb-server
systemctl start mariadb.service
systemctl enable mariadb.service
mysql_secure_installation --- 数据库安全初始化命令
初始化01: 确认root用户密码(输入当前密码)
Enter current password for root (enter for none): 回车键
初始化02: 设置root用户密码
Set root password? [Y/n] n
初始化03: 是否移除数据库匿名用户
Remove anonymous users? [Y/n] y
初始化04: 是否允许root用户远程登录
Disallow root login remotely? [Y/n] y
初始化05: 是否移除测试数据库
Remove test database and access to it? [Y/n] y
初始化06: 是否重新刷新授权表
Reload privilege tables now? [Y/n] y
第五步: 创建数据库、创建用户、创建表信息
mysql
create database zabbix character set utf8 collate utf8_bin; --- 创建数据库
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; --- 创建用户设置密码
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz|mysql -uzabbix -pzabbix zabbix --- 恢复数据库表信息
第六步: 实现连接数据服务
zabbix服务端进行连接数据库: 修改zabbix服务端配置文件
vi /etc/zabbix/zabbix_server.conf
DBHost=localhost --- 设置本地方式连接数据库
DBName=zabbix --- 设置连接数据库名称
DBUser=zabbix --- 设置连接数据库用户名称
DBPassword=zabbix --- 设置连接数据库用户密码信息
systemctl start zabbix-server.service
systemctl enable zabbix-server.service
检查端口
netstat -lntup|grep zabbix
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 17339/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 17339/zabbix_server
补充:
检查服务日志
tail -f /var/log/zabbix/zabbix_server.log
第七步: zabbix前端页面连接数据库
开启网站服务
systemctl start httpd
systemctl enable httpd
修改网站时区
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
systemctl restart httpd
第八步: 前往前端页面进行查看
http://ip地址/zabbix/setup.php
前端登录密码: 用户(Admin) 密码(zabbix)
进行zabbix页面优化过程
修改页面字符信息
如何利用zabbix监控其他主机
第一步: 需要在被监控主机上安装agent软件/并进行配置
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.9-3.el7.x86_64.rpm
vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
注:
Server = 监控服务器 ip
如果在本地配置默认
第二步: 在网站中实现监控server主机
如何自定义监控项目
什么是监控项目
具体要监控采集数据信息 内存使用情况 磁盘剩余空间 CPU使用信息空闲值
如何查看监控项
配置 - 主机 - 监控项中
多个不同监控项进行分类管理,不同监控项类型就称为应用集
如何具体查看监控项采集数据信息
方式一: 利用命令进行查看
安装zabbix-get软件程序
yum install -y zabbix-get
zabbix_get -s 主机ip地址 -k 键值
注:
键值位置: 配置 —> 主机 —> 过滤器
方式二: 在网站页面进行查看
监测 ---> 最新数据 ---> 筛选主机或监控项信息 ---> 显示详细监控项数据信息
实现自定义监控信息: (原因: 系统默认监控项中没有需要监控项目)
需求: 收集主机磁盘 IO TPS 数值
第一步: 客户端端进行自定义监控项配置
vi /etc/zabbix/zabbix_agentd.conf
UserParameter=......
自定义监控项格式信息: UserParameter=<key>,<shell command>
根据格式信息:
key: 自定义命名
脚本或命令: iostat|awk '$1~/^sda/{print $2}'
systemctl restart zabbix-agent.service
第二步: 在服务端查看监控项数据信息
yum install -y zabbix-get
zabbix_get -s 10.0.0.7 -k 自定义的命名
第三步: 在web页面配置
配置 ---> 主机 ---> 监控项 ---> 创建新的监控项 ---> 设置监控 key 值信息
常见自定义监控项问题: 配置错误后, 修改正确也无法获取数据信息
管理 —> 一般 —> 其他 —> 刷新识别错误监控项时间
服务端重启服务: systemctl restart zabbix-server.service
如何设置触发器功能
什么是触发器
显示报警信息阈值, 一旦触发阈值就会报警提示系统有异常
如何配置触发器
第一步: 进入触发器
第二步: 创建新的触发器信息
触发器条件算法
last() : 收集到的最新数据信息(阈值设置 > 5 解释 现在 = 用户登录数是3 不会报警 几分钟后 = 用户登录数6 报警)
avg() : 一定时间内数据平均值(阈值设置 > 5)
diff() : 比较出现数值是否相同 等于1 两次取值有差异 等于0 两次取值没有差异
min() : 取出周期时间内最小值
max() : 取出周期时间内最大值
nodata() : 是否取出数据
change() : 监测新数据和前一个数据变化
第三步: 报警方式利用基础方式(网站页面报警+声音提示)
监控服务报警通知
方式一: 利用邮件进行报警
情况一: 直接配置邮件服务信息进行报警
第一步: 定义发送报警服务信息
配置报警媒介中-Email信息
第二步: 定义接收报警人员信息
小人头里定义接收邮件人员信息
第三步: 进行验证报警通知
报警通知常见问题
- 通知时间信息不正确
原因: 邮件服务器有关系/监控服务端时间异常/影响数据库服务启动(存储未来数据信息) - 邮件无法发送问题
原因: 配置文件/邮件服务有问题/网络问题
情况二: 加载邮件报警脚本实现报警
第一步: 定义发送报警服务信息
选择类型为脚本
将脚本信息放入到指定目录: /usr/lib/zabbix/alertscripts
chmod +x mail_163.py
测试监控脚本功能:
报警脚本参数:
{ALERT.SENDTO} --- 识别接收报警人地址信息
{ALERT.SUBJECT} --- 识别报警标题信息
{ALERT.MESSAGE} --- 识别报警具体信息
第二步: 定义接收报警人员信息
第三步: 进行验证报警通知
方式二: 利用微信进行报警
a 情况一 :直接利用脚本实现微信报警
第一个里程: 创建企业微信并添加企业人员
1)添加邀请成员信息
2)创建发送通知应用程序
3)保存记录企业微信平台信息
AgentId 1000008
Secret CwtW1qQwytyuI4fQbAuhSXdMQrGwqew7AVtllrOq2hk
企业ID ww32d68104ab5f51b0
==========================================================
回顾:python模块安装回顾:
1)下载python软件 yum install -y python-pip
2)执行命令安装模块 pip install requests
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
==========================================================
第二个里程:上传脚本并进行修改
修改脚本信息,填入企业agent 秘钥 企业ID, 并修改权限
第三个里程:执行脚本发送报警
./weixin.py LiangXiaoBao 中午时间到了 需要吃午饭了
b 情况二 :利用监控服务平台实现微信报警
第一个里程:定义发送消息人员信息
第二个里程:接收消息人员信息
第三个里程:检查测试报警信息
日志文件权限有问题:无法实现报警
# chown zabbix.zabbix /tmp/weixin.log
# ll /tmp/weixin.log
-rw-r--r-- 1 zabbix zabbix 1844 Feb 24 12:44 /tmp/weixin.log
报警无法正常接收问题分析:
原因1:发送人信息配置有关
原因2:接收人信息配置有关
原因3:脚本或者网络问题
原因4:动作中是否配置正确 (将默认开启)
原因5:查看动作日志信息定位报警问题
方式三: 利用短信或电话报警
方式一: 利用短信报警命令编写脚本报警 开通阿里大鱼
方式二: 进入睿象云进行网页配置
图队管理:添加企业用户信息
集成配置:配置zabbix连接睿象云
通知策略:定义给团队哪个成员发送信息
分派规则: