一、Cacti、Nagios 、Zabbix监控介绍
1.1、Cacti:一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具
1.1.1、构件(步骤):
net_snmp:负责数据采集
rrdtool:数据存储以及绘图
mysql:保存模板和主机对应的信息
数据采集:cacti使用poller(轮询器)收集数据,主要使用snmp协议从远端的设备上收集数据。
数据存储:cacti使用rrdtool(环形数据库)存储收集到的数据(时间序列数据)。rrd会将原始数据与整合到的数据进行合并,以使得历史数据的存储节省空间。
数据展示:rrdtool绘图功能。
1.1.2、工作原理:
net_snmp协议定时采集数据,保存到rrd,当用户需要查看某个主机对应的监控信息的时候可以在MySQL中寻找对应的主机ip等信息,然后在命令rrd绘制出图形
1.1.3、监控对象:网络流量、cpu使用率、硬盘使用率等
1.2、nagios:一款开源的免费网络监视工具
1.2.1、构件:
主程序(Nagios Daemon):Nagios的主部件,实现了监控,性能,通知,事件处理功能。这些功能都是抽象的逻辑和调度,并没有实际的与设备交互的监控实现,与设备的交互都是在下面一层的Plugin种实现的,这些就是Nagios认为可变部分。
Web Interface: Nagios的Web页面,Nagios的Web容器是Apache HTTPD,Nagios开发了一个HTTPD模块,并提供Web页面。Web Interface与Nagios Daemon之间通过文件接×××互,Web逻辑读取Nagios的状态文件(status.dat),展示其监控信息。
插件程序(nagios-plugins):四个可选的附件(NRPE,NSCA,NSClient++,NDOUtils)
NDOUtils:用来将Nagios的配置信息和各event产生的数据存入数据库,以实现这些数据的减速和快速处理
NRPE、NSClient:工作在客户端
NSCA:被动(让被监控的主机主动将监控信息发送给服务器)需要同时安装在服务端和客户端NSCA---send-nsca
1.2.2、原理:
基于状态的改变来实现报警,当状态改变之后会先不警告(软状态),当两次采集之后状态都改变了再通知(硬状态)
1.2.3、监控对象:注重主机和服务的监控;自带监控项比较少
1.3、zabbix:基于WEB界面的提供分布式系统监视及网络监视功能的企业级的开源解决方案,基于C/S架构
1.3.1、构造:
agent:被监控对象
server:负责数据收集
proxy:代理
1.3.2、原理:
主被动模式:主被动模式是相对于客户端来说的,主动就是客户端主动将采集的数据发送给server端,而被动模式是server过来告诉agent自己需要什么东西,agent采集;zabbix和nagios的报警机制一样,通过插件模板来实现
1.3.3、监控对象:网络状态、自带监控项比较多
二、网络拓扑图
三、部署的环境
zabbix-server端:
[root@zabbix-server ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@zabbix-server ~]# uname -r
3.10.0-693.el7.x86_64
[root@zabbix-server ~]# ifconfig ens32|sed -nr 's#^.*inet (.*) netmask.*$#\1#gp'
10.0.0.102
[root@zabbix-server ~]# systemctl stop firewalld
[root@zabbix-server ~]# getenforce
Disabled
zabbix-agent1端:
[root@zabbix-agent1 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@zabbix-agent1 ~]# uname -r
3.10.0-693.el7.x86_64
[root@zabbix-agent1 ~]# ifconfig ens32|sed -nr 's#^.*inet (.*) netmask.*$#\1#gp'
10.0.0.101
[root@zabbix-agent1 ~]# systemctl stop firewalld
[root@zabbix-agent1 ~]# getenforce
Disabled
zabbix-agent2端:
[root@zabbix-agent2 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@zabbix-agent2 ~]# uname -r
3.10.0-693.el7.x86_64
[root@zabbix-agent2 ~]# ifconfig ens32|sed -nr 's#^.*inet (.*) netmask.*$#\1#gp'
10.0.0.103
[root@zabbix-agent2 ~]# systemctl stop firewalld
[root@zabbix-agent2 ~]# getenforce
Disabled
四、zabbix安装部署(具体过程参照官方文档):
zabbix-server端:
4.1、安装源码库配置部署包
[root@andy ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
Retrieving https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-3.4-1.el7.centos ################################# [100%]
[root@andy ~]# rpm -ql zabbix-release ##查看安装的内容
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
/etc/yum.repos.d/zabbix.repo
/usr/share/doc/zabbix-release-3.4
/usr/share/doc/zabbix-release-3.4/GPL
[root@andy ~]# yum makecache
4.2、安装Zabbix部署包
[root@andy ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-server zabbix-agent mariadb-server -y
4.2.1、安装初始化数据库
[root@andy ~]# systemctl start mariadb
[root@andy ~]# mysql -uroot -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> show databases;
+----------------------+
| Database |
+----------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
+-------------------+
MariaDB [(none)]> quit
Bye
[root@andy ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.8
[root@andy zabbix-server-mysql-3.4.8]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@andy zabbix-server-mysql-3.4.8]# zcat create.sql.gz | mysql -uroot zabbix
4.2.2、启动Zabbix Server进程
[root@andy zabbix-server-mysql-3.4.8]# sed -i "s|# DBPassword=|DBPassword=zabbix|g" /etc/zabbix/zabbix_server.conf
[root@andy zabbix-server-mysql-3.4.8]# systemctl start zabbix-server
[root@andy zabbix-server-mysql-3.4.8]# netstat -lntup|grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 16581/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 16581/zabbix_server
4.2.3、编辑Zabbix前端的PHP配置
[root@andy zabbix-server-mysql-3.4.8]# sed -i "s|# php_value date.timezone Europe/Riga|php_value date.timezone Asia/ShangHai|g" /etc/httpd/conf.d/zabbix.conf
[root@andy zabbix-server-mysql-3.4.8]# systemctl start httpd
Zabbix前端可以在浏览器中通过 http://zabbix-frontend-hostname/zabbix 进行访问。默认的用户名/密码为 Admin/zabbix
如本次实例:http://10.0.0.102/zabbix/setup.php
Step1:
Step2:
Step3:
Step4:
Step5:
Step6:
Step7:
Step8:
4.3、优化和添加主机
登陆和配置用户:修改管理员密码
添加监控主机(配置-->主机-->创建主机):
Step1:
Step2:
Step3:
zabbix-agent1端:
安装源码库配置部署包
[root@zabbix-agent1 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
Retrieving https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-3.4-1.el7.centos ################################# [100%]
[root@zabbix-agent1 ~]# rpm -ql zabbix-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
/etc/yum.repos.d/zabbix.repo
/usr/share/doc/zabbix-release-3.4
/usr/share/doc/zabbix-release-3.4/GPL
[root@zabbix-agent1 ~]# yum install -y zabbix-agent
[root@zabbix-agent1 ~]# sed -i 's#^Server=127.0.0.1#Server=10.0.0.102#g' /etc/zabbix/zabbix_agentd.conf
[root@zabbix-agent1 ~]# cat /etc/zabbix/zabbix_agentd.conf|grep '^Server=1'
Server=10.0.0.102
[root@zabbix-agent1 ~]# systemctl start zabbix-agent
zabbix-agent2端:
安装源码库配置部署包
[root@zabbix-agent2 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
Retrieving https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-3.4-1.el7.centos ################################# [100%]
[root@zabbix-agent2 ~]# rpm -ql zabbix-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
/etc/yum.repos.d/zabbix.repo
/usr/share/doc/zabbix-release-3.4
/usr/share/doc/zabbix-release-3.4/GPL
[root@zabbix-agent2 ~]# yum install -y zabbix-agent
[root@zabbix-agent2 ~]# sed -i 's#^Server=127.0.0.1#Server=10.0.0.102#g' /etc/zabbix/zabbix_agentd.conf
[root@zabbix-agent2 ~]# cat /etc/zabbix/zabbix_agentd.conf|grep '^Server=1'
Server=10.0.0.102
[root@zabbix-agent2 ~]# systemctl start zabbix-agent
五、查看告警主机终端数实例
zabbix-agent1端:
[root@zabbix-agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=log_user,/usr/bin/w|sed -nr 's#^.*, (.*) users.*$#\1#gp' ##在296行
UserParameter=log_user,/usr/bin/w|awk 'NR==1 {print$4}' ##用这条命令
[root@zabbix-agent1 ~]# systemctl restart zabbix-agent
zabbix-server端:
[root@zabbix-server ~]# yum install -y zabbix-get
[root@zabbix-server ~]# zabbix_get -s 10.0.0.101 -k log_user
2
Step1:
Step2:
Step3(添加监控项):
Step4(填完信息再保存):
Step5(添加图形):
Step6(填完信息再保存):
Step7(添加触发器):
Step8(填完信息再保存):
Add部分
Step9(添加图形):
Step10(填完信息再保存):
添加一个动作(Configuration-->Actions)
Step1:
Step2:
Step3:
Step4(Administration-->Users):
Step5(Administration-->Users-->Admin):
Step6(Administration-->Media types-->Email):注意登录第三方邮件客户端时使用授权码
Step6多开两个终端验证(Reports-->Action log):
小结:
1、自定义key-items监控项
我们需要监控什么(用户登录终端数),怎么监控(w|awk)
2、zabbix的web页面
2.1、在监控主机上面添加一个items(agent端定义的key log_user)
2.2、画一个图形(数据实际从key-->shell捕获)
2.3、定义触发器,多少用户登录终端就报警
参照:
https://www.zabbix.com/documentation/3.4/start
https://blog.51cto.com/12118369/1968090
.........