在开始之前,我们还是先统一下认识:要监控一个对象,需要掌握哪些东西呢?
监控对象的理解:要监控的对象你是否了解呢?比如CPU到底是如何工作的?
监控对象的指标:我们要监控这个东西的什么属性?比如CPU的CPU使用率、负载、上下文切换。
确定报警基准线:怎么样才算是故障,要报警呢?比如CPU的负载到底多少算高?
如果上述的条件不满足,那就先不要开始实施监控了,因为等做完了,你会发现,然并卵?
主机名 | IP地址 | 描述 | 系统版本 |
linux-node1.com | 192.168.90.11 | Zabbix-Server | CentOS7 |
linux-node2.com | 192.168.90.12 | Zabbix-Proxy | CentOS7 |
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程序包安装,以及MySQL、Zabbix-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
在你的浏览器,打开网址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
Zabbix可以用Agent/Server的架构,客户端的采集方式分为Agent、SNMP等,通常情况都是使用Agent方式对服务器进行监控,后续再学习使用其他监控方式(SNMP、JMX、IPMI)
安装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
配置Agent和Server间通过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-server的IP地址
[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-server的IP(Agent可以有多个Ip?用于向多个Master发送数据)
ServerActive=127.0.0.1??#主动模式(Agent自动像Server发送数据)
Hostname=linux-node2.com
Include=/etc/zabbix/zabbix_agentd.d/
Zabbix的配置虽然不是很复杂,但有的配置参数很难用上,接下来就针对ZabbixServer、ZabbixAgent的配置文件,对其每个参数进行介绍,不求大家都深入了解,但是希望大家通过对本小结的学习知道每个参数是干什么用的。
Zabbix_Server很显然这个是server的配置文件,参数具体作用如下1-1表格列出
参数名称 | 是否必须 | 默认值 | 解释 |
ListenPort | 否 | 10050 | Trapper类型Item监听的端口 |
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 | 用于discover的discoverer的进程数 |
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 | Zabbix从Vmware获取监控指的频率,单位是秒 |
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 | 存储Host、Item和Trigger数据的内存空间 |
CacheUpdateFrequency | 否 | 60 | 将配置信息同步到内存中的频率 |
StartDBSyncers | 否 | 4 | 将数据同步到数据库的内存大小 |
HistoryCacheSize | 否 | 16M | 存储History数据的内存大小 |
HistoryIndexCacheSize | 否 | 4M | 历史索引缓存大小 |
TrendCacheSize | 否 | 4M | 存储Trends数据的内存大小 |
ValueCacheSize | 否 | 8M | 历史值缓存大小,为0不缓存 |
Timeout | 否 | 4 | Zabbix等待Agent、SNMP设备或者自定义脚本的执行时间 |
TrapperTimeout | 否 | 300 | Trapper处理新数据的超时时间 |
UnreachablePeriod | 否 | 45 | 当host保持unreachable状态后多久将其标记为unreachable状态 |
UnavailableDelay | 否 | 60 | 当Host为unabailable状态时,检查Host的availability的频率 |
UnreachableDelay | 否 | 15 | 当Host为unabailable状态时,检查Host的availability的频率 |
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 | 被动Proxy的poller进程数 |
ProxyConfigFrequency | 否 | 3600 | Zabbix Server将配置信息同步到Proxy的频率,这个参数只对被动的Proxy生效 |
ProxyDataFrequency | 否 | 1 | ZabbixServer请求Proxy历史数据的频率。这个参数只对被动的Proxy生效 |
AllowRoot | 否 | 0 | 是否允许Server以root身份运行。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 | 否 | 空 | 服务器专用密钥的文件 |
?
参数名称 | 是否必须 | 默认值 | 解释 |
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 | ZabbixServer的IP或者主机名。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 | 否 | 空 | 运行ZabbixAgentd的hostname。必须与server中配置的hostname相同(默认不写是主机名) |
HostnameItem | 否 | system.hostname | 如果Hostname为空,会时候用这个参数定义的key的值作为Hostname,比如默认的system.hostname这个Zabbix自带的Key |
HostMetadata | 否 | 空 | 在host autho-registration中使用。如果超过255个字符。Agent会报错。如果没有设置,那么会从HostMetadataItme这个参数中获取 |
HostMetadataItem | 否 | 空 | 使用一个ket的值作为host metadate的值 |
RefreshActiveChecks | 否 | 120 | 主动检查项目列表刷新的时间 |
BufferSend | 否 | 5 | 在buffer中缓存多少秒的数据 |
BufferSize | 否 | 100 | 在内存buffer中缓存数据的最大个数,当buffer中的数据个数达到最大值后,会将数据发送到server或者Proxy |
MaxLinesPerSecond | 否 | 20 | 对于log和logrt类型的item,这个参数定义了每秒发送给server或者Proxy的最大行数。 |
Timeout | 否 | 3 | 处理数据的超时时间 |
AllowRoot | 否 | 0 | 是否允许Server以root身份运行。0表示不允许,1表示允许。 |
User | 否 | zabbix | 下降到特定用户权限 |
Include | 否 | /etc/zabbix/zabbix_agentd.d/ | 指定存放自定义监控的文件位置推荐:/etc/zabbix/zabbix_agentd.d/*.conf |
UnsafeUserParameters | 否 | 0 | 在用户自定义的parameter中,所有的参数都会传递给脚本 |
UserParameter | 否 | 空 | 用户自定义脚本的parameter,parameter意为key和脚本的对应关系。格式为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 | 否 | 空 | 预共享密钥文件路径 |
宏的作用是便于在模板、Items、Trigger中的引用
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 keys和descriptions、Trigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中等。
首先是主机级别的宏;其次是当前主机上一级模板中(直接链接至主机的模板)的宏,多个一级模板按其ID号排序;
再接着是二级模板中的宏;而后依次类推;最后检查的是全局宏;
Zabbix如果无法查找到某主机定义使用的宏,则不会对其进行替换操作。要使用用户自定义宏,有以下两种途径:
全局宏:Administration→General→Macros
主机或模板级别的宏:编辑相应主机或者模板的属性即可
在主机级别定义一个名为{$NETWORK_NUMBER}的宏,以定义当前主机所接受的网卡进口流量的合理大小(当然这里值根据具体情况来做,仅供一个参考)如图1-8、图1-9
图1-8
而后在主机的triggers中使用此宏
图1-9
原文地址:http://blog.51cto.com/liangweilinux/2048924