cacti、nagios、zabbix、smokeping、open-falcon等等php
cacti、smokeping偏向于基础监控,成图很是漂亮python
cacti、nagios、zabbix服务端监控中心,须要php环境支持,其中zabbix和cacti都须要mysql做为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而能够成图mysql
open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究linux
目前流行的监控为: zabbix ,Prometheus+grafanaios
扩展:使用Prometheus+grafana打造高逼格监控平台:http://blog.51cto.com/youerning/2050543nginx
首先要准备两台机器。web
两台机器都要下载安装sql
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql数据库
yum install -y zabbix-agentvim
若是不设置在web界面zabbix中文显示会有问题。
增长内容以下:
character_set_server = utf8
添加完后重启下mysql
首先登录 mysql -uroot -p123456
登录后指定字符集 create database zabbix character set utf8;
为了让php代码连接mysql等,在建立用户,指定来源IP,建立密码。
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';
没有这些数据zabbix没法工做。
[root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.11/ [root@localhost zabbix-server-mysql-3.4.11]# ls AUTHORS ChangeLog COPYING create.sql.gz NEWS README [root@localhost zabbix-server-mysql-3.4.11]# gzip -d create.sql.gz [root@localhost zabbix-server-mysql-3.4.11]# ls AUTHORS ChangeLog COPYING create.sql NEWS README [root@localhost zabbix-server-mysql-3.4.11]# mysql -root -p123456 zabbix < create.sql Warning: Using a password on the command line interface can be insecure. [root@localhost zabbix-server-mysql-3.4.11]#
vim /etc/zabbix/zabbix_server.conf
### Option: DBHost # Database host name. # If set to localhost, socket is used for MySQL. # If set to empty string, socket is used for PostgreSQL. # # Mandatory: no # Default: # DBHost=localhost DBHost=127.0.0.1
正常生产环境中数据库可能在另外一台机器上,须要定义那台机器得IP.
定义DBName 要和数据库定义得名字同样
定义DBUser,以及密码。
# DBUser= DBUser=zabbix DBPassword=aming-zabbix
启动后用ps aux |grep zabbix检查一下,若是出现特别多得内容说明启动成功了,若是只有几行说明启动得有问题。
启动httpd服务:systemctl start httpd(启动前检查是否启动了nginx监听80端口,若是启动须要停掉)
加入开机启动里: systemctl enable zabbix-server ,systemctl enable httpd
[root@localhost ~]# netstat -lntp |grep zabbix tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 2486/zabbix_server tcp6 0 0 :::10051 :::* LISTEN 2486/zabbix_server
只看faild 不用管ok的。vi /etc/php.ini 找到timezone,添加
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone =Asia/Shanghai
定义完成以后重启httpd服务。以后刷新网页就会没有刚刚的报错,直接点下一步便可。
下一步后,填写name无所谓写什么自定义便可。
完成以后出现登录界面,默认用户名:Admin 密码:zabbix
进入后台第一件事情就是修改密码
mysql -u root -p123456 use zabbix
mysql -uroot -p zabbix
update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
这样就更改了Admin用户的密码
其中有三个地方须要修改
Server=127.0.0.1修改成Server=192.168.159.128 //定义服务端的ip(被动模式) ServerActive=127.0.0.1修改成ServerActive=192.168.159.128 //定义服务端的ip(主动模式) Hostname=Zabbix server修改成Hostname=aming-01 //这是自定义的主机名,一会还须要在web界面下设置一样的主机名
主动或者被动是相对客户端来说的
被动模式,服务端会主动链接客户端获取监控项目数据,客户端被动地接受链接,并把监控信息传递给服务端
主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收便可。
当客户端数量很是多时,建议使用主动模式,这样能够下降服务端的压力。
服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式
首先添加主机群组 aming-text
而后点击主机,添加主机命名为:aming-01,配置如图:
监控项可定义主动模式被动模式
应用集就是监控项目的集合
自动发现规律:会自动发现客户端的磁盘分区,网卡流量,文件系统进行监控。
之因此连接模板是由于会把自动发现选项的模板也连接过来。自动发现的模板没法单独复制。连接完以后,把不须要的在删除。
连接以后的模板没法删除,由于是连接其余组的膜拜你。可是取消连接以后,自定义组会保留以前连接的全部模板,这样就能够删除没有用的了。
先删除监控项,后删除应用集。
保留如下选项,其余均可以删除
设置为中文后,zabbix图形的中文文字会显示小方框 这是由于在zabbix的字体库中没有中文字体,须要从windows上借用一个过来
它定义的路径是“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分钟,而后重启server和agent
看到图形就会自动识别网卡之类的
为了防止服务器压力,在更新出新图表后把自动发现更新时间改成时间稍微长一点。
#!/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)//自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,参数由逗号分隔若是没有参数则能够省略,脚本为/usr/local/sbin/estab.sh
重启zabbix-agent服务 systemctl restart zabbix-agent
首先到服务端验证,看客户端脚本是否生效,执行命令值为0,说明正常
[root@localhost ~]# zabbix_get -s 192.168.159.130 -p 10050 -k 'my.estab.count' 0
表达式
“管理”,“报警媒介类型”,“建立媒体类型”
脚本参数 {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
脚本必须放在这个目录下, 由于服务端的配置文件就是这样定义的,/usr/lib/zabbix/alertscripts/
在客户端建立脚本mail.py
#!/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['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 目标邮箱 "邮件主题" "邮件内容"
权限必定不要忘记更改 chmod 755 /usr/lib/zabbix/alertscripts/mail.py
测试脚本是否可用
[root@localhost alertscripts]# python mail.py 13261666323@163.com "这是一个测试标题" "这是一个测试内容,124234djgajgoaiodjboshjb"
测试成功,只不过中文是乱码。
建立一个接受告警邮件的用户,“管理”,“用户”,“建立用户”,“报警媒介”,类型选择“baojing”,注意用户的权限,若是没有须要到用户组去设置权限
设置动做,“配置”,“动做”,“建立动做”,名称写“sendmail”(自定义),“操做”页面,内容以下
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}
点击“新的”,“操做”,选择发送的用户为刚建立的用户,仅送到选择“baojing”
测试告警
此触发器是检测系统负载小于1的时候发送邮件。
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