常见开源监控软件

cacti、nagios、zabbix、smokeping、open-falcon等等
 cacti、smokeping偏向于基础监控,成图非常漂亮
 cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图
 open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究
 后续以介绍zabbix为主



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 客户端软件,负责采集各个监控服务或项目的数据,并上报



zabbix监控流程图

linux 系统自带监控工具 linux监控平台有哪些_开发工具



安装zabbix

官网下载地址 www.zabbix.com/download

linux 系统自带监控工具 linux监控平台有哪些_php_02

rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

会连带安装httpd和php  如果mysql之前没有安装的话,需要根据lamp那一章的mysql安装方法安装mysql

vim /etc/my.cnf //需要增加配置

character_set_server = utf8

重启mysqld服务后,进入mysql命令行,创建zabbix库

create database zabbix character set utf8;

再创建用户

grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'cc-zabbix';

导入数据

cd /usr/share/doc/zabbix-server-mysql*   //这里版权根据自己的来,按tab自动

gzip -d create.sql.gz

mysql -uroot -pxxx zabbix < create.sql

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 //查看监听端口

linux 系统自带监控工具 linux监控平台有哪些_操作系统_03

浏览器访问http://ip/zabbix/     //web界面下面配置zabbix,这里ip根据自己的来

linux 系统自带监控工具 linux监控平台有哪些_操作系统_04

 

 

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_05

注意看右边是否都是ok,显然这里有个Fail,PHP的时间出错,就去php的配置文件修改

vim /etc/php.ini

linux 系统自带监控工具 linux监控平台有哪些_操作系统_06

systemctl restart httpd

linux 系统自带监控工具 linux监控平台有哪些_操作系统_07

linux 系统自带监控工具 linux监控平台有哪些_开发工具_08

linux 系统自带监控工具 linux监控平台有哪些_php_09

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_10

linux 系统自带监控工具 linux监控平台有哪些_php_11

用户名Admin 密码zabbix

linux 系统自带监控工具 linux监控平台有哪些_操作系统_12

修改管理员密码:

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_13

linux 系统自带监控工具 linux监控平台有哪些_客户端_14

linux 系统自带监控工具 linux监控平台有哪些_开发工具_15

修改密码时还能把语言修改了,更新完后刷新页面,就变成中文了,如下图所示:

linux 系统自带监控工具 linux监控平台有哪些_客户端_16



忘记Admin密码如何做

 进入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

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_17

linux 系统自带监控工具 linux监控平台有哪些_php_18

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_19

linux 系统自带监控工具 linux监控平台有哪些_客户端_20

linux 系统自带监控工具 linux监控平台有哪些_操作系统_21

这样主机就添加成功了,然后我们在来了解几个东西:

应用集,监控大的项目,如cpu,Filesystems(文件系统)等,它是一个集合,包含了多个监控项

linux 系统自带监控工具 linux监控平台有哪些_开发工具_22

监控项,监控的项目细化了,如CPU就监控好多项,而且每个监控项是否会有触发器也给罗列出来了

linux 系统自带监控工具 linux监控平台有哪些_客户端_23

触发器,就是报警系统,有分了很多个级别,可以根据我们的需求对不同的监控项设置不同的级别触发器

linux 系统自带监控工具 linux监控平台有哪些_php_24

图形,就是通过图形的样子更直观的展示我们监控项的波动,就像我们windows里面的任务管理器里面的性能一样

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_25

自动发现,可以通过配置监控项自动抓取我们所需要的东西,然后形成图形,触发器这些

linux 系统自带监控工具 linux监控平台有哪些_开发工具_26

web监控,就是监控我们的网站,www.……

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_27



添加自定义模板

linux 系统自带监控工具 linux监控平台有哪些_开发工具_28

linux 系统自带监控工具 linux监控平台有哪些_操作系统_29

添加完后,是没有任何监控项的,需要我们从其他模板里面去导入

linux 系统自带监控工具 linux监控平台有哪些_php_30

然后通过一个模板的监控项去找我们需要的监控项,前面打勾然后复制到我们的模板里面

linux 系统自带监控工具 linux监控平台有哪些_操作系统_31

linux 系统自带监控工具 linux监控平台有哪些_php_32

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_33

这样我们的监控项就复制过来了

注意,这里我们其他项都可以复制,自动发现是不行的,因为没有复制项:

linux 系统自带监控工具 linux监控平台有哪些_开发工具_34

所以我们就要用另外一种方法去添加了:

删除我们的添加项,然后选择我们的模板,点击链接的模板:

linux 系统自带监控工具 linux监控平台有哪些_客户端_35

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_36

linux 系统自带监控工具 linux监控平台有哪些_客户端_37

选择完之后一定要按添加,不然就没添加起,类似图上所示

