设为首页 收藏本站
查看: 14739|回复: 1

[经验分享] zabbix搭建与基本配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-23 09:55:00 | 显示全部楼层 |阅读模式
  • 什么是zabbix?

zabbix由AlexeiVladishev首先开发,目前在维护的是Zabbix SIA。ZABBIX是一个企业级的开源分布式监控解决方案。
zabbix为监控网络和服务器的健康和完整提供了很多参数。使用一个灵活的通知机制,允许用户配置基于email的报警,几乎支持所有的事件。这可以快速的反应服务器的问题。zabbix基于存储的数据提供了极好的报告和数据可视化特性。这使得zabbix容量很好的规划。
zabbix支持轮循和捕获。所有zabbix的报告和数据以及配置参数,都是基于一个web前端界面。一个基于web的界面可以确保网络的状态和服务器的健康状态可以从任何地址获知。  适当的配置,zabbix在监控ip基础设施起到一个很重要的角色。
世界各地的组织使用zabbix作为主要的监控平台。

  • 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。

  • Zabbix的几个定义组件


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的安装


有三种方法获取zabbix:
(1): 从软件包中安装;
https://www.zabbix.com/documenta ... stribution_packages
(2): 下载最新的源代码并自行编译;
https://www.zabbix.com/documenta ... ll#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包的形式安装,实际中根据自己需要决定)

  • 安装zabbix:

