监控服务概述
1、实时查看服务状态
2、可以发送报警信息(邮件报警、短信报警、电话报警、微信报警、值班(大屏幕)报警)
3、可以进行数据分析(潜在风险、对业务部门给出数据建议)
实现监控的方式:
1)zabbix实现监控
2)nagios(监控报警功能较强大)+cacti(网络流量报警)
3)小米监控
如何搭建监控平台
###通过多个维度进行描述
1、网络模型OSI七层模型分析
2、网站安全、性能、业务等角度进行分析
####监控维度说明:
1)硬件监控:需要规划好硬件设备(服务器、路由器、交换机、防火墙)
2)系统监控:CPU、内存、磁盘、网络、进程、TCP连接状态
3)服务监控:nginx、php、tomcat、redis、memcache、mysql
4)网站监控:请求时间、响应时间、加载时间(定一个规范化时间用来衡量网站是否合格)
5)日志监控:及早发现日志运行异常 ELK(收集、存储、分析、展示)日志易
6)安全监控:Firewalld WAF(Nginx+Lua)安全宝、牛顿云、安全狗
7)网络监控:smokeping 监控宝、站长工具、奇云测、多机房
8)业务监控:活动时产生的流量、带来的价值
系统基础监控命令
zabbix监控服务部署
###zabbix服务端部署
####第一个里程: 下载安装zabbix yum 源文件
LTS long time support
- aliyun 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 https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm -- 老版本
第二个里程: 下载安装zabbix服务端相关软件
LAMP架构中 httpd + PHP + mariadb
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
126 DBPassword=zabbix
vim /etc/httpd/conf.d/zabbix.conf
21 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
第五个里程: 启动zabbix程序相关服务
数据库服务 zabbix服务 httpd服务
systemctl start zabbix-server.service httpd mariadb.service
systemctl enable zabbix-server.service httpd mariadb.service
说明: 至此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客户端部署
实现zabbix监控主机方法:
####异常问题总结:无法实现zabbix监控
1)服务端没有指定配置好监控的主机
2)客户端没有安装好软件或者启动好服务
如果客户端已经安装过旧版监控软件,使用新版软件时需要卸载(否则新版无法安装)
客户端配置文件需要编写正确
####监控原理图:
###如何设置自定义监控项
需求: 监控内存使用率情况,低于20%就报警
第一个历程: 利用命令获取监控信息
free -m|awk 'NR==2{print int($7/$2*100)}'
第二个历程: 编写zabbix-agent程序配置文件
UserParameter --- 定义监控的命令信息
[root@web01 yum.repos.d]# cd /etc/zabbix/zabbix_agentd.d/
[root@web01 zabbix_agentd.d]# vim mem.conf
UserParameter=mem.use,free -m|awk 'NR==2{print int($7/$2*100)}'
第三个历程: 调取监控的数据信息
利用命令进行调取监控信息
yum install -y zabbix-get --- 安装收集信息的命令(zabbix-server端进行安装)
zabbix_get -s 172.16.1.7 -k mem.use
利用监控服务调取监控信息
- 创建监控项
[配置]–选择要监控的主机–[监控项]–创建监控项
[监测]–[最新数据]–查看监控的数据信息
第四个历程: 进行监控报警
[配置]–选择要监控的主机–[触发器]–创建触发器
实现邮件告警
需求:当系统超过5个用户登录,发送邮件告警
需求: 当系统超过5个用户登陆,发送邮件告警
第一个历程: 利用命令获取监控信息
w|awk 'NR==1{print $6}'
第二个历程: 编写zabbix-agent程序配置文件
UserParameter --- 定义监控的命令信息
[root@web01 yum.repos.d]# cd /etc/zabbix/zabbix_agentd.d/
[root@web01 zabbix_agentd.d]# vim login.conf
UserParameter=login.user,w|awk 'NR==1{print $6}'
systemctl restart zabbix-agent.service
第三个历程: 调取监控的数据信息
利用命令进行调取监控信息
yum install -y zabbix-get --- 安装收集信息的命令(zabbix-server端进行安装)
zabbix_get -s 172.16.1.7 -k login.user
利用监控服务调取监控信息
1) 创建监控项
[配置]--选择要监控的主机--[监控项]--创建监控项
[监测]--[最新数据]--查看监控的数据信息
第四个历程: 进行监控报警
[配置]--选择要监控的主机--[触发器]--创建触发器
第五个历程: 发送邮件告警
[配置]--[动作]--将动作条目信息开启
定义发件人信息
[管理]--[报警媒介类型]--[创建新的报警媒介]
定义接收人信息
[小人头]--[报警媒介]
添加微信报警
编写微信报警脚本
[root@zabbix-server /usr/lib/zabbix/alertscripts]# vim weixin.py
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
#发送消息
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)
这里调用的是企业微信的的接口,需要申请企业微信才可以用.脚本下载地址链接:https://pan.baidu.com/s/1X8WqJ7BUsnwWT2A-UOYYOA
提取码:a5o7
将脚本放到 /usr/lib/zabbix/alertscripts 目录下
可以在/etc/zabbix/zabbix-server.conf文件下找到脚本的路径,用到的命令是
[root@zabbix-server /usr/lib/zabbix/alertscripts]# egrep -v '^$|#' /etc/zabbix/zabbix_server.conf |grep scripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
添加执行权限
[root@zabbix-server /usr/lib/zabbix/alertscripts]# chmod +x weixin.py
[root@zabbix-server /usr/lib/zabbix/alertscripts]# ll
total 4
-rwxr-xr-x 1 root root 1344 Jul 9 10:55 weixin.py
尝试发送微信消息
[root@m01 ~]# python weixin.py
Traceback (most recent call last):
File "weixin.py", line 7, in <module>
import requests
ImportError: No module named requests
我这里是找了一台新的机器测试发送的,不用在意路径。尝试运行脚本却提示缺少requests库
安装缺少的库
[root@m01 ~]# yum install -y python2-pip
[root@m01 ~]# pip install requests
再次尝试发送
[root@m01 ~]# python weixin.py GeBangfeng '微信报警' '第一次检查测试微信发送'
zabbix-web上面添加发送者
{ALERT.SENDTO}, {ALERT.SUBJECT} and {ALERT.MESSAGE}, 这是三个变量分别代表,收件人标题,主机名。不能乱循序
添加微信报警接收者
触发报警,就可以收到了
监控一台服务器主机
10.0.0.7 zabbix-agent
a:安装zabbix-agent
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.24-1.el7.x86_64.rpm
b:配置zabbix-agent
vim /etc/zabbix/zabbix_agentd.conf
95行:Server=10.0.0.71
c:启动zabbix-agent
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
d:再zabbix-web上面添加监控主机
添加自定义监控项
查看已经存在的监控项
这里就是zabbix自带的一些监控项,图中圈起来的就是一些键值(key).键值就是zabbix用于监控的类式余脚本的东西。我们可以尝试取下键的值。
安装zabbix-get
yum install -y zabbix-get
尝试取值
[root@zabbix-server /etc/zabbix/zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -p 10050 -k system.hostname
zabbix-server
安装之后命令是zabbix_get ,参数-s 为要取值的ip -p 为端口 -k为要取的值
这些值都是zabbix-agent来取的。
取出用户连接数
[root@m01 ~]# who
root pts/0 2019-07-09 22:09 (10.0.0.1)
root pts/6 2019-07-09 14:44 (10.0.0.1)
[root@m01 ~]# who|wc -l
2
设置自定义key
格式为:UserParameter=, 。因为zabbix-agend 是用来取值的,所以把自定义key放到它的配置文件里
[root@m01 ~]# grep '^User' /etc/zabbix/zabbix_agentd.conf
UserParameter=tps,iostat|awk '/^sda/{print $2}'
UserParameter=ssh_user,who|wc -l
[root@ m01/etc/zabbix]# systemctl restart zabbix-agent.service
修改了配置文件记得重启
zabbix-get测试取值。
[root@zabbix-server ~]# zabbix_get -s 10.0.0.61 -k ssh_user
2
命令行测试没问题,去web界面添加自定义监控
添加自定义监控
zabbix自带的监控项满足不了我们需求