目录
综合架构监控服务概念说明
- 对系统不间断实时监控
实现报警通知 邮件/微信/短信/电话 --手环(学员) - 实时反馈系统当前状态
- 保证服务可靠性安全性
- 保证业务持续稳定运行
a 掌握架构服务的运行情况
b 用于分析公司网站运行情况
综合架构监控服务器常用命令
CPU: top htop glances
监控什么:
us: user state 用户态信息 40%
sy: system state 内核态信息 40% MySQL进程
id: idle 空闲状态 20%
内存: top htop free
内存可用率:
swap空间使用情况:
磁盘: df iotop(检查磁盘io消耗) glances
磁盘使用情况
磁盘的IO消耗
网络: iftop glances
网络带宽使用情况
进程: top htop ps glances
占用内存情况 tomcat(java)---内存占满(内存溢出)--服务出现僵死(重启服务)
占用CPU情况: MySQL
负载: w top uptime glances(万能命令)
10分钟负载 CPU内核数
15分钟负载
综合架构监控服务器编写脚本(shell python)
练习题:
-
如何监控内存使用情况:
正常使用情况: 内存使用率高于80%
异常使用情况: 内存使用率低于20% 发送报警 -
如何监控服务运行状态:
ps -ef|grep -c [n]ginx
netstat -lntup|grep xxx
PS: tomcat服务---僵死
综合架构监控服务体系结构
1) 硬件监控 服务器 路由器 交换机 防火墙(SNMP)
2) 系统监控 CPU 内存 磁盘 网络 进程 TCP(十一种状态)
3) 服务监控 nginx php tomcat redis memcache mysql
4) 网站监控 请求时间 响应时间 加载时间 页面监控
5) 日志监控 ELK(收集 存储 分析 展示) 日志易
access --- 用户源IP地址 北京1000 上海100 深圳500
6) 安全监控 Firewalld(4层和4层以上) WAF(Nginx+lua)(应用层面) 安全宝 牛盾云 安全狗
7) 网络监控 smokeping 监控宝 站长工具 奇云测 多机房
8) 业务监控 (数据库信息)活动产生多少流量 产生多少注册量 带来多少价值
zabbix监控服务说明
a zabbix软件结构组成
zabbix-server: 监控服务端
zabbix-agent: 监控客户端
zabbix-web: 监控网站服务
php: 处理动态请求
mysql: 数据库存储监控数据
zabbix-proxy: 负责收集agent信息汇总告知zabbix-server
zabbix软件安装部署过程
软件选择: 4.0 LTS(long time support 长期支持版)
第一个里程: 下载安装zabbix yum 源文件
LTS long time support 长期支持
1) aliyun zabbix yum 源
2) 清华源
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 https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm -- 老版本
(一直下载失败,更改dns重启网络后成功)
第二个里程: 下载安装zabbix服务端相关软件
zabbix服务程序软件: zabbix-server-mysql
zabbix服务web软件: zabbix-web-mysql httpd php
数据库服务软件: mariadb-server
yum install -y zabbix-server-mysql zabbix-web-mysql httpd php mariadb-server
第三个里程: 软件配置
vim /etc/zabbix/zabbix_server.conf
126n DBPassword=zabbix
vim /etc/httpd/conf.d/zabbix.conf
21n php_value date.timezone Asia/Shanghai
第四个里程: 编写配置数据库服务
systemctl start mariadb.service
systemctl status mariadb.service
创建zabbix数据库--zabbix
create database zabbix character set utf8 collate utf8_bin;
创建数据库管理用户
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
在zabbix数据库中导入相应的表信息
zcat /usr/share/doc/zabbix-server-mysql-4.0.0/create.sql.gz|mysql -uzabbix -pzabbix zabbix
zgrep 也可以实现不解压过滤压缩包中文本内容
第五个里程: 启动zabbix程序相关服务
数据库服务 zabbix服务 httpd服务
systemctl start zabbix-server.service httpd mariadb.service
systemctl enable zabbix-server.service httpd mariadb.service
无需启动php
LNMP: nginx php mysql
LAMP: apache(php模块) mysql
说明: 至此zabbix-server命令行操作结束
第六个里程: 登录zabbix服务端web界面, 进行初始化配置
http://10.0.0.71/zabbix/setup.php
10051 zabbix-server 服务端端口号
10050 zabbix-agent 客户端端口号
/etc/zabbix/web/zabbix.conf.php -- 记录web页面初始化信息
第七个里程: 登录zabbix服务web页面
用户名Admin 密码zabbix
监控客户端部署流程
第一个里程: 下载安装zabbix yum 源文件
LTS long time support
1) aliyun zabbix yum 源
2) 清华源
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
第二个里程: 下载安装zabbix客户端软件
yum install -y zabbix-agent
或者
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm
第三个里程: 编写zabbix客户端配置文件
vim /etc/zabbix/zabbix_agentd.conf
98 Server=172.16.1.71
第四个里程: 启动zabbix-agent服务
[root@web01 ~]# systemctl start zabbix-agent
[root@web01 ~]# netstat -lntup|grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 4509/zabbix_agentd
tcp 0 0 :::10050 :::* LISTEN 4509/zabbix_agentd
实现zabbix默认第一台主机的监控
第一步: 配置---主机---创建主机(创建要监控的主机)
第二步: 配置监控的主机
主机信息中: 名称 主机组 监控的主机地址
模板信息中: 指定需要链接的模板信息
第三步: 保存退出,进行监控检查
检查主机有没有变绿
监测--最新数据
实现zabbix自定义配置监控
监控项: 可以自定义监控收集主机的信息
应用集: 将多个类似的监控项进行整合 便于查看检查
模板: 将多个监控项 触发器 图形都配置在模板中, 方便多个监控的主机进行调用
动作: 指定将报警信息发送给谁OK/定义报警的信息ok/定义报警的类型OK(邮件 微信 短信电话)
PS: 宏信息定义方法:
https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location
触发器: 可以实现报警提示(条件表达式),默认页面提示报警
图形: 将多个图整合成一张,便于分析数据
报警媒介: 定义报警的方式
实现zabbix自定义监控---监控项作用
简单的自定义监控配置(单一服务状态)
需求: 监控nginx服务是否启动
1) 在zabbix-agent进行配置文件编写
第一个历程: 编写自定义监控命令
ps -ef|grep -c [n]ginx
第二个历程: 编写zabbix-agent配置文件
第一种方法: 直接修改zabbix-agent配置文件参数
UserParameter=
第二种方法: 在zabbix_agentd.d/目录中编写自定义监控文件
vim web_server.conf
# UserParameter=键(变量名),值(变量信息)
UserParameter=web_state,ps -ef|grep -c [n]ginx
第三个历程: 重启zabbix-agent服务
systemctl restart zabbix-agent
2) 在zabbix-server命令行进行操作
第一个历程: 检测自定义监控信息是否正确
yum install -y zabbix-get
zabbix_get -s 172.16.1.7 -k 'web_state'
3) 在zabbix-server网站页面进行配置
第一个历程: 进入到创建监控项页面:
配置---主机---选择相应主机的监控项--右上角创建
第二个历程: 监控项页面如何配置
名称 键值 更新间隔时间 应用集
第三个历程: 检查是否收集到监控信息
自行研究: 监控远程服务是否正常启动
复杂的自定义监控配置(多个服务状态)
1) 在zabbix-agent端编写配置文件
vim server_state.conf
UserParameter=server_state[*],netstat -lntup|grep -c $1
2) 在zabbix-server命令测试
zabbix_get -s 172.16.1.7 -k 'server_state[22]'
3) 修改配置页面
键值: server_state[22]
实现zabbix报警功能---触发器/动作
报警方式
- 页面提示信息报警(值班运维) OK
- 页面声音提示报警 OK
- 邮件信息报警 OK
- 微信功能报警 OK
- 短信报警/电话报警 OK
页面提示和声音报警实践:
第一个历程: 创建触发器
配置---主机---选择相应监控主机触发器---创建触发器
设置好表达式
{web01:server_state[nginx].last()}<=2
{监控主机名称:键值名称.调用的表达式函数}<=2
表达式总结:
last() 收集到最新信息(数值) *****
max() 在一定周期内,收集到的最大值
min() 在一定周期内,收集到的最小值
diff() 在一定时间内,判断收集的信息是否不同
change() 在一定时间内,判断收集的信息是否不同
avg() 取一段时间的平均值
企业工作遇见告警信息处理思路步骤:
第一步: 看到告警提示信息,定位主机信息
第二步: 看到主机信息之后,定位报警原因 获得监控项Key值
第三步: 根据key值信息,最终获得报警原因
至此: 已经看到提示报警
第二个历程: 修改网页配置,有提升声音报警
小人头---正在发送消息---前端信息勾选
如何修改报警铃声
网页F12,element-鼠标-select可看到文件链接
1) 找到文件所在目录(在站点目录中找)
find /usr/share/zabbix -type f -name "alarm_disaster.wav"
如何修改报警铃声
2) 将原有声音文件做替换
替换成指定声音文件
如何修改报警铃声
3) 需要清除浏览器缓存,进行测试
邮件信息报警
第一个历程: 创建触发器
配置---主机---选择相应监控主机触发器---创建触发器
设置好表达式
{web01:server_state[nginx].last()}<=2
{监控主机名称:键值名称.调用的表达式函数}<=2
第二个历程: 修改动作配置
配置---动作---将默认动作进行开启
第三个历程: 建立和163邮箱服务关系
管理---报警媒介类型---创建报警媒介
第四个历程: 定义接收报警的邮件地址
小人头--报警媒介--设置收件人信息
微信报警
d45_13
第一个历程: 需要注册企业微信,并进行配置
我的企业:
- 获取企业id: ww32d68104ab5f51b0
- 获取企业二维码: 允许员工加入
管理工具: - 成员加入---进行审核通过
应用小程序: - 进行创建
- 收集程序信息
AgentId: 1000006
Secret: RvQYpaCjWbYMCcwhnPqg1ZYcEGB9cOQCvvlkn-ft6j4
第二个历程: 在server端编写脚本(python)
cat /etc/zabbix/zabbix-server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts --- 放置告警脚本的目录
脚本来源:https://www.cnblogs.com/ssgeek/p/9223559.html
vim /usr/lib/zabbix/alertscripts/weixin.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')
corpid='微信企业号corpid'
appsecret='应用的Secret'
agentid=应用的id
#get accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
#send messages
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]
params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
执行方式:./weixin.py 用户微信名 test 1111...
执行脚本报错问题解决:
- 问题: No module named requests
yum install -y python-pip pip install requests
- 问题: 脚本执行语法
第三个历程: 修改添加报警媒介---定义了发微信配置
第四个历程: 配置接收微信的人员
注:单个用户测试发送消息成功,给所有用户发送写个 all 就行了,多用户 空格 or , ; ??? 待下载企业版测试
action log报错,更改此文件属主为zabbix
短信和电话
d45_14 睿象短信测试成功caweb.aiops.com
https://my.oschina.net/u/4157713/blog/3211867
利用第三方短信电话报警平台
- 利用阿里大鱼(收费)
https://yq.aliyun.com/articles/658524?spm=a2c4e.11155472.0.0.d821153fAjrH3q --- 自行研究 - 利用onealert发送告警
第一个历程: 配置报警平台
- 配置--应用--选择zabbix报警
- 配置--通知策略
- 配置--分派策略
实现zabbix图形配置---图形
配置--主机--图形--(监控项)
=============================================
篇幅有限,zabbix超详细文档请加微信YJZyjz,免费分享
发表评论