1
2
3
4
5
6
[iyunv@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的版本

  • 设置数据库:


1
2
3
4
5
6
7
8
[iyunv@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
[iyunv@node1 ~]# cd/usr/share/doc/zabbix-server-mysql-2.4.6/create/
[iyunv@node1 create]# ls    #需要把这三个脚本导入zabbix数据库
data.sql images.sql  schema.sql




注意:必须按顺序导入schema.sql à images.sql à data.sql

1
2
3
[iyunv@node1 create]# mysql -uroot -p zabbix< schema.sql
[iyunv@node1 create]# mysql -uroot -p zabbix< images.sql
[iyunv@node1 create]# mysql -uroot -p zabbix< data.sql




依次导入即可

为了以防万一可以进入数据库检查一下是否导入:

[iyunv@node1 create]# mysql -uzabbix –p
                              QQ截图20170421093730.jpg



















看到下边列出的表说明导入正确

顺便测试一下授权账户zabbix是否可以登录mysql
QQ截图20170421093740.jpg
登陆成功后查看:
MariaDB [(none)]> use zabbix
MariaDB [zabbix]> show tables;
QQ截图20170421093748.jpg
没有问题,数据库初始化完成

  • 修改zabbix配置文件
  • Zabbix server

1
2
3
[iyunv@node1 ~]# cd /etc/zabbix/
[iyunv@node1 zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d  zabbix_server.conf




配置文件为zabbix_server.conf,至少应该为其配置数据库等相关的信息;
例如:

1
2
3
4
5
6
7
8
9
10
11
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#外边警告脚本




保存退出
启动服务即可:

1
  [iyunv@node1 ~]# systemctl startzabbix-server.service




  • 配置php环境
    [iyunv@node1 ~]# vim /etc/httpd/conf.d/zabbix.conf#添加如下项:
    php_value date.timezone Asia/Shanghai
    [iyunv@node1 ~]# systemctl start httpd.service #启动服务
  • 配置zabbix_agent
    [iyunv@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
    至少应该为其指定server的IP地址,这里因为是和server同一天主机,所以直接指向127.0.0.1,实际情况自行定义


  • Web安装

    第一步:

访问zabbix web:
http://your_host/zabbix会看到安装向导的第一个界面:

QQ截图20170421093757.jpg


         第二步:
确保所有依赖.软件已经搞定(失败以橙色显示并有个告警状态。如果改变了apache的用户和组,权限必须要有,否则安装无法继续。)

QQ截图20170421093803.jpg

         第三步:
输入连接数据库的信息。zabbix数据库要先被创建

QQ截图20170421093809.jpg


         第四步:
                   输入zabbix的详情,这一步直接跳过即可。
QQ截图20170421093814.jpg



第五步:
                   重新确定一下信息                   QQ截图20170421093822.jpg


         第六步:
                   完成安装
QQ截图20170421093828.jpg
点击Finish完成

         第七步:
                   zabbix前端已经设置好了,默认用户名是Admin,密码是zabbix。

QQ截图20170421093833.jpg
注意:
         用户名Admin首字母必须大写,小写提示密码错误

单击登陆即进入配置界面:

QQ截图20170421093840.jpg

到此安装完毕。

  • Zabbix简单配置
  • 添加用户

进入管理à用户à下拉选择用户:
QQ截图20170421093846.jpg

默认zabbix只定义了两个用户:
         Admin:超级用户,拥有所有权限
         Guest:特殊权限,如果没有登陆即为Guest权限,没有操作zabbix的权限

要添加用户,点击Create user:在添加用户的表单,请确保你添加的用户在一个组里面,例如’Networker’

QQ截图20170421093852.jpg

默认的用户,没有Media定义。想要创建一个Media,去Media然后点击Add:

QQ截图20170421093859.jpg

输入用户的电子邮件,你可以指定一个时间段,在什么时间段媒体会被激活,默认全部时段都是激活的。你可以自定义trigger严重的等级,默认所有等级都是激活的。
这样就添加成功

  • 新建hosts
    host是监控的一个网络实体,定义可以是物理机,交换机,虚拟机,应用。


添加另一台服务器当被监控端: 192.168.0.52

首先安装zabbix包,客户端只需要安装以下包即可:

1
2
3
[iyunv@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
[iyunv@node2 ~]# yum -y install *.rpm  #直接安装即可





完成后修改配置文件,和上边配置一样:
1
2
3
4
5
[iyunv@node2 ~]# vim/etc/zabbix/zabbix_agentd.conf #修改以下几项:

Server=192.168.0.51(监控端IP)
ServerActive=192.168.0.51(监控端IP)
Hostname=node2(本机的主机名)





修改完成后启动服务:
1
2
[iyunv@node2 ~]# systemctl startzabbix-agent.service
[iyunv@node2 ~]# systemctl statuszabbix-agent.service





接着我们就可以在监控主机上添加主机了:

Configuration à Host à Create hosts à host

QQ截图20170421093908.jpg
Hostname: 可以是主机名,但一般建议填IP地址,这里为被监控端IP
Visible Name:容易识别的,可以填主机名
New Group: 添加一个新组,这里为test server
Agent interfaces: 这里可以选择IP地址或者DNS,这里我们选择agent(被监控端)的IP地址

接着添加模板:

点击: Templates à select à Template OS Linux à Add à Update 即可
QQ截图20170421093915.jpg

添加模板成功后查看:
         Monitoringà Overview(当前概括)
QQ截图20170421093922.jpg
可以看到主机node2.com的各个状态都显示为绿色并且闪动,说明运行正常

接着切换到tigger触发器:

QQ截图20170421093930.jpg
可以看到node2触发器当前的状态都为OK

切入Events(事件):
QQ截图20170421093938.jpg
可以看到有两个事件发生,开始由于node2主机防火墙没有通过10050端口导致主机不可达,放行端口即可,这里测试直接关闭防火墙即可


切入Graphs(图表)


QQ截图20170421093945.jpg

图表很直观的看到监控node2.com主机的数据信息

  • 添加item(监控项)

这里不用模板,自定义添加监控项目。
item是收集数据的基础

添加前我们先把node2.com里刚才添加的模板取消
QQ截图20170421093951.jpg

接着点击node2.com主机à item à create item
即可看到表单:
QQ截图20170421093958.jpg
点击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

QQ截图20170421094011.jpg
最后点击Add添加

QQ截图20170421094018.jpg


然后就可以看到图形了。。可以看到zabbix图表很难看。。
可以继续添加多条检测到一个图表里,同样步骤:

QQ截图20170421094024.jpg
检测需要一会儿时间
QQ截图20170421094030.jpg
可以看到一个图表两组数据

  • Tigger

要对到来的数据进行计算我们需要定义一个trigger。一个trigger包含一个表达式,表达式定义了一个阀值,表示数据在什么水平能被我们接受。如果到来的数据超过了这个阀值,就会”fired”或者变成”problem”的状态。让我们知道有些事情需要我们去关注。如果那个数据还是可接受的话,trigger还是会保持’ok’的状态。

Configuration à Hosts ànode2.com à tigger àCreate tigger


注意:
         以下内容新添加。。与上边内容不连接:

QQ截图20170421094038.jpg

对于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的字在那闪烁。

QQ截图20170421094044.jpg
如果闪烁的是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。
QQ截图20170421094050.jpg

e-mail的设置表单会呈现在我们面前:
QQ截图20170421094056.jpg

设置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.
QQ截图20170421094102.jpg
在这个表单,输入action的名称。
{TRIGGER.STATUS}和{TRIGGER.NAME}是宏定义,这个会被替换成trigger的状态和trigger的名字。

如果我们在conditions中没有添加任何的条件,action仅仅会被运行当trigger的状态从ok转向problem。

我们还需要定义action需要做什么。这个定义在Operations的窗格。点击New,我们可以打开一个新的operation表单。
QQ截图20170421094109.jpg
在这里,点击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的表单。
QQ截图20170421094117.jpg

必须要输入的参数有:
Template name:template的名字
Groups:选择一个或多个组,然后点击移动 'Ingroups'.一个template至少要属于一个组。
设置好了,点击add,一个template就会被创建在template的列表里了。
QQ截图20170421094123.jpg
正如你看到的,模板已经创建,但没有任何东西。

在template中添加一个items:要在template添加一个item,去item的列表。在Configuration → Hosts点击主机。然后:
1: 标记'CPU Load' 的item。
2: 在下拉那边选择Copy selectedto… 然后点击 Go
3: 选择template to copyitem to
QQ截图20170421094129.jpg
点击copy。如果现在你去Configuration → Templates,template会有一个新的item在那了。我们在这就创建一个item,但是你可以类似的再添加其它item,trigger和其它entities到template里面,可以根据你的目的创建(监控操作系统,监控应用程序等等)

template链接到host
当一个template准备好的话,就可以链接到host了。点击Configuration → Hosts, 然后点击主机,然后选择 Templates窗格。点击select选择一个template。然后点击Add,最后点击update。就可以看到tempate里面的entities就会出现在host了。
QQ截图20170421094134.jpg

正如你猜的,它能不能被应用到其它的主机。所有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

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-142466-1-1.html 上篇帖子: zabbix_3.0安装部署与中文支持 下篇帖子: zabbix添加自定义item、触发器、图形,并执行远端命令

尚未签到

发表于 2017-12-9 19:17:23 | 显示全部楼层
好东东,值的学习

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表