综合架构监控服务概念说明
- 对系统不间断实时监控
- 实现报警通知邮件 /微信/短信/电话–手环(学员)
- 实时反馈系统当前状态
- 保证服务可靠性安全性
- 保证业务持续稳定运行
- 掌握架构服务的运行情况
- 用于分析公司网站运行情况
综合架构服务器监控常用命令
CPU: top,htop
监控什么:
- us : user state 用户态信息 40%
- sy: system state 内核态信息 40% MySQL进程
- id: idle 空闲状态 20%
内存: top,htop,free
监控什么:
- 内存可用率:
- swap空间使用情况
磁盘:df,iotop(检查磁盘io消耗)
监控什么:
- 磁盘使用情况
- 磁盘的IO消耗
网络: if,top
监控什么:
- 网络带宽使用情况
进程: top,htop,ps
监控什么:
- 占用内存情况tomcat (java)—内存占满(内存溢出)–服务出现僵死(重启服务)
占用CPU情况: MySQL
负载: w,top,uptime
监控什么:
- 10分种负载 < CPU 内核数
- 15分钟负载
还有一个上述命令都包含的命令glances
yum install glances -y
综合架构监控服务器编写脚本(shell,python)
- 如何监控内存使用情况:
- 正常使用情况:内存使用率高于80%
- 异常使用情况:内存使用率低于20%发送报警
- 如何监控服务运行状态:
ps -ef | grep -C [n] ginx
netstat - lntup I grep XXX
PS: tomcat 服务—僵死 模拟用户方法来进行监控
综合架构监控服务体系结构:
- 1)硬件监控 服务器路由器交换机防火墙(SNMP)
- 2)系统监控 CPU内存磁盘网络进程TCP(十-种状态)
- 3)服务监控 nginx php tomcat redis memcache mysq1
- 4)网站监控 请求时间响应时间加载时间页面监控
- 5)日志监控 ELK(收集存储分析展示) 日志易
access — 用户源IP地址北京1000. 上海100 深圳500 - 6)安全监控 Firewalld(4层和4层以上) WAF ( Nginx+lua) (应用层面)安全宝牛盾 云安全狗
- 7)网络监控 smokeping 监控宝 站长工具 奇云测 多机房
- 8)业务监控 (数据库信息)活动产生多少流量产生多少 注册量 带来多公价值
zabbix监控服务说明
zabbix软件结构组成
- zabbix-server : 监控服务端
- zabbix-agent : 监控客户端
- zabbix-web : 监控网站服务
- php: 处理动态请求
- mysql : 数据库存储监控数据
- zabbix-proxy : 负责收集agent信息汇总告知zabbix-server
zabbix软件安装部署过程
软件选择:4.0 LTS(long time support)出问题以后会有补丁,长期官方维护
zabbix服务端部署软件流程:
- 第一步:下载安装zabbix yum源文件
LTS long time support- yum 源下载
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
- yum 源下载
- 第二步:下载安装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
如果报错让切换镜像,修改zabbixyum源
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0
接着继续下载会出现
错误:软件包:zabbix-server-mysql-4.0.23-1.el7.x86_64 (zabbix)
需要:libiksemel.so.3()(64bit)
您可以尝试添加 --skip-broken 选项来解决该问题
您可以尝试执行:rpm -Va --nofiles --nodigest
这样的报错,下载依赖包
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//iksemel-1.4-6.sdl7.x86_64.rpm
yum install -y iksemel-1.4-6.sdl7.x86_64.rpm
接着继续下载就可以了。
-
第三步:修改软件配置
vim /etc/zabbix/zabbix_server.conf
DBPassword=zabbix
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai -
第四步:编写配置数据库服务
systemctl start mariadb.service
systemctl status mariadb.service
创建zabbix数据库–zabbix
mysql
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.23/create.sql.gz | mysql -uzabbix -pzabbix zabbix
-
第五步:启动zabbix程序相关服务
数据库服务zabbix服务httpd服务
systemctl start zabbix-server.service httpd mariadb.service
systemctl enable zabbix-server.service httpd mariadb.service
说明:至此zabbix-server命令行操作结束 -
第六步:登录zabbix服务端web界面,进行初始化配置
http://192.168.1.131/zabbix/setup.php
被监控端(agent端)
- 第一步:配置yum源
vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0
- 第二步:下载安装zabbix客户端软件
yum install -y zabbix-agent
- 第三步:编写zabbix客户端配置文件
vim /etc/zabbix/zabbix_agentd.conf
Server==172.16.1.71(zabbix服务器IP) - 第四步:启动zabbix-agent服务
systemctl start zabbix-agent
实现zabbix默认第一台主机的监控
- 第一步:配置—主机—创建主机(创建要监控的主机)
- 第二步:配置监控的主机
主机信息中:名称主机组监控的主机地址
模板信息中:指定需要链接的模板信息 - 第三步:保存退出,进行监控检查
监测主机有没有变绿
实现zabbix自定义监控—监控项作用
需求:监控nginx服务是否启动
- 在zabbix-agent进行配置文件编写
- 第一步:编写自定义监控命令
ps -ef I grep -C [n]ginx - 第二步:编写zabbix-agent配置文件
第一种方法:直接修改zabbix-agent配置文件参数
UserParameter=
第二种方法:在zabbix_ agentd.d/ 目录中编写自定义监控文件
vim web_server.conf
UserParameter=键(变量名) ,值(变量信息)
UserPar ameter=web_state,ps -ef I grep -C [n]ginx - 第三步:重启zabbix-agent服务
systemctl restart zabbix-agent
- 第一步:编写自定义监控命令
- 在zabbix-server网站页面进行配置
- 在zabbix-server命令行进行操作
- 第一步:检测自定义监控信息是否正确
yum install -y zabbix-get
zabbix_get -s 172 .16.1.7 -k 'web_state'
- 第一步:检测自定义监控信息是否正确
- 在zabbix-server网站页面进行配置
- 第一步:进入到创建监控项页面:
配置—主机—选择相应主机的监控项 - 第二步:监控项页面如何配置
名称 键值 更新间隔时间 应用集 - 第三步:检查是否收集到监控信息
- 第一步:进入到创建监控项页面:
复杂的自定义监控配置(多个服务状态)
- 在zabbix-agent端编写配置文件
vim server_state.conf
UserParameter=server_state[*] ,netstat -lntup I grep -c $1 - 在zabbix-server命令测试
zabbix get -s 172.16.1.7 -k 'server state [22]’
3)修改配置页面
键值:server_state[22]
实现zabbix报警功能—触发器/动作
报警方式:
- 01.页面提示信息报警(值班运维)
- 02.页面声音提示报警
- 03.邮件信息报警
- 04.微信功能报警
- 05.短信报警/电话报警
页面提示和声音报警实践:
-
第一步:创建触发器
配置—主机—选择相应监控主机触发器—创建触发器
设置好表达式
{web01 :server state [nginx] .last()}<=2
{监控主机名称:键值名称.调用的表达式函数}<=2
表达式总结:- last() 收集到最新信息(数值)
- max( ) 在一定周期内,收集到的最大值
- min( ) 在一定周期内,收集到的最小值
- diff () 在一定时间内,判断收集的信息是否不同
- change() 在一定时间内,判断收集的信息是否不同
- avg() 取一段时间的平均值
-
第二步:修改网页配置,有提升声音报警
小人头—正在发送消息—前端信息勾选
PS:如何修改报警铃声:- 找到文件所在目录(在站点目录中找)
find /usr/ share/zabbix -type f -name "alarm_disaster.mp3 "
- 将原有声音文件做替换
替换成指定声音文件 - 需要清除浏览器缓存,进行测试
- 找到文件所在目录(在站点目录中找)
邮件信息报警
- 第一步:创建触发器
配置—主机—选择相应监控主机触发器—创建触发器
设置好表达式
{web01 :server_ state [nginx] .last()}<=2
{监控主机名称:键值名称.调用的表达式函数}<=2 - 第二步:修改动作配置
配置—动作—将默认动作进行开启 - 第三步:建立和163邮箱服务关系.
管理—报警媒介类型—创建报警媒介 - 第四步:定义接收报警的邮件地址
小人头–报警媒介–设置收件人信息
微信报警
- 第一步:需要注册企业微信,并进行配置
我的企业:- 获取企业id: ww32d68104ab5f51b0
- 获取企业二维码:允许员工加入
- 管理工具:
- 成员加入—进行审核通过
- 应用小程序:
- 进行创建
- 收集程序信息
- AgentId: 1000006
- Secret: RvQYpaCjWbYMCcwhnPqg1ZYcEGB9c0QCvv1kn- ft6j4
- 第二步:编写脚本(python)
cat /etc/zabbix/zabbix-server.conf
AlertScriptsPath=/usr/lib/zabbirs/alertscripts —放置告警脚本
vim /usr/lib/zabbix/alertscripts/weixin.py
#!/usr/bin/python
#_*_coding:utf-8 _*_
import urllib,urllib2
import json
import sys
import simplejson
reload(sys)
sys.setdefaultencoding('utf-8')
def gettoken(corpid,corpsecret):
gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
# print gettoken_url
try:
token_file = urllib2.urlopen(gettoken_url)
except urllib2.HTTPError as e:
print e.code
print e.read().decode("utf8")
sys.exit()
token_data = token_file.read().decode('utf-8')
token_json = json.loads(token_data)
token_json.keys()
token = token_json['access_token']
return token
def senddata(access_token,user,subject,content):
send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
send_values = {
"touser":'YangYang', #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
"toparty":"yangyang", #企业号中的部门id。
"msgtype":"text", #消息类型。
"agentid":"1000002", #企业号中的应用id。
"text":{
"content":subject + '\n' + content
},
"safe":"0"
}
# send_data = json.dumps(send_values, ensure_ascii=False)
send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
print(send_data)
send_request = urllib2.Request(send_url, send_data)
response = json.loads(urllib2.urlopen(send_request).read())
print str(response)
if __name__ == '__main__':
user = str(sys.argv[1]) #zabbix传过来的第一个参数
subject = str(sys.argv[2]) #zabbix传过来的第二个参数
content = str(sys.argv[3]) #zabbix传过来的第三个参数
corpid = 'wwda75fd7a23e92a0c' #CorpID是企业号的标识
corpsecret = 'BqsA8WAjp8fN1ZhcDBXat86fhs8Dpu3MQiqkf3OWTdE' #corpsecretSecret是管理组凭证密钥
accesstoken = gettoken(corpid,corpsecret)
senddata(accesstoken,user,subject,content)
第三个历程:修改添加报警媒介—定义了发微信配置
消息内容:
故障{TRIGGER.STATUS}
服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
然后添加报警媒介:
选择脚本
脚本名称填写:weixin.py
脚本参数添加3个。
报警收件人:{ALERT.SENDTO},
报警标题:{ALERT.SUBJECT},
报警内容:{ALERT.MESSAGE},
添加完报警媒介类型后勾选启用。
然后在右上角对小人头那里点击一下:
- 第四步:配置接收微信的人员
短信和电话报警:
利用第三方短信电话报警平台
-
利用阿里大鱼(收费)
https://yq.aliyun.com/articles/658524?spm=a2c4e.11155472.0.0.d821153fAjrH3q -
利用onealert(睿象云)发送告警
-
第一步: 配置报警平台
- 配置–应用–选择zabbix报警
- 配置–通知策略
- 配置–分派策略
实现zabbix图形配置—图形
配置–主机–图形–(监控项)
zabbix各个功能总结
- 监控项: 可以自定义监控收集主机的信息
- 应用集: 将多个类似的监控项进行整合 便于查看检查
- 模板: 将多个监控项 触发器 图形都配置在模板中, 方便多个监控的主机进行调用
- 动作: 指定将报警信息发送给谁OK/定义报警的信息ok/定义报警的类型OK(邮件 微信 短信电话)
PS: 宏信息定义方法:
https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location - 触发器: 可以实现报警提示(条件表达式),默认页面提示报警
- 图形: 将多个图整合成一张,便于分析数据
- 报警媒介: 定义报警的方式
企业工作遇见告警信息处理思路步骤:
- 第一步:看到告警提示信息,定位主机信息
- 第二步:看到主机信息之后,定位报警原因获得监控项Key值
- 第三步:根据key值信息,最终获得报警原因
- 至此:已经看到提示报警