首页 > 代码库 > 第1章1zabbix快速入门

第1章1zabbix快速入门

<style>p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 5.0pt; line-height: 150%; font-size: 10.5pt; font-family: Consolas } h1 { margin-top: 17.0pt; margin-right: 0cm; margin-bottom: 16.5pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 240%; page-break-after: avoid; font-size: 20.0pt; font-family: Consolas } h2 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 172%; page-break-after: avoid; font-size: 18.0pt; font-family: Consolas } h3 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 150%; page-break-after: avoid; font-size: 16.0pt; font-family: Consolas } h4 { margin-top: 14.0pt; margin-right: 0cm; margin-bottom: 14.5pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 157%; page-break-after: avoid; font-size: 14.0pt; font-family: Consolas } h5 { margin-top: 14.0pt; margin-right: 0cm; margin-bottom: 14.5pt; margin-left: 0cm; text-align: justify; text-indent: 5.0pt; line-height: 156%; page-break-after: avoid; font-size: 14.0pt; font-family: Consolas } h6 { margin-top: 12.0pt; margin-right: 0cm; margin-bottom: 3.2pt; margin-left: 0cm; text-align: justify; text-indent: 5.0pt; line-height: 133%; page-break-after: avoid; font-size: 12.0pt; font-family: "Calibri Light", "sans-serif" } p.MsoHeader,li.MsoHeader,div.MsoHeader { margin: 0cm; margin-bottom: .0001pt; text-align: center; text-indent: 5.0pt; line-height: 150%; border: none; padding: 0cm; font-size: 9.0pt; font-family: Consolas } p.MsoFooter,li.MsoFooter,div.MsoFooter { margin: 0cm; margin-bottom: .0001pt; text-indent: 5.0pt; line-height: 150%; font-size: 9.0pt; font-family: Consolas } p.MsoCaption,li.MsoCaption,div.MsoCaption { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 10.0pt; line-height: 150%; font-size: 10.0pt; font-family: "Calibri Light", "sans-serif" } a:link,span.MsoHyperlink { color: #EE7B08; text-decoration: underline } a:visited,span.MsoHyperlinkFollowed { color: #977B2D; text-decoration: underline } p.MsoDocumentMap,li.MsoDocumentMap,div.MsoDocumentMap { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 5.0pt; line-height: 150%; font-size: 12.0pt; font-family: "Heiti SC Light" } pre { margin: 0cm; margin-bottom: .0001pt; font-size: 10.0pt; font-family: "Courier New" } p.MsoAcetate,li.MsoAcetate,div.MsoAcetate { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 5.0pt; font-size: 9.0pt; font-family: Consolas } span.MsoPlaceholderText { color: gray } p.MsoNoSpacing,li.MsoNoSpacing,div.MsoNoSpacing { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 5.0pt; font-size: 10.5pt; font-family: Consolas } p.MsoListParagraph,li.MsoListParagraph,div.MsoListParagraph { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 21.0pt; line-height: 150%; font-size: 10.5pt; font-family: Consolas } span.MsoIntenseReference { font-variant: small-caps; color: #99CB38; letter-spacing: .25pt; font-weight: bold } span.MsoBookTitle { letter-spacing: .25pt; font-weight: bold; font-style: italic } span.1Char { font-family: Consolas; font-weight: bold } span.2Char { font-family: Consolas; font-weight: bold } span.3Char { font-family: Consolas; font-weight: bold } span.4Char { font-family: Consolas; font-weight: bold } span.5Char { font-family: Consolas; font-weight: bold } span.6Char { font-family: "Calibri Light", "sans-serif"; font-weight: bold } span.Char { font-family: Consolas } span.Char0 { font-family: Consolas } span.Char1 { font-family: "Heiti SC Light" } p.a,li.a,div.a { margin-top: 0cm; margin-right: 5.0pt; margin-left: 5.0pt; margin-bottom: .0001pt; text-indent: 5.0pt; line-height: 12.0pt; background: #F2F2F2; font-size: 10.5pt; font-family: Consolas; color: #333333 } span.Char2 { font-family: Consolas; color: #333333; background: #F2F2F2 } span.Char3 { font-family: "Times New Roman", "serif" } p.a0,li.a0,div.a0 { margin: 0cm; margin-bottom: .0001pt; line-height: 150%; border: none; padding: 0cm; font-size: 10.5pt; font-family: "Times New Roman", "serif" } span.Char4 { font-family: "Courier New"; color: #333333; background: #F0F7FE } p.a1,li.a1,div.a1 { margin-top: 0cm; margin-right: 28.65pt; margin-left: 0cm; margin-bottom: .0001pt; text-indent: 18.4pt; line-height: 12.0pt; background: #F0F7FE; border: none; padding: 0cm; font-size: 10.5pt; font-family: "Courier New"; color: #333333 } span.HTMLChar { font-family: "Courier New" } p.01, li.01, div.01 { margin: 0cm; margin-bottom: .0001pt; text-align: justify; background: white; border: none; padding: 0cm; font-size: 10.5pt; font-family: "Calibri", "sans-serif"; color: black } p.1, li.1, div.1 { margin: 0cm; margin-bottom: .0001pt; font-size: 12.0pt; font-family: 黑体 } p.a2,li.a2,div.a2 { margin: 0cm; margin-bottom: .0001pt; line-height: 15.6pt; background: #D9D9D9; border: none; padding: 0cm; font-size: 12.0pt; font-family: 宋体 } span.1Char0 { font-family: 黑体 } span.Char5 { font-family: 宋体; background: #D9D9D9 } span.Char6 { font-family: Consolas } .MsoChpDefault { font-family: "Calibri", "sans-serif" } div.WordSection1 { } ol { margin-bottom: 0cm } ul { margin-bottom: 0cm }</style>

注意:本文不涉及性能测试、性能优化中的监控,所有文字的出发点都是日常运维监控。

在开始之前,我们还是先统一下认识:要监控一个对象,需要掌握哪些东西呢?

监控对象的理解要监控的对象你是否了解呢?比如CPU到底是如何工作的?

监控对象的指标:我们要监控这个东西的什么属性?比如CPUCPU使用率、负载、上下文切换。

确定报警基准线:怎么样才算是故障,要报警呢?比如CPU的负载到底多少算高?

如果上述的条件不满足,那就先不要开始实施监控了,因为等做完了,你会发现,然并卵?

1.1Zabbix安装前准备

主机名

IP地址

描述

版本

linux-node1.com

192.168.90.11

Zabbix-Server

CentOS7

linux-node2.com

192.168.90.12

Zabbix-Proxy

CentOS7

1.2Server服务端安装配置

1.2.1zabbix-Server安装

Zabbix3整个web界面做了一个全新的设计。

Zabbix存储配置包以及yum配置文件。

[root@linux-node1 ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

Zabbix程序包安装,以及MySQLZabbix-agent

[root@linux-node1 ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server

创建Zabbix数据库以及用户。对这样的说明,参考MySQL数据库创建脚本

[root@linux-node1 ~]# mysql -uroot -p

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix‘;

Query OK, 0 rows affected (0.00 sec)

导入初始模式和数据

[root@linux-node1 ~]# cd /usr/share/doc/zabbix-server-mysql-3.0.3/

[root@linux-node1 zabbix-server-mysql-3.0.3]# zcat create.sql.gz |mysql -uroot zabbix

编辑Zabbix_server.conf数据库配置

[root@linux-node1 ~]# grep  ^[a-Z]  /etc/zabbix/zabbix_server.conf

LogFile=/var/log/zabbix/zabbix_server.log

LogFileSize=0

PidFile=/var/run/zabbix/zabbix_server.pid

DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

SNMPTrapperFile=/var/log/snmptrap/snmptrap.log

Timeout=4

AlertScriptsPath=/usr/lib/zabbix/alertscripts

ExternalScripts=/usr/lib/zabbix/externalscripts

LogSlowQueries=3000

启动Zabbix服务进程

[root@linux-node1 ~]#  systemctl start zabbix-server

Apache的配置文件/etc/httpd/conf.d/zabbix.conf默认PHP已经配置好了。取消注释,设置正确的时区

[root@linux-node1 ~]# vim /etc/httpd/conf.d/zabbix.conf

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 always_populate_raw_post_data -1

php_value date.timezone Asia/Shanghai

通过改变配置文件重新启动Apache Web服务器

[root@linux-node1 ~]# systemctl start httpd

1.2.2配置Web界面

在你的浏览器,打开网址http://Zabbix_server_ip/zabbix

你应该看到的web安装向导的第一个屏幕,如图1-1

技术分享

1-1

确保所有软件先决条件。如图1-2

技术分享

1-2

输入连接到数据库详细信息。Zabbix数据库必须已经创建好。如图1-3

技术分享

1-3

连接Zabbix服务细节,如果没有改变可选择默认如图1-4

技术分享

1-4

回顾一个设置概要,如图1-5

技术分享

1-5

完成安装,会在/etc/zabbix/web/zabbix.conf.php生成配置文件。如图1-6

技术分享

1-6

Zabbix登陆准备。默认的用户名/密码为Admin/zabbix。如图1-7

 

技术分享

1-7

1.3Agent客户端安装配置

Zabbix可以用Agent/Server的架构,客户端的采集方式分为AgentSNMP等,通常情况都是使用Agent方式对服务器进行监控,后续再学习使用其他监控方式(SNMPJMXIPMI

1.3.1zabbix-Agent安装

安装zabbix-agent使用yum即可.agent版本可以低于Server版)

[root@linux-node2 ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

[root@linux-node2 ~]# yum install zabbix-agent -y

1.3.2zabbix-Agent配置

配置AgentServer间通过Zabbix私有协议通信,需要了解主动模式和被动模式:

Server被动模式:Server端主动向Agent采集数据。(1000台机器以内机器推荐使用)

ServerActive主动模式:Agent主动像Server端发送数据。(1000台以上机器推荐使用)

[root@linux-node2 ~]# sed -i ‘s#Server=127.0.0.1#Server=192.168.90.11#g‘ /etc/zabbix/zabbix_agentd.conf #修改被动模式监听地址为zabbix-serverIP地址

[root@linux-node2 ~]# egrep -v ‘^#|^$‘ /etc/zabbix/zabbix_agentd.conf #查看修改后信息

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

Server=192.168.90.11  #被动模式 zabbix-serverIPAgent可以有多个Ip 用于向多个Master发送数据)

ServerActive=127.0.0.1  #主动模式(Agent自动像Server发送数据)

Hostname=linux-node2.com

Include=/etc/zabbix/zabbix_agentd.d/

1.4zabbix配置文件

Zabbix的配置虽然不是很复杂,但有的配置参数很难用上,接下来就针对ZabbixServerZabbixAgent的配置文件,对其每个参数进行介绍,不求大家都深入了解,但是希望大家通过对本小结的学习知道每个参数是干什么用的。

1.4.1Zabbix_server.conf

Zabbix_Server很显然这个是server的配置文件,参数具体作用如下1-1表格列出

参数名称

是否必

认值

ListenPort

10050

TrapperItem监听的端口

SourceIP

在连接其他服务器时,使用的本机IP地址

LogType

file

syslog #日志

file #指定日志文件位置(指定位置方便管理)

console #输出至屏幕

LogFile

/var/log/zabbix/zabbix_server.log

LogType设置file,使用文件来记录zabbixserver日志位置

LogFileSize

1

0表示禁用日志自rotation,如果日志达到了限制,并且rotation,老日志文件将会被清空掉,重新生成一个新日志

DebugLevel

3

0 - 有关的zabbix过程的启动和停止的基本信息

1 - 信息

2 - 错误信息

3 - 警告

4 - 用于调试生大量的信息)

5 - 扩展调试(产生更多的信息

PidFile

/var/run/zabbix/zabbix_server.pid

记录Zabbix Server pid的文件位置

DBHost

localhost

ZabbixServer数据库位置,设置localhost默认使用MySQL端口

DBName

zabbix

数据库名称

DBScheme

IBM DB2或者PostgreSQL生效

DBUser

zabbix

数据库用户

DBPassword

数据库密码

DNSocket

/tmp/mysql.sock

MySQL Socket文件

DBPort

3306

MySQL端口

StartPollers

5

pollers进程数,可以简单理解为zabbix工作的一个worker

StartIPMIPollers

0

IPMIPollers程数

StartPollersUnreachable

1

检查unreachable hosts(包括IPMI)进程数

StartTrappers

5

Trappers程数

StartPingers

1

用于discoverdiscoverer进程数

StartHTTPPollers

1

用于HTTP检查的进程数

StartTimers

1

Timers的进程数

StartEscalators

1

 

JavaGateway

Zabbix Java gateway使用的IP或者hostname

JavaGatewayPort

10052

Java gateway使用的端口

StartJavaPollers

0

Java pollers的进程数

StartVMwareCollectors

0

Vmware poller的进程数

VMwareFrequency

60

ZabbixVmware获取监控指的频率,单位是秒

VMwarePerfFrequency

60

多久Zabbix会连接到VMware服务获取性能数据

VMwareCacheSize

8M

Vmware的缓存,存储Vmware数据的共享内存大小,只有当Vmware collectors启动生效

VMwareTimeout

10

Vmware的超时时间

SNMPTrapperFile

/var/log/snmptrap/snmptrap.log

SNMP设备将在数据发送到Server前会将SNMP数据存在文件中

StartSNMPTrapper

0

SNMPTrapper开始

ListenIP

0.0.0.0

Trappers监听的IP

HousekeepingFrequency

1

Zabbix执行Housekeeper的频率

MaxHousekeeperDelete

5000

Zabbix数据库中,有一张housekeeper表,里面记录了housekeeper要执行的任务

SenderFrequency

30

Zabbix发送报警的时间间隔

CacheSize

8M

存储HostItemTrigger数据的内存空间

CacheUpdateFrequency

60

将配置信息同步到内存中的频率

StartDBSyncers

4

将数据同步到数据库的内存大小

HistoryCacheSize

16M

存储History数据的内存大小

HistoryIndexCacheSize

4M

历史索引缓存大小

TrendCacheSize

4M

存储Trends数据的内存大小

ValueCacheSize

8M

历史值缓存大小,0不缓存

Timeout

4

Zabbix等待AgentSNMP设备或者自定义脚本的执行时间

TrapperTimeout

300

Trapper处理新数据的超时时间

UnreachablePeriod

45

host保持unreachable状态后多久将其标记为unreachable状态

UnavailableDelay

60

Hostunabailable状态时,检查Hostavailability的频率

UnreachableDelay

15

Hostunabailable状态时,检查Hostavailability的频率

AlertScriptsPath

/usr/lib/zabbix/alertscripts

自定义报警脚本的位置

ExternalScripts

/usr/lib/zabbix/externalscripts

自定义监控脚本的位置

FpingLocation

/usr/sbin/fping

fping位置,fping可执行文件的owner要设置为root,并且设置suid

Fping6Location

/usr/sbin/fping6

同上。可以处理IPV6

SSHKeyLocation

使用SSH检查和action所需要的SSH公钥、私钥位置

LogSlowQueries

3000

记录数据慢查询,只有设置为3或者4才会生效。0默认关闭

TmpDir

/tmp

临时文件目录

StartProxyPollers

1

被动Proxypoller进程数

ProxyConfigFrequency

3600

Zabbix Server将配置信息同步到Proxy的频率,这个参数只对被动的Proxy生效

ProxyDataFrequency

1

ZabbixServer请求Proxy历史数据的频率。这个参数只对被动的Proxy生效

AllowRoot

0

是否允许Serverroot身份运行。0表示不允许,1表示允许。

User

zabbix

下降到特定用户权限

Include

指定存放自定义监控的文件位置

SSLCertLocation

${datadir}/zabbix/ssl/certs

SSL 证书的位置(此参数只用于web监控)

SSLKeyLocation

${datadir}/zabbix/ssl/keys

钥为 SSL 证书

SSLCALocation

SSL 服务器证书验证的证书机构 CA文件的位置( 此参数只用于 web 监测和 SMTP 身份验证)

LoadModulePath

{libdir}/modules

loadable组件的位置

LoadModule

需要Server载入的loadable组件,格式为LoadModule=<module.so>

TLSCAFile

顶级CA证书的文件

TLSCRLFile

吊销证书文件路径

TLSCertFile

服务器证书或证书链的文件

TLSKeyFile

服务器专用密钥的文件

 

1.4.2Zabbix_agentd.conf

参数名称

是否必

认值

PidFile

/var/run/zabbix/zabbix_agentd.pid

记录Zabbix Agent pid的文件位置

LogType

  file

syslog #日志

file #指定日志文件位置(指定位置方便管理)

console #输出至屏幕

LogFile

/var/log/zabbix/zabbix_agentd.log

LogType设置file,使用文件来记录zabbixserver日志位置

LogFileSize

0

0表示禁用日志自rotation,如果日志达到了限制,并且rotation,老日志文件将会被清空掉,重新生成一个新日志。

DebugLevel

3

0 - 有关的zabbix过程的启动和停止的基本信息

1 - 信息

2 - 错误信息

3 - 警告

4 - 用于调试生大量的信息)

5 - 扩展调试(产生更多的信息

SourceIP

对外发起网络时使用的IP

EnableRemoteCommands

0

是否允zabbixserver控制agent行命令。0表示不允1表示允

LogRemoteCommands

0

 

Server

127.0.0.1

ZabbixServerIP或者主机名。ZabbixAgent只会接受来自IP或者主机名。如果有多个可以使用逗号分割

ListenPort

10050

ZabbixAgent听的端口

ListenIP

0.0.0.0

ZabbixAgent听的IP

StartAgents

3

理被动检查Zabbix_agentd数。如果设置为0,那么这个Agent的被动检查功能将禁止。Agent不会监听在所有的TCP端口

ServerActive

127.0.0.1

Zabbix模式(动发送采集数据ZabbixServer)

Hostname

运行ZabbixAgentdhostname。必server中配置的hostname相同(不写是主机名)

HostnameItem

system.hostname

如果Hostname空,会候用个参数定keyHostname,比如默system.hostnameZabbixKey

HostMetadata

host autho-registration中使用。如果超255个字符。Agent报错。如果没有置,那么会从HostMetadataItme个参数中

HostMetadataItem

使用一个kethost metadate

RefreshActiveChecks

120

主动检查项目列表刷新的时间

BufferSend

5

buffer存多少秒的数据

BufferSize

100

在内存buffer存数据的最大个数,当buffer中的数据个数达到最大后,会将数据送到server或者Proxy

MaxLinesPerSecond

20

loglogrt型的item个参数定了每秒server或者Proxy的最大行数。

Timeout

3

理数据的超时时间

AllowRoot

0

是否允许Serverroot身份运行。0表示不允许,1表示允许。

User

zabbix

下降到特定用户权限

Include

/etc/zabbix/zabbix_agentd.d/

指定存放自定义监控的文件位置推荐:/etc/zabbix/zabbix_agentd.d/*.conf

UnsafeUserParameters

0

在用自定parameter中,所有的参数都会传递给脚本

UserParameter

自定脚本的parameterparameterkey和脚本的对应关系。格式UserParameter=<key>,<shell command>

LoadModulePath

${libdir}/modules

loadable组件的位置

LoadModule

需要Server载入的loadable组件,格式为LoadModule=<module.so>

TLSConnect

unencrypted

接不加密

TLSAccept

unencrypted

接受不加密的

TLSCAFile

顶级CA证书的文件

TLSCRLFile

吊销证书文件路径

TLSServerCertIssuer

TLS证书签发

TLSServerCertSubject

证书

TLSCertFile

服务器证书或证书链的文件

TLSKeyFile

服务器专用密钥的文件

TLSPSKIdentity

共享密区分大小写字符串

TLSPSKFile

共享密文件路径

1.5zabbix宏的概述

宏的作用是便于在模板、ItemsTrigger中的引用

Zabbix有许多内置的宏,如{HOST.NAME}{HOST.IP}{TRIGGER.NAME}

详细信息请参考官方文档: https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location

为了更强的灵活性,Zabbix还支持全局宏-模板宏-主机宏级别使用用户自定义宏(user macro),用户自定义宏要使用”{$MACRO}”这种特殊的语法格式, 宏的名称只能使用大写字母、数字及下划线

宏可以应用在item keysdescriptionsTrigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中等。

1.5.1宏的替换次序

首先是主机级别的宏;其次是当前主机上一级模板中(直接链接至主机的模板)的宏,多个一级模板按其ID号排序;

再接着是二级模板中的宏;而后依次类推;最后检查的是全局宏;

Zabbix如果无法查找到某主机定义使用的宏,则不会对其进行替换操作。要使用用户自定义宏,有以下两种途径:

全局宏:AdministrationGeneralMacros

主机或模板级别的宏:编辑相应主机或者模板的属性即可

1.5.2宏的使用示例

在主机级别定义一个名为{$NETWORK_NUMBER}的宏,以定义当前主机所接受的网卡进口流量的合理大小(当然这里值根据具体情况来做,仅供一个参考)如图1-8、图1-9

技术分享

1-8

而后在主机的triggers中使用此宏

技术分享

1-9

第1章1zabbix快速入门