cacti是一套基于PHP、MySQL、SNMP 及 RRD Tool开发的监测图形分析工具,Cacti是使用轮询的方式由主服务器向设备发送数据请求来获取设备上状态数据信息的,如果设备不断增多,这个轮询的过程就非常的耗时,轮询的结果就不能即时的反应设备的状态了。Cacti监控关注的是对数据的展示,却不关注数据异常后的反馈。如果凌晨3点的时候设备的某个数据出现异常,除非监控人员在屏幕前发现这个异常变化,否则是没有任何报警机制能够让我们道出现了异常。
Nagios是一款开源的免费网络监控报警服务,能有效监控Windows、Linux和Unix的主机状态,交换机、路由器和防火墙等网络设置,打印机、网络投影、网络摄像等设备。在系统或服务状态异常时发出邮件或短信报警第一时间通知运维人员,在状态恢复后发出正常的邮件或短信通知。Nagios有完善的插件功能,可以方便的根据应用服务扩展功能。
.Nagios已经可以支持由数万台服务器或上千台网络设备组成的云技术平台的监控,它可以充分发挥自动化运维技术特点在设备和人力资源减少成本。只是Nagios无法将多个相同应用集群的数据集合起来,也不能监控到集群中特殊节点的迁移和恢复。
用户群,适合复杂IT环境的企业
优点:
缺点
Ganglia是 uC Berkeley ‘发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、 gmetad 以及一个Web前端。
·主要是用来监控系统性能,如:CPU、内存、硬盘利用率, l/o负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用,目前是监控HADOOP 的官方推荐服务。
prometheus由go语言开发,是一套开源的监控,报警,时间序列数据库的组合,适合监控docker容器,其中kubernetes的流行带动了prometheus的发展。
小米的open falcon (中小型完全没必要,入手比较难,中心思想比较好 )入门成本比较高,
优点:支持自动发现,支持用户主动push,用户自定义插件支持,性能非常高单击支撑200万metric的上报,归档,存储
缺点:发布时间比较短,支持度比较低,很多基础的服务监控插件(tomcat,apache)还不支持,很多功能还在不断完善中,另外由于缺少专门的支持,虽然有开放社区,但是解决问题的效率相对较低。
360监控,百度云监控,阿里云监控,小蜜蜂网站监测,都是付费的。
数据库:MYSQL. MariaDB,Oracle,SQL Server
应用软件;Nginx,Apache,PHP,Tomcat
集群 :LVS,keepalived,haproxy,rhcs,FS
虚拟化 ; vmware,kvm,xfn,docker.k8s
操作系统 :linux,unix,windows性能参数
硬件 :服务器,存储,网络设备
网络 :网络环境(内网环境,外网环境) SNMP
被动检测,相对于agent而言,agent,server向agent请求获取配置的各监控项相关的数据,agent接收请求,获取数据并相应给server
主动监测:相对于agent而言,agent(active),agent向server请求与自己相关的监控配置,主动的将server配置的监控项相关的数据发送给server
主动监控能极大节约server资源
zabbix由几个主要的软件组件构成,功能如下:
Zabbix server是agent程序报告系统可用性、系统完整性和统计数据的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。
·所有配置信息和Zabbix收集到的数据都被存储在数据库中。
·为了从任何地方和任何平台都可以轻松的访问Zabbix,我们提供基于Web的Zabbix界面。该界面是ZabbixServer的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。
·如果使用SQLite,Zabbix web 界面必须要跟Zabbix Server运行在同一台物理机器上。
Zabbix proxy可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbixc软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力,
Zabbix agents监控代理部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给zabbix Server.
·一台你想监控的网络没备。用P或域名表示
·主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。
·你想要接收的主机的特定数据,一个度量数据。
I
。一个被用于定义问题阈值和评估”监控项接收到的数据的逻辑表达式
当接收到的数据高于阈值时,触发器从”OK”变成Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个-“OK”的状态。
·单次发生的需要注意的事情,例如触发器状态改变或发现有监控代理白动注册
·一个处在”异常””状态的触发器
。—个对事件做出反应的侦定义的操作。
。一个动作由操作(例如发出通知)和条件(当时操作正在发生组&
。一个在动作内执行操作的自定义场景;发送通知/执行远程命令的序列
发送告警通知的手段;告警通知的途径
·利用已选择的媒体途径把跟事件相笑的信息发送给用户
一个预定义好的,满足一些条件的情况下,可以在被监控主机上自动执行的命令
一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合
·模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单。模版是直接关联到每台单独的主机上。
—组监控项组成的逻辑分组
·利用一个或多个HTTP请求来检查网站的可用性
Zabbix提供的we美界面
Zabbix APlI允许你使用[SON RPC协议(是一个无状态且轻量级的远程过程调用(RPC)传送协议,其传递内容透过JSON为主)来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务
Zabbix软件实现监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等
·一个部署在监控对象上的,能够主动监控本地资源和应用的程序
· Zabbix agent 部署在蓝控的目标上,主动监测本地的资源和应用(硬件驱动,内存,处理器统计等).
Zabbix agent收集本地的操作信息并将数据报告给Zabbix server用于进一步处理。一旦出现异常(比如硬盘空间已满或者有崩溃的服务进程),Zabbix server会主动警告管理员指定机器上的异常。.Zabbix agents 的极端高效缘于它可以利用本地系统调用来完成统计数据的收集。
zabbix agents 可以执行被动和主动两种检查方式
1、被动检查(passive check)模式中 agent 应答数据请求,Zabbix server(或者proxy)询问agent数据如CPU的负载情况。然后Zabbiox agent回送结果,
2、主动检查(Active checks)处理过程将相对复杂。Agent必须首先从Zabbix sever索取监控项列表以进行独立处理,然后周期性地发送新的值给server.
执行被动或主动检查是通过选择相应的监测项目类型来配置的。item type.Zabbix agent处理监控项类型有Zabbix agent和Zabbix agent (active).
centos 7.5系统服务器3台,一台作为监控服务器,两台作为被监控节点,配置好yum源,防火墙关闭,各节点时钟服务同步,各节点之间可以通过主机名互相通信
[root@server1 ~]# systemctl stop firewalld
[root@server1 ~]# setenforce 0
setenforce: SELinux is disabled
[root@server1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
机器名称 | ip配置 | 服务角色 | 备注 |
---|---|---|---|
node1 | 20.0.0.20 | zabbix-agent | 开启 |
node2 | 20…0.030 | zabbix-agent | 开启 |
server | 20.0.0.10 | zabbix-server | 开启监控功能 |
[root@zabibx ~]# yum -y install wget
[root@zabibx ~]# wget https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm //去阿里云镜像站复制镜像源包地址
[root@zabibx ~]# ls zabbix-release-4.4-1.el7.noarch.rpm // 下载到本地
[root@zabibx ~]# rpm -ivh zabbix-release-4.4-1.el7.noarch.rpm //安装yum仓库
[root@zabibx ~]# yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base:
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base 10,072
zabbix/x86_64 Zabbix Official Repository - x86_64 179
zabbix-non-supported/x86_64 Zabbix Official Repository non-supported - x86_64 4
repolist: 10,255
[root@zabibx ~]# yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql
[root@zabibx ~]# vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
~
[root@zabibx ~]# yum -y install MariaDB-server MariaDB-client
[root@zabibx ~]# vim /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve = ON 跳过主机名解析
innodb_file_per_table = ON 开启独立表空间
innodb_buffer_pool_size = 256M 缓存池大小
max_cOnnections= 2000 最大连接数
log-bin = master-log 开启二进制日志
[root@zabibx ~]# systemctl restart mariadb
[root@zabibx ~]# mysql_secure_installation 初始化mariadb
mysql
create database zabbix character set 'utf8'; create database zabbix character set utf8 collate utf8_bin;
注意:此处是报错点,4.4.5之前的字符集是第一个,之后的版本都是第二个
grant all on zabbix.* to 'zbxuser'@'20.0.0.%' identified by 'zabbix';
grant all on zabbix.* to 'zbxuser'@'localhost' identified by 'zabbix';
flush privileges;
注意:记住账号是zbxuser 密码是zabbix
查看zabbix-server-mysql这个包提供了什么
[root@zabibx ~]# rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-4.4.10
/usr/share/doc/zabbix-server-mysql-4.4.10/AUTHORS
/usr/share/doc/zabbix-server-mysql-4.4.10/COPYING
/usr/share/doc/zabbix-server-mysql-4.4.10/ChangeLog
/usr/share/doc/zabbix-server-mysql-4.4.10/NEWS
/usr/share/doc/zabbix-server-mysql-4.4.10/README
/usr/share/doc/zabbix-server-mysql-4.4.10/create.sql.gz # 生成表的各种脚本
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix
使用create.sql.gz生成所需要的表
[root@zabibx ~]# gzip -d /usr/share/doc/zabbix-server-mysql-4.4.10/create.sql.gz
[root@zabibx doc]# cd /usr/share/doc/zabbix-server-mysql-4.4.10/
[root@zabibx zabbix-server-mysql-4.4.10]# ls
AUTHORS ChangeLog COPYING create.sql NEWS README
[root@zabibx zabbix-server-mysql-4.4.10]# head create.sql # 查看一下表头
CREATE TABLE `users` (
`userid` bigint unsigned NOT NULL,
`alias` varchar(100) DEFAULT '' NOT NULL,
`name` varchar(100) DEFAULT '' NOT NULL,
`surname` varchar(100) DEFAULT '' NOT NULL,
`passwd` varchar(32) DEFAULT '' NOT NULL,
`url` varchar(255) DEFAULT '' NOT NULL,
`autologin` integer DEFAULT '0' NOT NULL,
`autologout` varchar(32) DEFAULT '15m' NOT NULL,
`lang` varchar(5) DEFAULT 'en_GB'
查看表头发现没有创建数据库命令,这正是手动创建数据库的原因,把所需表导入数据库即可
[root@zabibx zabbix-server-mysql-4.4.10]# vim create.sql
USE zabbix; # 在配置文件最上面加上此行
[root@zabibx zabbix-server-mysql-4.4.10]# mysql -uzbxuser -p zabbix
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| zabbix |
+--------------------+
4 rows in set (0.001 sec)
MariaDB [zabbix]> use zabbix;
MariaDB [zabbix]> show tables; # 查看有多少张表
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
.......
| valuemaps |
| widget |
| widget_field |
+----------------------------+
MariaDB [zabbix]> select * from users; # 查看user表是否有
可以看出来,我们的数据已经导入成功了
数据库配置好了之后我们要去修改server端的配置文件
[root@zabibx ~]# cd /etc/zabbix/
[root@zabibx zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
[root@zabibx zabbix]# cp zabbix_server.conf{,.bak} # 为了方便以后的恢复,先把配置文件备份一份
[root@zabibx zabbix]# vim zabbix_server.conf
ListenPort=10051 默认监听端口
SourceIP=20.0.0.10 采样数据请求的ip
·默认用文件记录,也可以发送给我们的rsyslog日志记录系统,如果我们选择默认,则日志存放在LogFile=/var/log/zabbix/zabbix_server.log中,也可以自己设置。
·默认值为1,表示滚动。我们设为O则表示不滚动。当数据特别多的时候,.我们也可以设置成为1,然后在Maximum size of log file in MB设置当数据文件最大到多少时会自动滚劫。
·一共有6个级别。我们可以根据自己的需要来设置级别。其中0表示输出最少的信息,5表示输出最详细的信息,默认值为3,设置为3的话就表示,0、1、2、3四个级别都显示。考虑到生产系统中的压力时,这里的信息,如果没有必要的话,越简单越好,只要在出错的时候,我们可以依据其进行排错即可。
DBHost=20.0.0.10 数据库对外的主机
DBName=zabbix 数据库名称
DBUser=zbxuser 数据库用户
DBPassword=zabbix 数据库密码
DBPort=3306 数据库启动端口
[root@zabibx zabbix]# cat zabbix_server.conf | grep -v '#' | grep -v '^$'
补充:
1、使用grep -i “^辞排吉#”“zabbix_server.conf 来查看配置文件中有哪些大段
2、使用grep -i “^#拼#” zabbix_server.conf来查看配置文件中每一段中的配置项有哪些
[root@zabibx zabbix]# systemctl start zabbix-server.service
[root@zabibx zabbix]# systemctl status zabbix-server.service
[root@zabibx zabbix]# ss -nutl | grep 10051
tcp LISTEN 0 128 *:10051 *:*
tcp LISTEN 0 128 :::10051 :::*
/etc/httpd/conf.d/zabbix.conf 此文件就是做映射的文件
[root@zabibx zabbix]# rpm -ql zabbix-web | less
[root@zabibx zabbix]# vim /etc/httpd/conf.d/zabbix.conf
Alias /zabbix /usr/share/zabbix # 访问的时候要在主机后加上/zabbix来访问服务
php_value max_execution_time 300 最大脚本执行时长
php_value memory_limit 128M 内存大小
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga 设置时区
php_value date.timezone Asia/Shanghai 此行添加上海时区
注意:时区是一定要设置的,这里被注释掉是因为在php中的配置文件中设置时区,如果在php配置文件中设置时区,则对所有的php服务均有效,如果在zabbix,conf中设置时区,则仅对zabbix服务有效,所以,在php配置文件中设置时区。
[root@zabibx zabbix]# vim /etc/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezOne=
date.timezOne= Asia/Shanghai
重启服务并查看端口状态
[root@zabibx zabbix]# systemctl enable httpd
[root@zabibx zabbix]# systemctl restart httpd
[root@zabibx zabbix]# ss -tun | grep 80
tcp ESTAB 0 0 20.0.0.10:56280 20.0.0.10:3306
tcp ESTAB 0 0 ::ffff:20.0.0.10:3306 ::ffff:20.0.0.10:56280
[root@zabibx zabbix]# netstat -tunlp | grep 80
tcp6 0 0 :::80 :::* LISTEN 59718/httpd
检查依赖关系都是对的,OK状态点下一步
配置数据库文件
小建议:可以先把包都提前下好,用的时候直接拿来用
[root@fw ~]# wget https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
[root@fw ~]# rpm -ivh zabbix-release-4.4-1.el7.noarch.rpm
[root@fw ~]# wget https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
[root@fw ~]# yum -y install epel-release.norach
[root@fw ~]# yum -y install zabbix-agent zabbix-sender
[root@fw ~]# rpm -q zabbix-agent
zabbix-agent-4.4.10-1.el7.x86_64
[root@fw ~]# rpm -q zabbix-sender
zabbix-sender-4.4.10-1.el7.x86_64
1,确认配置文件
[root@fw ~]# rpm -ql zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/usr/lib/systemd/system/zabbix-agent.service
/usr/lib/tmpfiles.d/zabbix-agent.conf
/usr/sbin/zabbix_agentd
/usr/share/doc/zabbix-agent-4.4.10
/usr/share/doc/zabbix-agent-4.4.10/AUTHORS
/usr/share/doc/zabbix-agent-4.4.10/COPYING
/usr/share/doc/zabbix-agent-4.4.10/ChangeLog
/usr/share/doc/zabbix-agent-4.4.10/NEWS
/usr/share/doc/zabbix-agent-4.4.10/README
/usr/share/doc/zabbix-agent-4.4.10/userparameter_mysql.conf
/usr/share/man/man8/zabbix_agentd.8.gz
/var/log/zabbix
/var/run/zabbix
2,编辑配置文件
[root@zabibx ~]# cd /etc/zabbix/
[root@zabibx zabbix]# ls
web zabbix_agentd.d zabbix_server.conf.bak
zabbix_agentd.conf zabbix_server.conf
[root@zabibx zabbix]# cp zabbix_agentd.conf{,.bak}
[root@zabibx zabbix]# ls
web zabbix_agentd.conf.bak zabbix_server.conf
zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf.bak
[root@zabibx zabbix]# vim zabbix_agentd.conf
Server=20.0.0.10 # 指明服务器是谁的
ListenPort=10050 # 自己监听的端口
ListenIP=0.0.0.0 # 自己的监听的地址,0.0.0.0表示本机所有地址
StartAgents=3 # 优化时使用的
ServerActive=20.0.0.10 #主动监控时的服务器
Hostname=zabbix # 自己能被server端识别的名称
启动服务查看状态
[root@zabibx zabbix]# systemctl status zabbix-agent
[root@zabibx zabbix]# ss -ntul | grep 10050
tcp LISTEN 0 128 *:10050 *:*
已经开启成功就可以去server端添加主机了,其他主机进行同样的操作,唯一不同的是配置文件中的Hostanme要设为对应主机名
2,创建主机及主机群组
注意:这一步如果没有变成绿色,可先行配置下面添加应用集等等
添加应用集
添加监控项
关于key值,可以直接在网页上设置(服务器自动执行),也可以使用命令行(手动执行了)来获取:
[root@zabibx ~]# zabbix_get -s 20.0.0.10 -p 10050 -k "system.cpu.intr"
10828903
在agent端,也可以使用命令来查看intr的变化速率
继续配置监控项
如要修改,双击
点检测,点击仪表盘