19.1 Linux监控平台介绍
19.2 zabbix监控介绍
19.3 安装zabbix(上)
•vim /etc/my.cnf //需要增加配置
character_set_server = utf8
19.4 安装zabbix(中)
vim /etc/zabbix/zabbix_server.conf
vim /etc/php.ini
Admin
zabbix
更改Admin密码和语言
19.5 忘记Admin密码如何做
19.6 安装zabbix(下)
rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum install -y zabbix-agent
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
19.7 主动模式和被动模式
19.8 添加监控主机
19.9 添加自定义模板
1)选择一个模板,把需要的监控项复制到aming模板里
群组里面选择Template
2)添加自动发现项的方法
链接模板-->选择-->添加-->更新-->再取消链接
点取消链接,就可以把不用的监控项删除了
19.10 处理图形中的乱码
把上面的aming 模板应用到主机上
从windows上复制一个文字库,上传到服务器上,做软链接,然后刷新。
vim /usr/share/zabbix/include/defines.inc.php
添加新的图形
19.11 自动发现
检测不到,是因为间隔时间太长
为了更快的生效,重新启动server端和agent端
更改图像
选择模板
选择自动发现规则——》network interface discovery
选择Network traffic on
然后就可以更改线条和颜色了
更改完以后的效果
19.12 添加自定义监控项目
客户端脚本并赋权限
更改配置文件
定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh
vim /etc/zabbix/zabbix_agentd.conf
重启agent服务
systemctl restart zabbix-agent.service
服务端验证
监控中心创建监控项
创建图形
创建触发器
19.13 配置邮件告警(上)
脚本路径
脚本内容
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from subprocess import *
def sendqqmail(username,password,mailfrom,mailto,subject,content):
gserver = 'smtp.qq.com'
gport = 25
try:
# msg = MIMEText(unicode(content).encode('utf-8')) //如果发送的邮件有乱码,可以尝试把这行改成如下:
msg = MIMEText(content,'plan','utf-8')
msg['from'] = mailfrom
msg['to'] = mailto
msg['Reply-To'] = mailfrom
msg['Subject'] = subject
smtp = smtplib.SMTP(gserver, gport)
smtp.set_debuglevel(0)
smtp.ehlo()
smtp.login(username,password)
smtp.sendmail(mailfrom, mailto, msg.as_string())
smtp.close()
except Exception,err:
print "Send mail failed. Error: %s" % err
def main():
to=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
sendqqmail('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content)
if __name__ == "__main__":
main()
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱账号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
脚本后面跟的邮箱地址,测试邮件
19.14 配置邮件告警(下)
创建用户
增加用户权限
选择所以组
再查看用户的权限
添加动作
添加操作
操作--》新的里面的内容
添加恢复操作
19.15 测试告警
自定义触发器
课堂串讲
19.1 Linux监控平台介绍
19.2 zabbix监控介绍
19.3/19.4/19.6 安装zabbix
19.5 忘记Admin密码如何做
19.1 Linux监控平台介绍
监控
对于网站来说是非常重要,即使是大公司由于监控做得不到位,最终会导致因为服务器的不够稳定,客户对其不够信任,而流失大量客户。
通常监控软件有下面几款,cacti
、nagios
、zabbix
、smokeping
、open-falcon
等等。
cacti、smokeping偏向于基础监控
(网络设备),成图非常漂亮,更加适合在IDC机房使用。
其中nagios和zabbix流行度比较高。几年前还是使用nagios,而近几年zabbix越来越受到欢迎。主要是因为zabbix配置比nagios简单得多,其优势也比nagios多。
open-falcon
为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,他是基于zabbix的监控思想
而开发的,非常值得研究。
cacti、nagios、zabbix服务端监控中心,即支持web页面来监控网站,因此需要php环境
支持,其中zabbix和cacti都需要mysql
作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图。
总之,安装zabbix
时要先安装好MySQL
,其中PHP
和httpd
会自带安装
上,后续以介绍zabbix为主。
19.2 zabbix监控介绍
zabbix采用的是C/S
架构,其中客户端用来采集数据,在上报给服务端。zabbix基于C++开发,监控中心支持web界面配置和管理。理论上单server节点可以支持上万台客户端。但如果监控的项目太多了,可以使用代理zabbix-proxy
来采集数据,再让他来上报给监控中心。其最新版本3.4,官方中文文档在 https://www.zabbix.com/manuals 方便学习配置zabbix
- zabbix有服务5个组件
zabbix-server
监控中心,接收客户端上报信息,负责配置、统计、操作数据数据存储
存放数据,比如mysqlweb界面
也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因zabbix-proxy
可选组件,它可以代替zabbix-server的功能,减轻server的压力zabbix-agent
客户端软件,负责采集各个监控服务或项目的数据并上报。分主动模式和被动模式
zabbix工作流程
使用web页面来添加监控主机到监控中心,然后再对其配置监控项目。被监控的服务器和监控中心通讯了,监控中心就会采集数据并存入到数据库中。监控中心就会对采集的数据值进行判断是否超多告警的规则,并进行告警。
19.3/19.4 安装zabbix
准备两台机器,一台服务端 一台客户端
服务端:kun05 192.168.80.104
客户端:kun03 192.168.80.102
配置服务端
由于epel中的zabbix版本比较久,因此我们自己去官网上下载好zabbix的仓库 并安装他们
官网下载地址 www.zabbix.com/download
找到对应的版本
根据官方的提示来复制下面的路径到服务端上
步骤
1.下载官方给出的epel源包并安装
| |
在/etc/yum.repos.d/
中就会多了个仓库zabbix.repo
该仓库可以指定下载对应的zabbix版本
| |
2.分别安装zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
| |
zabbix-agent
zabbix客户端软件zabbix-get
zabbix服务端上工具 ,可以获得客户端上监控项目的数据zabbix-server-mysql
zabbix监控中心所需的对应MySQL数据(用于导入数据到自建的zabbix库中)zabbix-web
web界面zabbix-web-mysql
web界面和MySQL的相关的数据
服务端上才需要安装以上的包 客户端只要安装zabbix-agent
即可,此过程是自带安装httpd
和php
的
| |
3.安装MySQL
由于以前已经安装过这里就不详细说明安装过程
查看是否启动MySQL
| |
4.编辑MySQL的配置文件添加中文所要的字符集并重启服务
| |
character_set_server=utf8
指定MySQL的字符集为utf8 用于在web中正确显示中文
5.进入MySQL 创建zabbix所需要的库,用户
| |
创建库需要指定字符集为utf8
| |
| |
ip为用户zabbix的来源ip
但数据库的zabbix server不在同一台机器上时候,要填zabbix server的IP地址
6.导入zabbix-server-mysql的数据到zabbix库中
| |
解压create.sql.gz包
| |
导入数据
| |
7.启动httpd服务
由于之前已经安装过Nginx,先关闭他
| |
8.更改zabbix server的配置文件
| |
修改下面参数
| |
在DBUser下面定义密码
| |
这些配置内容和添加的MySQL用户zabbi的信息要一致
9.启动zabbix server服务
| |
10.查看zabbix server是否监听端口
| |
zabbix_server
默认监听10051
端口
当启动不了或者不监听端口可以查看日志 路径是/var/log/zabbix/zabbix_server.log
11.配置web界面
浏览器上输入192.168.80.104/zabbix
这里是PHP缺少了配置timezone
回去服务端找到/etc/php.ini
并配置timezone
| |
重启httpd服务
| |
再回去继续下一步
填好数据库相关的用户 库 密码等信息
填写zabbix server名字
添加成功
填写用户名和密码 默认用户名Admin
密码zabbix
更改为自己的密码和语言 选择 Administration
— Users
— Admin
用户 —Change password
和Langueage
修改成功
19.5 忘记zabbix Admin密码
由于zabbix server的用户的数据是存放在MySQL中 因此只要修改MySQL的中zabbix用户的密码即可
步骤
1.进入MySQL中的zabbix库中查看到users表
| |
2.修改user表的Admin的密码
| |
passwd=md5('111111')
使用md5加密 新密码为111111
19.6 安装zabbix
配置客户端
步骤
1.下载官方给出的epel源包并安装
| |
2.安装zabbix-agent
| |
3.修改zabbix agent的配置文件
| |
修改下面参数
| |
Server
指定zabbix server的IP地址 ServerActive
开启server agent主动模式 不填默认为被动模式 Hostname
指定客户端的主机名 以便分辨
4.启动zabbix agent服务
| |
5.查看是否监听端口
| |
zabbix_agent
默认是监听10050
端口
19.7 主动模式和被动模式
19.8 添加监控主机
19.9 添加自定义模板
19.10 处理图形中的乱码
19.11 自动发现
19.7 主动模式和被动模式
这里主动或者被动是相对客户端
来讲的被动模式
,客户端被动地接受连接,并把监控信息传递给服务端,服务端会主动连接客户端获取监控项目数据。主动模式
,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。
- 通常下面两种情况使用主动模式更加合适
- 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
- 服务端有公网ip,客户端只有内网ip,但却能连外网(通过iptable的nat表实现),这种场景适合主动模式。
19.8 添加监控主机
选择配置
主机群组
客户端机器的组 一般先添加组再到组里添加主机
模版
预设的监控项目的集合
主机
就是要添加的客户端
图上的zabbix server是服务端安装的zabbix agent
我们在服务端并没有启动
步骤
1.添加主机群组
主机群组
—- 添加主机群组
—-添加组名
—- 添加
2.添加主机
主机
—- 创建主机
—- 主机名称
和可见名称
—- 选择群组
—- 添加agent的IP地址
—- 添加
主机名称
和可见名称
填写的主机名要和zabbix_agent
的配置文件Hostname
一致 ip填写客户端的ip地址
添加成功
应用集
监控项目的集合,即把监控项目分在多个组里
监控项
所有的监控的项目
触发器
针对某个监控项目而设定的告警规则
图形
把历史数据做出图表显示
自动发现规则
自动发现客户端系统的网卡流量 文件系统 磁盘 分区使用情况等
web场景
监控具体的网站的信息 (网页的状态码错误告警等)
19.9 添加自定义模板
当添加一些需要监控特定监控项目的客户端时,为了方便管理和提升效率 都是使用自定义模版
步骤
1.添加自定义模版
模版
—- 创建模版
—- 添加 模版名字
和可见的名称
—- 选择template
—- 添加
2.添加监控项目到自定义模版中
选择其他模版(这里用 Template OS Linux
)中的某个项目 —- 复制
—- 选择template 的 test
test模版已经添加我们自己需要监控的项目
同理可以使触发器 图形 应用集 添加主机需要的项目 但只有自动发现
是不能通过此方法来添加的
添加自动发现规制到自定义模版
步骤
1.添加链接模版
选择 test
—- 链接模版
—- 选择链接的模版 —- 添加
—- 更新
2.取消模版链接
选择test
—- 链接的模版
—- 取消链接
—- 更新
取消链接并清理
会同时把模版中的监控项目一并清理
3.删除不用监控的项目
4.把自定义模板添加到主机上
主机
—- 选kun03
—- 模版
—- 链接指示器
—- 选test
— 添加
—- 更新
19.10 处理图形中的乱码
我们发现自定义主机中图形出现了乱码,这是因为zabbix中的没有中文字库,因此我们可以让win上的中文字库拷贝到zabbix server的字库上即可
步骤
在zabbix server上
1.编辑定义字库的配置文件
| |
找到 ZBX_FONTPATH
| |
第一行是定义字库目录的路径 路径是相对路径 绝对路径是 /usr/share/zabbix/fonts/
下
第二行是定义字库的名字为graphfont
2.找到字库的路径
| |
发现graphfon
t是软连接文件
起真正的字库是在 /usr/share/fonts/dejavu/DejaVuSans.ttf
因此我们可以把win上的中文字库拷贝到/usr/share/zabbix/fonts/
下并让默认字库graphfont
软连接到中文字库
3.使用xftp拷贝字库
win的字库在C:\Windows\Fonts
这里下载了一个msyh.ttf字库
4.把下载的字库改为默认字库名的软连接文件
| |
5.回去监控中心查看图形
添加自定义图形
图形
—- 创建图形
—- 名称
—- 添加监控项
—- 添加
添加自定义图形成功
19.11 自动发现
为了让自动发现的规制形成图形 我们可以把发现的时间缩短
步骤
1.更改数据更新时间
这里选择网卡的自动发现 —- 数据更新间隔
60s —- 更新
2.重启zabbix server服务和zabbix agent服务
在kun05上
| |
在kun03上
| |
现在图线就会有自动发现的图线可以选择了 图线出现后可以把数据更新间隔改回600s,减少机器的压力
检测中
—- 图形
—- Network traffic on ens33
定义图形细节
因为我们的自定义的主机是链接自定义模版的 因此需要在自定义模版中修改
模版
—-选择test模版 —- 自动发现
—- Network interface discovery
—- 图形原型
更改成功
19.12 添加自定义监控项目
19.13/19.14 配置邮件告警
19.15 测试告警
19.16 不发邮件的问题处理
19.12 添加自定义监控项目
自定义监控项目一般都是在版本里面设置的,但如果遇到业务上的需求,则要在客户端上写脚本来获得具体的数字并通过监控项目来形成图标。
这里以“监控某台web的80端口连接数,并出图”为例子
步骤
在kun03上
1.在客户端上编辑脚本
| |
写入下面代码
| |
netstat -ant
查看所有tcp协议的网络连接情况 grep -c
统计行数
2.更改脚本权限
| |
3.编辑客户端的zabbix agent的配置文件
| |
找到下面参数并修改
| |
UnsafeUserParameters=1
表示开启自定义脚本 0则关闭
| |
estab.count
表示脚本的键值名字 [*]
表示脚本需要的参数,多个用,
分开 *
表示没有参数
4.重启zabbix agent服务
| |
在kun05上
5.在服务端上使用zabbix get来测试是否有数据
| |
zabbix_get
是zabbix server命令行工具 -s
指定客户端IP地址 -p
指定客户端端口 不写默认指定10050 -k
指定键值
6.去监控中心来增加自定义监控项目
配置
—- 主机
—- 监控项
—- 创建监控项
—- 填写上名称
和键值
—- 添加
7.创建对应的图表
主机
—- 图形
—- 创建图形
—- 填上名称
—- 选择对应的监控项
8.创建对应的触发器
主机
—- 触发器
—- 创建触发器
—- 填上名称
和严重性
—- 添加
表达式 —- 选择对应的监控项
—- 填上对应的功能
和N值
—- 添加
19.13/19.14 配置邮件告警
我们在zabbix server
上写发邮件脚本 并在监控中心上设置,这里使用的是163邮箱来做发告警信息
步骤
1.登录163邮箱 并设置 POP3、IMAP、SMTP服务
2.到监控中心自定义告警
管理
—- 报警媒介类型
—- 创建媒体类型
—- 名称
—- 类型
脚本
—- 脚本名称
—- 参数
—- 添加
{ALERT.SENDTO}
接受邮件的地址{ALERT.SUBJECT}
主题{ALERT.MESSAGE}
邮件内容
3.编辑脚本
| |
输入下面代码
| |
修改邮箱和密码 内容在 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
其中/usr/lib/zabbix/alertscripts/
是zabbix server指定告警脚本的存放路径
4.更改脚本权限
| |
测试
使用命令来试试mial.py是否发邮件
| |
5.在监控中心处创建发送告警邮件的用户
先创建组,在创建用户
管理
—- 用户群组
—- 创建用户群组
—- 别名
—- 权限
—- 读写
—- 选择 所有
—- 添加
管理
—- 用户
—- 创建用户
—- 别名
—- 群组
—- 密码
—- 报警媒介
—- 添加 收件人
—- 添加
6.设置动作
配置
—- 动作
—- 创建动作
—- 名称
—- 条件
维护状态 非在 维护
是指定在维护时候不再发送邮件
操作
—- 消息内容
—- 发送到用户群组
—- 发送到用户
—- 仅送到
—- 添加
消息内容
| |
恢复操作
—- 消息内容
—- 发送到用户群组
—- 发送到用户
—- 仅送到
—- 添加
设置成功
19.15 测试告警
这里我们创建自定义的触发器来触发告警来测试是否有发邮件 我们以1分钟内系统负载小于1就告警有例子
配置
—- 主机
—- 触发器
—- 创建触发器
等一会就发现了问题了动作并写完成,再去163邮箱看看
发送成功
在把1分钟内系统负载改为大于1
也发送成功