本文目的:针对实验环境的学习需求和日常监控搭建zabbix服务。本文给出手动安装包部署的步骤,自动化安装部署zabbix不涉及在本文档范围内。本文给出在Centos操作系统和ubuntu操作系统两种操作系统下的安装办法。
CentOs7.0环境中安装部署zabbix-server端
1 解决先决条件
- 预安装zabbix环境的虚机或者物理机需要与被监控的机器做到网络可达。
- 预安装zabbix的环境需要禁用selinux。
#setenforce 0
#vim /etc/selinux/config
将配置文件中参数“SELINUX”修改为disabled,然后保存退出。
SELINUX=disabled
3. 清空并关闭防火墙
#iptables –F
#systemctl stop iptables
#systemctl disable iptables
- Yum源配置
①. 使用阿里Base源替换掉原先CentOS的Base源(可选步骤)
CentOS 7
#rm –rf /etc/yum.repos.d/CentOS-*
#wget –O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
②.追加阿里的epel源
由于在安装过程中有些在Base源中的安装包的依赖包在Base源中没有所以需要添加epel源。
#wget –O /etc/yum.repos.d/CentOS-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
③.安装zabbix官方源
# rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
#yum clean all
#yum makecache
2 安装zabbix-server端
- 安装MySQL
#yum install –y mariadb mariadb-server
启动数据库
#systemctl start mariadb
设置开机自启
#systemctl enable mariadb
安全初始化数据库
#mysql_secure_installation(这里为了简便在设置数据库密码之后以后mysql给出的选项全部按照默认来设置,全部回车敲过)。
测试能否登录
#mysql –uroot –p123456
- 初始化zabbix DB(这里默认zabbix数据库名称为:zabbix,数据库用户为:zabbix,数据库密码为:zabbix)
#mysql –uroot –p123456
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> grant all PRIVILEGES on *.* to 'root'@'%' IDENTIFIED BY 'passw0rd' WITH GRANT OPTION;
mysql> grant all PRIVILEGES on *.* to 'zabbix'@'%' IDENTIFIED BY 'zabbix' WITH GRANT OPTION;
mysql> flush privileges;
#cd /usr/share/doc/zabbix-server-mysql
#zcat create.sql.gz | mysql -u root -p zabbix
# systemctl status zabbix-server
- 修改zabbix server配置文件并且zabbix-server服务
Tip:这里只给出简单的配置,要详细进行参数调优请参加附件的参数列表
打开zabbix配置文件并且修改如下配置项
#vim /etc/zabbix/zabbix_server.conf
DBHost=192.168.58.248
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
启动zabbix-serber服务
#systemctl start zabbix-server
开机自启动zabbix-server服务
#systemctl enable zabbix-server
- 启动zabbix管理界面
编辑配置PHP文件
#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
启动http服务
#systemctl start httpd
开机启动http服务
#systemctl enable httpd
3 Web端配置zabbix
登录zabbix管理页面http://zabbixserverIP/zabbix,显示Zabbix安装向导。
第一个页面是Welcome页面我们直接点击下一步。
检查先决配置是否通过,这里要求zabbix的所有检查项目都要为“OK”状态。如果显示为“Failed”则需要按照网页给的提示来解决错误,直至正常方可继续下一步。
第三个页面时配置数据库连接信息,这里需要你填入数据库的类型,数据库连接的IP,数据库端口号“0”表示默认为3306端口,数据库名,数据库用户,数据库密码。
第四个页面需要填入的是zabbix服务器的信息,host表示zabbix-server所在服务器的IP地址,port表示zabbix-server开启的端口,name为服务器的hostname何以不用填写。
预安装的summary页面,如果所填入的信息没有问题则执行安装。
待安装向导执行完成之后则可以直接使用默认的用户名和密码进行登录。默认用户名“Admin”,密码“zabbix”。
Part2. Ubuntu环境中安装部署zabbix-server端
在ubuntu环境下解决安装zabbix解决先决条件
预安装zabbix环境的虚机或者物理机需要与被监控的机器做到网络可达。
- 清空并关闭防火墙
#iptables –F
#ufw disable
- deb源配置 在这里为了方便请在以普通用户登录后使用“sudo -i”命令切换到root用户下来执行配置操作。
# wget http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.0-1+trusty_all.deb
# dpkg -i zabbix-release_3.0-1+trusty_all.deb
# apt-get update
安装配置服务端
- 安装zabbix-server以及相关依赖包
# apt-get install zabbix-server-mysql php5-mysql zabbix-frontend-php
在安装的途中会要求输入数据库密码。
- 配置mysql
mysql>create database zabbix character set utf8 collate utf8_bin;
mysql>grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> grant all PRIVILEGES on *.* to 'root'@'%' IDENTIFIED BY 'passw0rd' WITH GRANT OPTION;
grant all PRIVILEGES on *.* to 'zabbix'@'%' IDENTIFIED BY 'zabbix' WITH GRANT OPTION;
mysql> flush privileges;
#cd /usr/share/doc/zabbix-server-mysql zcat create.sql.gz | mysql -u root -p zabbix
#cp -r /usr/share/zabbix /var/www/html/zabbix
#service zabbix-server restart
- 配置zabbix-server
#vim /etc/zabbix/zabbix_server.conf
修改以下配置项目
DBHost=192.168.58.248(如果zabbix-server和mysql处于同一台服务器这里也可以填写localhost,但是建议还是填写IP地址)
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
- 启动zabbix管理界面
编辑配置PHP文件
#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
启动http服务
#service apache2 start
- 网页配置
网页配置如第一章节1.3配置,这里不再赘述。
安装配置zabbix-agent端
Zabbix-agent的安装配置分为主动模式和被动模式两种,这里介绍主动式和被动式的安装,由于ubuntu和CentOS在配置zabbix-agent端上并无多大差别,只存在下载安装包命令的不同,所以这里整合在一起给出。
安装zabbix-agent
在上述章节中请对照自己的操作系统来分别配置好安装源,在配置好了安装源之后针对CentOS的操作系统安装指令如下:
#yum install zabbix-agent
在ubuntu操作系统中安装如下:
#apt-get install –y zabbix-agent(前提使用sudo –i切换到root用户,否则ubuntu操作系统执行指令前需要追加sudo,例如该指令普通用户需要这样执行:sudo apt-get install –y zabbix-agent)。
配置zabbix-agent被动模式
Tip:这里只给出简单的配置,要详细进行参数调优请参加附件的参数列表
#vim /etc/zabbix/zabbix_agentd.conf
Server=ZabbixServerIp
Hostname=ZabbixServerName
UnsafeUserParameters=1
Include= /etc/zabbix/zabbix_agentd.conf.d/
配置zabbix-agent主动模式
在zabbix-agent配置文件中修改如下:
LogFile=/tmp/zabbix_agentd.log
Server=192.168.0.251 #zabbix server的ip地址,多个ip使用逗号分隔,如果使用纯主动模式可不填写。
ServerActive=192.168.0.251 #zabbix主动监控server的ip地址,使用逗号分隔多IP,如果注释掉这个选项,那么当前服务器的主动监控就被禁用了。ServerActice是指定agentd手机的数据往哪里发。
Hostname=192.168.0.3 #Hostname是必须要和server段添加主机时的主机名对应起来,这样Server端接收到数据才能找到对应关系。
StartAgent=0 #zabiix启动之后开启被动监控的进程数量,如果设置为0,那么zabbix被动监控被禁用,并且不会监听相应的端口,也就是说10050端口不会开启。
RefreshActiveChecks=60 #多久时间(秒)刷新一次主动监控配置信息,如果刷新失败,那么60秒之后会重试一次。
BufferSize=100 buffer最大值,如果buffer满了,zabbix将会将检索到的数据发送给zabbix server或者proxy。
MaxLinesPerSecond=100 #处理监控类型为log和eventlog日志时,agent每秒最大发送的行数。默认为100行。
Timeout=30 #默认值为3秒,超时时间。
Tips:如何测试agent已经和server端联通
zabbix_get -s zabbixserverip -k mysql.status[Uptime]
附录
Zabbix-server配置文件参数详解
参数 | 是否必须 | 范围 | 默认值 | 描述 |
---|---|---|---|---|
AlertScriptsPath | 否 | /usr/local/share/zabbix/alertscripts | 自定义告警脚本的路径,取决于编译时候的datadir参数 | |
AllowRoot | 否 | 0 | 是否允许Zabbix以root用户启动,设为0的时候server默认会用zabbix用户启动,1则可以以root启动,此参数在2.2.0开始才支持 | |
CacheSize | 否 | 128K-8G | 8M | 用于缓存主机、监控项、触发器的数据,在2.2.3之前最大值为2G |
CacheUpdateFrequency | 否 | 1-3600 | 60 | Zabbix更新缓存数据的频率,单位为秒 |
DBHost | 否 | localhost | 数据库的主机地址 | |
DBName | 是 | 数据库名 | ||
DBPassword | 否 | 数据库密码 | ||
DBPort | 否 | 1024-65535 | 3306 | 数据库端口 |
DBSchema | 否 | DB2、PG的Schema名称 | ||
DBSocket | 否 | /tmp/mysql.sock MySQL | Socket的路径 | |
DBUser | 否 | DB用户名 | ||
DebugLevel | 否 | 0-5 | 3 | Debug级别,0:ZabbixServer启停信息。1:关键信息。2:错误信息。3:警告信息;4:调试级别。5:全部日志信息 |
ExternalScripts | 否 | /usr/local/share/zabbix/externalscripts 脚本路径,与编译的datadir有关 | ||
FpingLocation | 否 | /usr/sbin/fping Fpgin的路径,确保是root用户下并且设置了SUID标签 | ||
HistoryCacheSize | 否 | 125K-2G | 16M | 缓存历史数据的内存大小 |
HistoryIndexCacheSize | 否 | 125k-2G | 4M | 3.0.0开始支持,历史索引大小,一个监控项需要100bytes来存储 |
HousekeepingFrequency | 否 | 0-24 | 1 | Housekeeper清理历史数据的频率 |
Include | 否 | 用来包含其他配置文件,例如/absolute/path/to/config/files/*.conf,2.4.0之后才开始支持 | ||
JavaGateway | 否 | 2.0.0开始支持,Zabbix Java网关地址 | ||
JavaGatewayPort | 否 | 1024-32767 | 10052 | Zabbix Java网关侦听的端口 |
ListenIP | 否 | 0.0.0.0 | 从1.8.3开始支持多个IP | |
ListenPort | 否 | 1024-32767 | 10051 | 侦听Trap的端口 |
LoadModule | 否 | 扩展模块 | ||
LoadModulePath | 否 | 扩展模块路径 | ||
LogFile | 是 | 日志文件的名称 | ||
LogFileSize | 否 | 0-1024 | 1 | 单位为MB,每份日志文件最大的大小,0表示禁用日志轮转 |
LogType | 否 | file | 日志输出的类型,file:文件日志,system:写到syslog,console:控制台,3.0.0开始支持 | |
LogSlowQueries | 否 | 0-3600000 | 0 | 慢查询日志,0:不记录,1.8.2开始支持 |
MaxHousekeeperDelete | 否 | 0-1000000 | 5000 | 每个HouseKeeper任务删除的最大记录数,1.8.2开始支持 |
PidFile | 否 | /tmp/zabbix_server.pid | PID文件名 | |
ProxyConfigFrequency | 否 | 1-604800 | 3600 | ZabbixServer向Proxy更新配置文件的频率 |
SenderFrequency | 否 | 5-3600 | 30 | Zabbix发送未发送成功的告警频率,单位为秒 |
SNMPTrapperFile | 否 | /tmp/zabbix_traps.tmp | SNMPTrapServer临时文件,必须和zabbix_trap_receiver.pl的名字相同,2.0.0开始支持 | |
SourceIP | 否 | 出口IP | ||
SSHKeyLocation | 否 | SSH公钥目录 | ||
SSLCertLocation | 否 | SSL客户端认证文件,2.4开始支持 | ||
SSLKeyLocation | 否 | SSL私钥文件目录,2.4开始支持 | ||
SSLCALocation | 否 | SSL CA钥文件目录 | ||
StartDBSyncers | 否 | 1-100 | 4 | DB同步进程数量,1.8.3开始支持,1.8.5之前最大为64 |
StartDiscoverers | 否 | 0-250 | 1 | 自动发现的进程数量,1.8.5之前最大值为255 |
StartEscalators | 否 | 1-100 | 1 | 检查escalations的进程,这张表好像是告警事件表 |
StartHTTPPollers | 否 | 0-1000 | 1 | 初始的HTTP Poller进程 |
StartIPMIPollers | 否 | 0-1000 | 1 | 初始的IPMI Poller进程 |
StartJavaPollers | 否 | 0-1000 | 1 | 初始的JavaPoller进程 |
StartPingers | 否 | 0-1000 | 1 | ICMP pinger的初始进程 |
StartPollersUnreachable | 否 | 0-1000 | 1 | 初始的Unreachable主机检查进程 |
StartPollers | 否 | 0-1000 | 5 | Server的初始进程 |
StartProxyPollers | 否 | 0-250 | 1 | 代理Poller的初始进程数 |
StartSNMPTrapper | 否 | 0-1 | 0 | 是否开启SNMPTrapper进程 |
StartTimers | 否 | 0-1000 | 1 | timers进程的初始数量,它是一个用于处理时间相关的告警进程 |
StartTrappers | 否 | 0-1000 | 5 | ZabbixTraper(sender等功能用)的初始进程数量 |
StartVMwareCollectors | 否 | 0-250 | 0 | 采集VMWare信息的初始进程量 |
Timeout | 否 | 1-30 | 3 | 等待Agent的时间,单位为秒 |
TLSCAFile | 否 | TLS证书文件 | ||
TLSCertFile | 否 | TLS证书文件 | ||
TLSCRLFile | 否 | TLS证书文件 | ||
TLSKeyFile | 否 | TLS证书文件 | ||
TmpDir | 否 | /tmp | 临时文件目录 | |
TrapperTimeout | 否 | 1-300 | 300 | Trapper处理新数据的最长时间 |
TrendCacheSize | 否 | 128K-2G | 4M | 趋势数据缓存的大小 |
UnavailableDelay | 否 | 1-3600 | 60 | 当主机不可用了,多久检查一次该主机的可用性,单位为秒 |
UnreachableDelay | 否 | 1-3600 | 15 | 当主机不可到达了,多久检查一次该主机的可用性,单位为秒 |
UnreachablePeriod | 否 | 1-3600 | 45 | 当主机不可达多少秒后,设置为主机不可用 |
User | 否 | zabbix 非root运行的账号 | ||
ValueCacheSize | 否 | 0,128k-64G | 8M | 历史数据缓存大小,0为不缓存, |
VMwareCacheSize | 否 | 256K-2G | 8M | VMWare检查可用的缓存大小 |
VMwareFrequency | 否 | 10-86400 | 60 | 获取VMWare数据之间的间隔 |
VMwarePerfFrequency | 否 | 10-86400 | 60 | 获取VMWare性能计数器之间的间隔 |
VMwareTimeout | 否 | 1-300 | 10 | 等待VMWare返回数据的最长时间 |
Zabbix_agent配置文件参数详解
Alias
key的别名,例如 Alias=ttlsa.userid:vfs.file.regexp[/etc/passwd,^ttlsa:.:([0-9]+),,,,\1], 或者ttlsa的用户ID。你可以使用key:vfs.file.regexp[/etc/passwd,^ttlsa:.: ([0-9]+),,,,\1],也可以使用ttlsa.userid。
备注: 别名不能重复,但是可以有多个alias对应同一个key。
AllowRoot
默认值:0
是否允许使用root身份运行zabbix,如果值为0,并且是在root环境下,zabbix会尝试使用zabbix用户运行,如果不存在会告知zabbix用户不存在。
0 - 不允许
1 - 允许
BufferSend
取值范围:1-3600
默认值:5
数据存储在buffer中最长多少秒
BufferSize
取值范围:2-65535
默认值:100
buffer最大值,如果buffer满了,zabbix将会将检索到的数据发送给zabbix server或者proxy
DebugLevel
取值范围:0-5
默认值:3
指定日志级别
0 - basic information about starting and stopping of Zabbix processes
1 - critical级别
2 - error级别
3 - warnings级别
4 - debug级别
5 - extended debugging (与级别4一样. 只能使用runtime control 来设置.)
EnableRemoteCommands
默认值:0
是否运行zabbix server在此服务器上执行远程命令
0 - 禁止
1 - 允许
HostMetadata
取值范围:0-255 字符
仅用于主机自动注册功能,如果当前值为定义,那么它的值默认为HostMetadataItem的值。这个选项在2.2.0之后加入,并且确保支付不能超过限制,以及字符串必须是UTF8,否则服务器无法启动
zabbix自动注册请参考:zabbix客户端自动注册(84)
HostMetadataItem
功能同上,如果HostMetadata值未设置,这个配置才有效。支持使用UserParameters、alias、system.run[]
Hostname
默认值:HostnameItem配置的值
主机名,必须唯一,区分大小写。Hostname必须和zabbix web上配置的一直,否则zabbix主动监控无法正常工作。为什么呢?因为agent拿着这个主机名去问server,我有配置主动监控项 吗?server拿着这个主机名去配置里面查询,然后返回信息。
支持字符:数字字母、’.’、’ ‘、 ‘_’、 ‘-‘,不超过64个字符
HostnameItem
默认值:system.hostname
设置主机名,只有当HostMetadata没设置,她才生效。不支持UserParameters 、aliases,支持system.run[]
Include
包含自配置文件,不同的配置写到不同的文件中,然后include,配置文件会显得规范。例如: /absolute/path/to/config/files/*.conf. Zabbix 2.4.0开始支持正则表达式。
ListenIP
默认值:0.0.0.0
监听IP地址,默认为所有接口,多个ip之间使用逗号分隔
ListenPort
取值范围:1024-32767
默认值10050
监听端口
LoadModule
加载模块文件,可以写多个
格式: LoadModule=
必须配置LoadModulePath,指定模块目录
zabbix模块请参考:zabbix加载扩展模块 第三方库支持(92)
LoadModulePath
模块路径,绝对路径,如上
LogFile
日志文件路径
如果未配置,日志会记录到syslog中
LogFileSize
取值范围:0-1024
默认值:1
日志文件大小,单位为MB。
0 - 关闭自动轮滚.
备注:如果日志文件到达了最大值并且文件轮滚失败,那么老日志文件会被清空掉。
LogRemoteCommands
默认值:0
记录原型执行的shell命令日志,级别为warrning
0 - disabled
1 - enabled
MaxLinesPerSecond
取值范围:1-1000
默认值:100
处理监控类型为log何eventlog日志时,agent每秒最大发送的行数。默认为100行
zabbix日志监控请参考:zabbix监控日志文件 MySQL日志为例(95)
PidFile
默认值:/tmp/zabbix_agentd.pid
PID文件名
RefreshActiveChecks
取值范围:60-3600
默认值:120
多久时间(秒)刷新一次主动监控配置信息,如果刷新失败,那么60秒之后会重试一次
Server
zabbix server的ip地址,多个ip使用逗号分隔
ServerActive
zabbix 主动监控server的ip地址,使用逗号分隔多IP,如果注释这个选项,那么当前服务器的主动监控就被禁用了
SourceIP
zabbix对外连接的出口IP地址
StartAgents
取值范围:0-100
默认值:3
zabbix启动之后开启被动监控的进程数量,如果设置为0,那么zabbix被动监控被禁用,并且不会监听相应端口,也就是说10050端口不会开启。
Timeout
默认值:1-30
默认值:3
超时时间
UnsafeUserParameters
取值范围:0,1
默认值: 0
允许所有字符的参数传递给用户定义的参数。
User
默认值:zabbix
运行zabbix程序的用户,如果AllowRoot被禁用,才有效果
UserParameter
用户自定义key,格式: UserParameter=,
例如:serParameter=system.test,who|wc -l