cacti、nagios、zabbix、smokeping、open-falcon等等 cacti、smokeping偏向于基础监控,成图很是漂亮 cacti、nagios、zabbix服务端监控中心,须要php环境支持,其中zabbix和cacti都须要mysql做为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而能够成图 open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究 后续以介绍zabbix为主
C/S架构,基于C++开发,监控中心支持web界面配置和管理 单server节点能够支持上万台客户端 最新版本3.4,官方文档https://www.zabbix.com/manuals 5个组件 zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操做数据 数据存储 存放数据,好比mysql web界面 也叫web UI,在web界面下操做配置是zabbix简单易用的主要缘由 zabbix-proxy 可选组件,它能够代替zabbix-server的功能,减轻server的压力 zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据,并上报
官网下载地址 www.zabbix.com/downloadphp
rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpmpython
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysqlmysql
会连带安装httpd和php 若是mysql以前没有安装的话,须要根据lamp那一章的mysql安装方法安装mysqllinux
vim /etc/my.cnf //须要增长配置ios
character_set_server = utf8
重启mysqld服务后,进入mysql命令行,建立zabbix库web
create database zabbix character set utf8;
再建立用户sql
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'cc-zabbix';
导入数据数据库
cd /usr/share/doc/zabbix-server-mysql* //这里版权根据本身的来,按tab自动vim
gzip -d create.sql.gz
mysql -uroot -pxxx zabbix < create.sqlwindows
systemctl start httpd; systemctl enable httpd //注意查看80端口是否被占用
vim /etc/zabbix/zabbix_server.conf //修改或增长
DBHost=127.0.0.1 //在DBName=zabbix上面增长 DBPassword=cc-zabbix //在DBuser下面增长
systemctl start zabbix-server ;systemctl enable zabbix-server
netstat -lntp |grep zabbix //查看监听端口
浏览器访问http://ip/zabbix/ //web界面下面配置zabbix,这里ip根据本身的来
注意看右边是否都是ok,显然这里有个Fail,PHP的时间出错,就去php的配置文件修改
vim /etc/php.ini
systemctl restart httpd
用户名Admin 密码zabbix
修改管理员密码:
修改密码时还能把语言修改了,更新完后刷新页面,就变成中文了,以下图所示:
进入mysql命令行,选择zabbix库 mysql -uroot -p123456 zabbix
update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
这样就更改了Admin用户的密码
在客户端上也须要下载zabbix的yum源 wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm yum install -y zabbix-agent vim /etc/zabbix/zabbix_agentd.conf //修改以下配置 Server=127.0.0.1修改成Server=192.168.36.128 //定义服务端的ip(被动模式) ServerActive=127.0.0.1修改成ServerActive=192.168.136.128 //定义服务端的ip(主动模式) Hostname=Zabbix server修改成Hostname=cc-02 //这是自定义的主机名,一会还须要在web界面下设置一样的主机名 systemctl start zabbix-agent systemctl enable zabbix-agent
主动或者被动是相对客户端来说的 被动模式,服务端会主动链接客户端获取监控项目数据,客户端被动地接受链接,并把监控信息传递给服务端 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收便可。 当客户端数量很是多时,建议使用主动模式,这样能够下降服务端的压力。 服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式
先添加主机组cc-test 再添加主机,主机名称和可见名称都写cc-02 群组选择cc-test IP地址填写客户端的ip 192.168.36.131
这样主机就添加成功了,而后咱们在来了解几个东西:
应用集,监控大的项目,如cpu,Filesystems(文件系统)等,它是一个集合,包含了多个监控项
监控项,监控的项目细化了,如CPU就监控好多项,并且每一个监控项是否会有触发器也给罗列出来了
触发器,就是报警系统,有分了不少个级别,能够根据咱们的需求对不一样的监控项设置不一样的级别触发器
图形,就是经过图形的样子更直观的展现咱们监控项的波动,就像咱们windows里面的任务管理器里面的性能同样
自动发现,能够经过配置监控项自动抓取咱们所须要的东西,而后造成图形,触发器这些
web监控,就是监控咱们的网站,www.……
添加完后,是没有任何监控项的,须要咱们从其余模板里面去导入
而后经过一个模板的监控项去找咱们须要的监控项,前面打勾而后复制到咱们的模板里面
这样咱们的监控项就复制过来了
注意,这里咱们其余项均可以复制,自动发现是不行的,由于没有复制项:
因此咱们就要用另一种方法去添加了:
删除咱们的添加项,而后选择咱们的模板,点击连接的模板:
选择完以后必定要按添加,否则就没添加起,相似图上所示
而后回到个人模板,就发现咱们的监控都导进来了,而后根据咱们的需求去保留,不要的都删掉。
删以前先作一个操做,点击咱们模板进入到连接模板下,在动做那栏,会有2个操做:取消连接 取消连接并清理
显然咱们须要监控项,直接点击取消连接,而后去咱们的模板里面删除,若是不取消连接,咱们是没法在咱们的模板里面删除监控项的,就像是软链接同样。注:取消连接后,必定要点击更新,否则是不会生效的。
回到咱们的模板,发现没有,后面没有连接模板了,这样咱们就能够去删除咱们不须要的监控项了
设置为中文后,zabbix图形的中文文字会显示小方框 这是由于在zabbix的字体库中没有中文字体,须要从windows上借用一个过来 vim /usr/share/zabbix/include/defines.inc.php //搜索ZBX_FONTPATH 它定义的路径是“fonts”,它是一个相对路径,绝对路径为/usr/share/zabbix/fonts,而字体文件为“ZBX_GRAPH_FONT_NAME”所定义的“graphfont”,它是一个文件,绝对路径为/usr/share/zabbix/fonts/graphfont windows字体路径为“C:\Windows\Fonts\”,找到“simfang.ttf”(其实就是那个仿宋简体),先把它复制到桌面上,而后上传到linux的/usr/share/zabbix/fonts/,而且更名为graphfont.ttf
1.修改自动发现规则里面的网卡间隔时间,以便咱们快速获取图形
2.重启服务,服务端和客服端,刷新页面
这里咱们就能够更好的查看咱们的网卡流量了。
调整完成后就能够把自动发现里面的时间间隔调大点!
需求:监控某台web的80端口链接数,并出图
两步:1)zabbix监控中心建立监控项目;2)针对该监控项目以图形展示
对于第一步,须要到客户端定义脚本
vim /usr/local/sbin/estab.sh //内容以下
#!/bin/bash ##获取80端口并发链接数 netstat -ant |grep ':80 ' |grep -c ESTABLISHED
chmod 755 /usr/local/sbin/estab.sh
客户端上编辑配置文件
vim /etc/zabbix/zabbix_agentd.conf //增长
UnsafeUserParameters=1 //表示使用自定义脚本 UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh //自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,若是没有参数则能够省略,脚本为/usr/local/sbin/estab.sh
重启zabbix-agent服务 systemctl restart zabbix-agent
首先到服务端验证,执行命令
zabbix_get -s 192.168.36.131 -p 10050 -k 'my.estab.count'
安装该命令,使用yum list来查安装包
而后在zabbix监控中心(浏览器)配置增长监控项目:主机→监控项→建立监控项
键值写my.estab.count
添加该项目后,到“监测中”→ “最新数据”查看刚添加的项目是否有数据出现
有了数据就能够添加图形了 “配置”→“主机” →“图形” →“建立图形”
使用163或者QQ邮箱发告警邮件
首先登陆你的163邮箱,设置开启POP三、IMAP、SMTP服务
开启并记录受权码
而后到监控中心设置邮件告警
“管理”,“报警媒介类型”,“建立媒体类型”
{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
服务器上,建立报警脚本mail.py
vim /usr/lib/zabbix/alertscripts/mail.py //内容参考
#!/usr/bin/python # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText import sys mail_user = '1232323232@163.com' mail_pass = 'xxxxxxxxxx' def send_mail(to_list,subject,content): me = "zabbix 监控告警平台"+"<"+mail_user+">" msg = MIMEText(content, 'plain', 'utf-8') msg['Subject'] = subject msg['From'] = me msg['to'] = to_list try: s = smtplib.SMTP("smtp.163.com", 25) s.login(mail_user,mail_pass) s.sendmail(me,to_list,msg.as_string()) s.close() return True except Exception,e: print str(e) return False if __name__ == "__main__": send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
chmod 755 /usr/lib/zabbix/alertscripts/mail.py
测试:
收到了
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}
“新的触发条件”,A维护状态 非在 维护,B触发器示警度>=未分类
“操做”,选择发送的用户为刚建立的用户,仅送到选择“baojing” 切换到“恢复操做”,把信息改为以下
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}
点击“新的”,“操做”,选择发送的用户为刚建立的用户,仅送到选择“baojing”
建立新的触发器:系统负载,让其最新值<1,就报警
而后在仪表盘里就能发现问题那栏有报警信息:
邮件成功发送!
而后就触发器修改一下,大于1:
而后仪表盘问题里面问题就是绿色了,已解决,还回复了一封邮件: