内容摘要
- Linux监控平台介绍
- zabbix监控介绍
- 安装zabbix
- 忘记Admin密码如何做
- 主动模式和被动模式
- 添加监控主机
- 添加自定义模板
- 处理图形中的乱码
- 自动发现
- 添加自定义监控项目
- 配置邮件告警
- 测试告警
- 不发邮件的问题处理
- 扩展
一、Linux监控平台介绍
监控对于网站来说是非常重要,即使是大公司由于监控做得不到位,最终会导致因为服务器的不够稳定,客户对其不够信任,而流失大量客户。
- 通常监控软件有下面几款,cacti、nagios、zabbix、smokeping、open-falcon等等。
- cacti、smokeping偏向于基础监控,成图非常漂亮
- cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图
- open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究
- C/S架构,基于C++开发,监控中心支持web界面配置和管理
- 单server节点可以支持上万台客户端
- 最新版本3.4,官方中文文档https://www.zabbix.com/manuals
- zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据
- zabbix有服务5个组件
- 数据存储 存放数据,比如mysql
- web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因
- zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力
- zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据,并上报
- zabbix监控流程图:使用web页面来添加监控主机到监控中心,然后再对其配置监控项目。被监控的服务器和监控中心通讯了,监控中心就会采集数据并存入到数据库中。监控中心就会对采集的数据值进行判断是否达到告警的条件,再进行告警。
安装zabbix可以直接使用yum安装,但是epel扩展源中安装的版本比较久,因此我们自己去官网上下载安装zabbix的仓库
- 官网下载地址 www.zabbix.com/download 选择对应版本并复制提供的网站。
- 根据提示下载zabbix的仓库的rpm包:wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
- 安装rpm包:rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
- 安装rpm后在/etc/yum.repos.d/中就会多一个仓库zabbix.repo,该仓库可以指定下载对应的zabbix版本
- 服务端使用yum安装zabbix,此过程是自带安装httpd和php的: yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
- 其中zabbix-agent是客户端软件
- zabbix-get:服务端上用的工具,可以用命令行的形式获得客户端某些监控项目的数据
- zabbix-server-mysql:与mysql相关的一些文件
- zabbix-web:web ui 界面
- zabbix-web-mysql:web和mysql相关的
- 重启mysqld服务后,进入mysql命令行,创建zabbix库:create database zabbix character set utf8;
- 创建用户:grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zabbix';
- 导入原始数据:
- 移动到数据所在目录:cd /usr/share/doc/zabbix-server-mysql-3.4.14/
- 解压数据包:gzip -d create.sql.gz
- 导入数据:mysql -uroot -p zabbix < create.sql
- 启动apache(需关闭nginx):systemctl start httpd
- 设置为开机启动:systemctl enable httpd
- 启动zabbix:systemctl start zabbix-server
- 设置为zabbix为开机启动:systemctl enable zabbix-server
- 检测zabbix监听端口发现服务没有起来
- 查看zabbix日志:less /var/log/zabbix/zabbix_server.log 显示无法连接mysql
- 客户端yum安装zabbix,此过程是自带安装httpd和php的:yum install -y zabbix-agent
- 修改客户端zabbix-agent的配置文件:vim /etc/zabbix/zabbix_agentd.conf
- 定义服务端的ip:Server=127.0.0.1修改为Server=192.168.157.128
- 定义主动模式时的ip:ServerActive=127.0.0.1修改为ServerActive=19168.80.104
- 定义主机名字:Hostname=aming-02
- 启动zabbix:systemctl start zabbix-agent
- 设置为开机启动:systemctl enable zabbix-agent
- 查看监听端口:客户端为10050
- 更改zabbix管理员密码:update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
- passwd=md5('newpasswd')使用md5加密 新密码为newpasswd
五、主动模式和被动模式
- 主动或者被动是相对客户端来讲的
- 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端
- 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。
- 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
- 服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式
六、添加监控主机
七、添加自定义模板
八、处理图形中的乱码
- 在服务端编辑文件 vim /usr/share/zabbix/include/defines.inc.php 搜索ZBX_FONTPATH
- 第一行是定义字库目录的路径,路径是相对路径。绝对路径是 /usr/share/zabbix/fonts/下
- 第二行是定义字库的名字为graphfont
- 移动到字库目录下:cd /usr/share/zabbix/fonts/
- 查看文件发现graphfont.ttf是一个软链接文件,真正的字库在/usr/share/fonts/dejavu/DejaVuSans.ttf下
九、自动发现
十、添加自定义监控项目
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
- 重启zabbix-agent服务: systemctl restart zabbix-agent
- 前往服务端使用命令验证脚本是否可以识别:zabbix_get -s 192.168.133.132 -p 10050 -k 'my.estab.count‘
- 在zabbix监控中心(浏览器)配置增加监控项目:主机—监控项—创建监控项—键值填my.estab.count—添加
- 创建对应的触发器:主机 —触发器 —创建触发器 —填上名称和严重性 —添加表达式 —选择对应的监控项 —填上对应的功能和N值 —添加
十一、配置邮件告警
sys.setdefaultencoding('utf8')
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
def sendqqmail(username,password,mailfrom,mailto,subject,content):
# msg = MIMEText(unicode(content).encode('utf-8')) //如果发送的邮件有乱码,可以尝试把这行改成如下:
msg = MIMEText(content,'plan','utf-8')
smtp = smtplib.SMTP(gserver, gport)
smtp.sendmail(mailfrom, mailto, msg.as_string())
print "Send mail failed. Error: %s" % err
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
- 修改脚本权限: chmod 755 /usr/lib/zabbix/alertscripts/mail.py
- 测试脚本:python mail.py [email protected] "test" "test"
- 监控中心处创建发送告警邮件的,用户先创建组(或者添加到已有群组),再创建用户:管理 —创建新用户 —别名 —群组—密码—语言—报警媒介—添加
TIME:{EVENT.DATE} {EVENT.TIME}
messages:{ITEM.NAME}:{ITEM.VALUE}
TIME:{EVENT.DATE} {EVENT.TIME}
messages:{ITEM.NAME}:{ITEM.VALUE}
十二、测试告警
十三、不发邮件的问题处理
- 用户权限
- 用户媒介有没有设置邮箱
- 发邮件脚本的权限是否755
- 脚本的位置是否在/usr/lib/zabbix/alertscripts/下
- 发邮件脚本是否能够发送邮件
- zabbix配置动作是否配置正确
- 邮箱服务器可能存在波动,更换告警的邮箱
- 问题依然没有解决时,恢复快照尝试重新安装配置一遍
十四、扩展
- zabbix监控交换机(思科) http://tryrus.blog.51cto.com/10914693/1789847
- zabbix远程执行命令 http://www.ywnds.com/?p=6610
- zabbix分布式部署 http://sfzhang88.blog.51cto.com/4995876/1364399
- zabbix监控tomcat(版本有点老,大家只需要参考步骤,不能照搬) http://www.fblinux.com/?p=616