linux 系统自带监控工具 linux监控平台有哪些_开发工具_38

然后回到我的模板,就发现我们的监控都导进来了,然后根据我们的需求去保留,不要的都删掉。

linux 系统自带监控工具 linux监控平台有哪些_客户端_39

删之前先做一个操作,点击我们模板进入到链接模板下,在动作那栏,会有2个操作:取消链接 取消链接并清理

显然我们需要监控项,直接点击取消链接,然后去我们的模板里面删除,如果不取消链接,我们是无法在我们的模板里面删除监控项的,就像是软连接一样。注:取消链接后,一定要点击更新,不然是不会生效的。

linux 系统自带监控工具 linux监控平台有哪些_开发工具_40

回到我们的模板,发现没有,后面没有链接模板了,这样我们就可以去删除我们不需要的监控项了

linux 系统自带监控工具 linux监控平台有哪些_开发工具_41

linux 系统自带监控工具 linux监控平台有哪些_客户端_42



处理图形中乱码

linux 系统自带监控工具 linux监控平台有哪些_操作系统_43

设置为中文后,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

linux 系统自带监控工具 linux监控平台有哪些_php_44



自动发现

1.修改自动发现规则里面的网卡间隔时间,以便我们快速获取图形

linux 系统自带监控工具 linux监控平台有哪些_操作系统_45

2.重启服务,服务端和客服端,刷新页面

linux 系统自带监控工具 linux监控平台有哪些_操作系统_46

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_47

这里我们就可以更好的查看我们的网卡流量了。

linux 系统自带监控工具 linux监控平台有哪些_php_48

调整完成后就可以把自动发现里面的时间间隔调大点!



添加自定义监控项目

需求:监控某台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'

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_49

安装该命令,使用yum list来查安装包

linux 系统自带监控工具 linux监控平台有哪些_客户端_50

linux 系统自带监控工具 linux监控平台有哪些_开发工具_51

linux 系统自带监控工具 linux监控平台有哪些_客户端_52

然后在zabbix监控中心(浏览器)配置增加监控项目:主机→监控项→创建监控项 

键值写my.estab.count  

linux 系统自带监控工具 linux监控平台有哪些_客户端_53

添加该项目后,到“监测中”→ “最新数据”查看刚添加的项目是否有数据出现  

linux 系统自带监控工具 linux监控平台有哪些_php_54

有了数据就可以添加图形了  “配置”→“主机” →“图形” →“创建图形”

linux 系统自带监控工具 linux监控平台有哪些_开发工具_55

linux 系统自带监控工具 linux监控平台有哪些_开发工具_56



配置告警

 使用163或者QQ邮箱发告警邮件
 首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务
 开启并记录授权码

linux 系统自带监控工具 linux监控平台有哪些_php_57

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_58


 然后到监控中心设置邮件告警

 “管理”,“报警媒介类型”,“创建媒体类型”{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_59

服务器上,创建报警脚本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

测试:

linux 系统自带监控工具 linux监控平台有哪些_客户端_60

linux 系统自带监控工具 linux监控平台有哪些_开发工具_61

收到了



创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,“报警媒介”,类型选择“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}

linux 系统自带监控工具 linux监控平台有哪些_客户端_62

linux 系统自带监控工具 linux监控平台有哪些_客户端_63

“新的触发条件”,A维护状态 非在 维护,B触发器示警度>=未分类

linux 系统自带监控工具 linux监控平台有哪些_客户端_64

linux 系统自带监控工具 linux监控平台有哪些_php_65

“操作”,选择发送的用户为刚创建的用户,仅送到选择“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”

linux 系统自带监控工具 linux监控平台有哪些_开发工具_66

linux 系统自带监控工具 linux监控平台有哪些_linux 系统自带监控工具_67

linux 系统自带监控工具 linux监控平台有哪些_php_68



测试告警

创建新的触发器:系统负载,让其最新值<1,就报警

linux 系统自带监控工具 linux监控平台有哪些_php_69

linux 系统自带监控工具 linux监控平台有哪些_开发工具_70

linux 系统自带监控工具 linux监控平台有哪些_开发工具_71

然后在仪表盘里就能发现问题那栏有报警信息:

linux 系统自带监控工具 linux监控平台有哪些_php_72

linux 系统自带监控工具 linux监控平台有哪些_开发工具_73

邮件成功发送!

然后就触发器修改一下,大于1:

linux 系统自带监控工具 linux监控平台有哪些_开发工具_74

linux 系统自带监控工具 linux监控平台有哪些_开发工具_75

然后仪表盘问题里面问题就是绿色了,已解决,还回复了一封邮件:

linux 系统自带监控工具 linux监控平台有哪些_开发工具_76