zabbix 由AlexeiVladishev 首先开发,目前在维护的是Zabbix SIA 。ZABBIX 是一个企业级的开源分布式监控解决方案。
zabbix 为监控网络和服务器的健康和完整提供了很多参数。使用一个灵活的通知机制,允许用户配置基于email 的报警,几乎支持所有的事件。这可以快速的反应服务器的问题。zabbix 基于存储的数据提供了极好的报告和数据可视化特性。这使得zabbix 容量很好的规划。
zabbix 支持轮循和捕获。所有zabbix 的报告和数据以及配置参数,都是基于一个web 前端界面。一个基于web 的界面可以确保网络的状态和服务器的健康状态可以从任何地址获知。 适当的配置,zabbix 在监控ip 基础设施起到一个很重要的角色。
世界各地的组织使用zabbix 作为主要的监控平台。
zabbix 由几个主要的软件组件构成
server: zabbix server 是一个核心组件,agent 可以向它报告可用性和完整性信息和统计数据。该server 所有的配置,数据和业务数据都存在数据库中。
数据库存储: 所有的配置信息包括采集的数据都被zabbix 存储在数据库中。
Web 界面: 通过一个基于web 的平台,我们可以从任何一个地方访问zabbix 。这个web 是zabbix server 的一部分,通常跟server 运行在同一台物理机上。(SQLite 必须得配置在同一台物理机上)
Proxy: proxy 可以代替server 收集性能和可用性的数据。proxy 是一个可选的部分,但它对于减弱zabbix server 的负载非常有用。
agent: zabbix agent 被部署在监控的目标上,主机监控本地的资源和应用并汇报数据给zabbix server 。
host: 你要监控的网络设备,使用ip/ 域名.
host group: 主机的逻辑分组,可能包含主机和模板。主机组内的主机和模板是不以任何方式彼此连接。为不同的用户分配权限时,使用主机组。
item: 你想从监控主机获取到的某些数据
trigger: 定义一个阀值来看看从item 中接收的数据是否有问题,使用逻辑表达式。当接收一个超过比阀值的,trigger 从ok 变成problem 。当接收的数据低于阀值,trigger 变成ok 状态。
event: 一些值得关注的例如trigger 状态变化或者发现机制,agent 自动注册发生了。
action: 基于事件一个预定义的装置. 一个action 包含条件和操作( 发送一个邮件) 。
escalation: 在action 的操作中自定义,发送通知/ 远程执行命令
media: 发送通知的一种手段。
notification: 一个事件经由选择的媒体发送给用户.
remote command: 当一些条件触发时,预定义的远程命令执行.
template: 准备被应用到一台或多台主机的实体(items, triggers, graphs, screens,applications, low-level discovery rules, web scenarios) ,模板加快了监控的部署。大规模的更改应用到监测任务。模板直接关联到主机。
application: item 的逻辑分组
web scenario: 一个或多个HTTP 请求来检查网站的可用性
frontend: zabbix 提供的web 界面
zabbix api: Zabbix API 允许你使用json rpc 协议来创建,更新和获取zabbix 对象(likehosts, items, graphs and others) 或执行其它自定义任务.
zabbix server: zabbix 软件的中心,用来执行监控,跟proxy 和agent 交互,计算trigger ,发送通知,中央数据存储。
zabbix agent: 一个进程部署在监控主机上,主动监控本地资源和应用。
zabbix proxy: 代替zabbix server 采集数据,代替server 承受些压力。
有三种方法获取zabbix:
(1): 从软件包中安装;
https://www.zabbix.com/documentation/2.4/manual/installation/install#from_distribution_packages
(2): 下载最新的源代码并自行编译;
https://www.zabbix.com/documentation/2.4/manual/installation/install#from_the_sources
(3): 下载虚拟容器: ( 下载最新源代码或虚拟容器,请到http://www.zabbix.com/download.php 。如果下载旧版本,参考下面的稳定版本下载。)
https://www.zabbix.com/documentation/2.4/manual/appliance
注意:
安装zabbix需要提前准备LAMP环境,这里使用yum安装
主机间需要时间同步,如NTP服务器
具体步骤: ( 这里为了方便安装以yum 和rpm 包的形式安装,实际中根据自己需要决定)
[root@node1 ~]# ls
anaconda-ks.cfg zabbix-sender-2.4.6-1.el7.x86_64.rpm
trousers-0.3.11.2-4.el7_1.x86_64.rpm zabbix-server-2.4.6-1.el7.x86_64.rpm
zabbix-2.4.6-1.el7.x86_64.rpm zabbix-server-mysql-2.4.6-1.el7.x86_64.rpm
zabbix-agent-2.4.6-1.el7.x86_64.rpm zabbix-web-2.4.6-1.el7.noarch.rpm
zabbix-get-2.4.6-1.el7.x86_64.rpm zabbix-web-mysql-2.4.6-1.el7.noarch.rpm
注意:这里演示以Centos7 为主,默认的trousers 包为2-3 版本与zabbix 不兼容,所以需要升级为2-4 的版本
[root@node1 ~]# mysql -uroot –p #进入数据库
MariaDB [(none)]> create database zabbixcharacter set utf8 collate utf8_bin;#创建库
MariaDB [(none)]> grant all privilegeszabbix.* to zabbix@localhost identified by 'zabbix';
#授权用户为zabbix,密码为zabbix,实际中自行定义
MariaDB [(none)]> quit
[root@node1 ~]# cd/usr/share/doc/zabbix-server-mysql-2.4.6/create/
[root@node1 create]# ls #需要把这三个脚本导入zabbix数据库
data.sql images.sql schema.sql
注意:必须按顺序导入schema.sql à images.sql à data.sql
[root@node1 create]# mysql -uroot -p zabbix< schema.sql
[root@node1 create]# mysql -uroot -p zabbix< images.sql
[root@node1 create]# mysql -uroot -p zabbix< data.sql
依次导入即可
为了以防万一可以进入数据库检查一下是否导入:
[root@node1 create]# mysql -uzabbix –p
看到下边列出的表说明导入正确
顺便测试一下授权账户zabbix 是否可以登录mysql
登陆成功后查看:
MariaDB [(none)]> use zabbix
MariaDB [zabbix]> show tables;
没有问题,数据库初始化完成
修改zabbix配置文件
Zabbix server
[root@node1 ~]# cd /etc/zabbix/
[root@node1 zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
配置文件为zabbix_server.conf ,至少应该为其配置数据库等相关的信息;
例如:
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=192.168.0.51 #数据库地址
DBName=zabbix #数据库名
DBUser=zabbix #mysql授权用户
DBPassword=zabbix #mysql授权用户的密码
DBSocket=/var/lib/mysql/mysql.sock
SNMPTrapperFile=/var/log/snmptt/snmptt.log
AlertScriptsPath=/usr/lib/zabbix/alertscripts#警报脚本
ExternalScripts=/usr/lib/zabbix/externalscripts#外边警告脚本
保存退出
启动服务即可:
[root@node1 ~]# systemctl startzabbix-server.service
配置php环境
[root@node1 ~]# vim /etc/httpd/conf.d/zabbix.conf#添加如下项:
php_value date.timezone Asia/Shanghai
[root@node1 ~]# systemctl start httpd.service #启动服务
配置zabbix_agent
[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
至少应该为其指定server的IP地址,这里因为是和server同一天主机,所以直接指向127.0.0.1,实际情况自行定义
访问zabbix web :
http://your_host/zabbix 会看到安装向导的第一个界面:
第二步:
确保所有依赖. 软件已经搞定( 失败以橙色显示并有个告警状态。如果改变了apache 的用户和组,权限必须要有,否则安装无法继续。)
第三步:
输入连接数据库的信息。zabbix 数据库要先被创建
第四步:
输入zabbix 的详情,这一步直接跳过即可。
第五步:
重新确定一下信息
第六步:
完成安装
点击Finish 完成
第七步:
zabbix 前端已经设置好了,默认用户名是Admin ,密码是zabbix 。
注意:
用户名Admin 首字母必须大写,小写提示密码错误
单击登陆即进入配置界面:
到此安装完毕。
进入管理à 用户à 下拉选择用户:
默认zabbix 只定义了两个用户:
Admin: 超级用户,拥有所有权限
Guest :特殊权限,如果没有登陆即为Guest 权限,没有操作zabbix 的权限
要添加用户,点击Create user: 在添加用户的表单,请确保你添加的用户在一个组里面,例如’Networker’
默认的用户,没有Media 定义。想要创建一个Media ,去Media 然后点击Add:
输入用户的电子邮件,你可以指定一个时间段,在什么时间段媒体会被激活,默认全部时段都是激活的。你可以自定义trigger 严重的等级,默认所有等级都是激活的。
这样就添加成功
新建hosts
host是监控的一个网络实体,定义可以是物理机,交换机,虚拟机,应用。
添加另一台服务器当被监控端: 192.168.0.52
首先安装zabbix 包,客户端只需要安装以下包即可:
[root@node2 ~]# ls
zabbix-2.4.6-1.el7.x86_64.rpm zabbix-agent-2.4.6-1.el7.x86_64.rpm zabbix-sender-2.4.6-1.el7.x86_64.rpm
[root@node2 ~]# yum -y install *.rpm #直接安装即可
完成后修改配置文件,和上边配置一样:
[root@node2 ~]# vim/etc/zabbix/zabbix_agentd.conf #修改以下几项:
Server=192.168.0.51(监控端IP)
ServerActive=192.168.0.51(监控端IP)
Hostname=node2(本机的主机名)
修改完成后启动服务:
[root@node2 ~]# systemctl startzabbix-agent.service
[root@node2 ~]# systemctl statuszabbix-agent.service
接着我们就可以在监控主机上添加主机了:
Configuration à Host à Create hosts à host
Hostname: 可以是主机名,但一般建议填IP 地址, 这里为被监控端IP
Visible Name :容易识别的,可以填主机名
New Group: 添加一个新组,这里为test server
Agent interfaces: 这里可以选择IP 地址或者DNS ,这里我们选择agent( 被监控端) 的IP 地址
接着添加模板:
点击: Templates à select à Template OS Linux à Add à Update 即可
添加模板成功后查看:
Monitoring à Overview( 当前概括)
可以看到主机node2.com 的各个状态都显示为绿色并且闪动,说明运行正常
接着切换到tigger 触发器:
可以看到node2 触发器当前的状态都为OK
切入Events( 事件) :
可以看到有两个事件发生,开始由于node2 主机防火墙没有通过10050 端口导致主机不可达,放行端口即可,这里测试直接关闭防火墙即可
切入Graphs( 图表)
图表很直观的看到监控node2.com 主机的数据信息
这里不用模板,自定义添加监控项目。
item 是收集数据的基础
添加前我们先把node2.com 里刚才添加的模板取消
接着点击node2.com 主机à item à create item
即可看到表单:
点击Add 添加即可
对于我们创建的item ,必须要输入的信息有:
Name: 输入cpu interrupts(cpu 中断数) 作为值。这个会作为item 的值显示在列表和其它的地方。
Key: 键入 system.cpu.intr 作为值。这是一个特殊的名字,用来标识什么样的信息会被收集。system.cpu.intr 是zabbix agent 预定义的key 之一。
Type of information: 在这儿选择Numeric(float). 这个属性定义想要接收到的值。如果需要减少items 收集数据的保存日期,例如30 。这对于减少数据库的压力是有效果的, 当然,根据自己的实际需要自行而定
接着添加Graph:
进入node2.com 主机à Graph à Create Graph
最后点击Add 添加
然后就可以看到图形了。。可以看到zabbix 图表很难看。。
可以继续添加多条检测到一个图表里,同样步骤:
检测需要一会儿时间
可以看到一个图表两组数据
要对到来的数据进行计算我们需要定义一个trigger 。一个trigger 包含一个表达式,表达式定义了一个阀值,表示数据在什么水平能被我们接受。如果到来的数据超过了这个阀值,就会”fired” 或者变成”problem” 的状态。让我们知道有些事情需要我们去关注。如果那个数据还是可接受的话,trigger 还是会保持’ok’ 的状态。
Configuration à Hosts à node2.com à tigger à Create tigger
注意:
以下内容新添加。。与上边内容不连接:
对于trigger ,必须要输入的信息有:
Name: 键入 CPU load too highon 'New host' for 3 minutes 作为值. 它会在trigger 的name 中显示,也会显示在其它地方。
Expression :键入: {Newhost:system.cpu.load.avg(180)}>2 。它是trigger 的表达式。确保输入正确。system.cpu.load 是引用外部的item 。这个表示式告诉我们当cpu 负载3 分钟的值大于了2 ,已经有问题了。
当配置完成后,点击Add 。新的trigger 就会出现在trigger list 了。
显示trigger 的状态: 当你定义了一个触发器,你可能对它的状态感兴趣。对此,你可以去Monitoring → Triggers. 大约3 分钟,你的trigger 会在那里,可能会有个ok 的字在那闪烁。
如果闪烁的是problem 的话,你定义的trigger 告诉你cpu 负载已经超出阀值了。
4.5: 收到问题的通知邮件
在这个部分你将学习到如何在zabbix 的notifications 中设置alerting 。当items 收集到的数据变成”fire” 的状态的时候,有些alerting 的机制来通知我们是非常有用的,当我们不在访问zabbix 的网页的时候。
alerting 就是notifications 来做的. E-mail 是最流行的问题通知方式,我们将学习如何设置email notification 。默认有几种预定义的发送通知的方法,E-mail 是其中的一种。
要配置e-mail ,去Administration → Media types 然后点击预定义的media type :Email 。
e-mail 的设置表单会呈现在我们面前:
设置SMTP server, SMTP helo 和SMTP e-mail ,根据自己的环境设置。'SMTP email' 将会作为发件人在zabbix 的通知设置这边。设置完成后按update( 这个在我的环境测试是不能通过的) ,底下会提供一个脚本。
(脚本需要设置密码,然后放在脚本的位置/usr/lib/zabbix/alertscripts/ 。最后media type 那边选择script ,也就是我们要自定义脚本)
现在你已经配置一个email 作为工作的media type. 一个media type 要定链接到定义的user ,否则将不会被使用。
新建action:
发送通知是zabbix 的action 之一。去Configuration → Actions 然后点击Create action.
在这个表单,输入action 的名称。
{TRIGGER.STATUS} 和{TRIGGER.NAME} 是宏定义,这个会被替换成trigger 的状态和trigger 的名字。
如果我们在conditions 中没有添加任何的条件,action 仅仅会被运行当trigger 的状态从ok 转向problem 。
我们还需要定义action 需要做什么。这个定义在Operations 的窗格。点击New ,我们可以打开一个新的operation 表单。
在这里,点击send to users 里面的add 然后选择一个我们定义的user 。然后在send only to 那边选择email 。当选择完成后,点击Add 。
一个简单的action 配置完成了,然后在action 的表格中点击add 。
接收通知:现在,我们得来测试下看看能不能接收到邮件通知了。要做到这个,我们可能得故意增加host 的负载,这样子trigger 才能变为fires ,然后我们才能接收到通知。打开你的主机然后运行:cat /dev/urandom | md5sum 。
现在,你可以去Monitoring → Latest data 然后看到 'CPU Load' 已经增加了。记住,当trigger 变为fire 的时候,cpu load 的值在最近的3 分钟已经超过2 了:
1: 在Monitoring → Triggers 你应该能看到闪烁的problem 状态。
2: 你应该能接收到一封通知邮件。
错误排查:
1: 再次验证下e-mail 和action 的设置保证配置对了。
2: 确保你已经建立了用户然后有read 的权限,注意adduser 时候的步骤。用户所属的用户组至少要有read 主机组“linux server” 的权限。
3: 另外,你可以检查action 的log 在Administration → Audit, 然后选择action ,在右上角查看。
4.6: 新建template
在这个部分你将学习如何设置一个template 。我们已经学习如何设置一个item ,trigger 和如何收到一个通知。虽然这些步骤已经提供一个很大的灵活性,但可能还需要一些东东,假如说有上千台主机。一些自动化操作会好点。这就需要template 来帮忙了。template 允许item,trigger 等其它entitis 能够被重复使用到host ,仅仅需要一个步骤。当host 链接到template 的时候,会继承template 的所有entities 。所以,一系列的检查在这个host 上很快就有了。
要开始使用template 工作,我必须要创建一个template 。去Configuration → Templates 然后点击Create template. 会呈现给我们一个配置template 的表单。
必须要输入的参数有:
Template name :template 的名字
Groups :选择一个或多个组,然后点击 移动 'Ingroups'. 一个template 至少要属于一个组。
设置好了,点击add ,一个template 就会被创建在template 的列表里了。
正如你看到的,模板已经创建,但没有任何东西。
在template 中添加一个items :要在template 添加一个item ,去item 的列表。在Configuration → Hosts 点击主机。然后:
1: 标记'CPU Load' 的item 。
2: 在下拉那边选择Copy selectedto… 然后点击 Go
3: 选择template to copyitem to
点击copy 。如果现在你去Configuration → Templates ,template 会有一个新的item 在那了。我们在这就创建一个item ,但是你可以类似的再添加其它item ,trigger 和其它entities 到template 里面,可以根据你的目的创建( 监控操作系统,监控应用程序等等)
template 链接到host
当一个template 准备好的话,就可以链接到host 了。点击Configuration → Hosts, 然后点击主机,然后选择 Templates 窗格。点击select 选择一个template 。然后点击Add ,最后点击update 。就可以看到tempate 里面的entities 就会出现在host 了。
正如你猜的,它能不能被应用到其它的主机。所有template 的改变例如items ,都会被应用到链接的host 。
链接一些预定义的template 到host: 正如你注意到的,zabbix 已经设置了一些预定义的template 用来监控不同的os ,设备和应用。要快速监控您的主机,你可以需要链接这些template 到host ,但注意可能要进行微调。一些check 可能不需要,check 的频率可能不需要那么频繁。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com