1、 创建zabbix用户和用户组
[root@centos7 ~]# groupadd -g 2020 zabbix
[root@centos7 ~]# useradd -g 2020 -u 2020 zabbix
[root@centos7 ~]# cd /usr/local/src/
在数据库上创建用户授权
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@"10.0.0.%" identified by '123456';
在客户端连接数据库验证能否登上去
[root@centos7 src]# mysql -uzabbix -h10.0.0.110 -p123456
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| zabbix |
+--------------------+
2 rows in set (0.01 sec)
先解决zabbix依赖包的问题
yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb- Devel libevent libevent-devel java-devel php-bcmath php-gd php-xml php-sockets php-mysql php-ldap -y
解压包
[root@centos7 src]# tar xf zabbix-4.0.20.tar.gz
解压完成进入zabbix目录
[root@centos7 src]# cd zabbix-4.0.20
–help可以查看需要的编译选项
[root@centos7 zabbix-4.0.20]# ./configure --help
[root@centos7 zabbix-4.0.20]# ./configure --prefix=/apps/zabbix --enable-server --enable-agent --with-mysql --enable-java --with-net-snmp --with-libcurl --with-libxml2
对于虚拟机–with-libcurl,–with-libxml2需要监视和配置选项;–with-libcurlSMTP身份验证和web.page.*Zabbix代理项也需要。请注意,配置选项要求使用cURL 7.20.0或更高版本–with-libcurl。
[root@centos7 zabbix-4.0.20]# make install
root@centos7 zabbix-4.0.20]# ll database/ #这里面放得是zabbix数据库文件
导入数据库文件
[root@centos7 zabbix-4.0.20]# mysql -uzabbix -h10.0.0.110 -p123456 zabbix < database/mysql/schema.sql
[root@centos7 zabbix-4.0.20]# mysql -uzabbix -h10.0.0.110 -p123456 zabbix < database/mysql/images.sql
[root@centos7 zabbix-4.0.20]# mysql -uzabbix -h10.0.0.110 -p123456 zabbix < database/mysql/data.sql
接下来编辑zabbix的配置文件
[root@centos7 zabbix-4.0.20]# vim /apps/zabbix/etc/zabbix_server.conf
DBHost=10.0.0.110 #数据库地址
DBName=zabbix #数据库名
DBUser=zabbix #数据库用户名
DBPassword=123456 #数据库密码
启动zabbix
[root@centos7 zabbix-4.0.20]# /apps/zabbix/sbin/zabbix_server -c
/apps/zabbix/etc/zabbix_server.conf
[root@centos7 zabbix-4.0.20]# ps -ef |grep zabbix
[root@centos7 zabbix-4.0.20]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10051
接下来定义zabbix前端web页面
[root@centos7 zabbix-4.0.20]# yum install httpd
[root@centos7 zabbix-4.0.20]# ps -ef |grep apache
[root@centos7 zabbix-4.0.20]# mkdir /var/www/html/zabbix
[root@centos7 zabbix-4.0.20]# ll frontends/php/
[root@centos7 zabbix-4.0.20]# cd frontends/php/
[root@centos7 php]# cp -a ./* /var/www/html/zabbix/
现在就可以访问:http://10.0.0.140/zabbix/setup.php
这里需要改[root@centos7 php]# vim /etc/php.ini Ubuntu的路径是vim /etc/php/7.2/apache2/php.ini
post_max_size = 8M #改成16M
max_execution_time = 30 #改成300
max_input_time = 60 #改成300
date.timezone = Asia/Shanghai
修改完之后重启一下apache[root@centos7 php]# systemctl restart httpd
这里是说没有权限生成文件
进入这个目录里面
[root@centos7 php]# cd /var/www/html/zabbix/conf/
手动上次刚下载的文件
账号是Admin
密码是zabbix
现在我们启动zabbix_agent
[root@centos7 conf]# /apps/zabbix/sbin/zabbix_agentd
编写启动脚本
[root@centos7 ~]# vim /lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=mysql.service
After=mysqld.service
After=mariadv.service
[Service]
Environment="CONFFILE=/apps/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-
Type=forking
Restart=on-failure
PIDFile=/apps/zabbix/run/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/apps/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeeoutSec=infinity
[Install]
WantedBy=multi-user.target
用启动脚本启动zabbix
[root@centos7 ~]# pkill zabbix_server
[root@centos7 ~]# systemctl start zabbix-server
Zabbix-agent启动脚本
[root@centos7 zabbix]# vim /lib/systemd/system/zabbix-agent.service
[root@centos7 ~]# vim /lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/apps/zabbix/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/apps/zabbix/run/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStart=/apps/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
Chown zabbix.zabbix /apps/zabbix/run -R
启动zabbix-agent
[root@centos7 ~]# pkill zabbix_agent
[root@centos7 ~]# systemctl start zabbix-agent
Zabbix server 和性能相关的几个因素
1、数据库:
数据库服务器的cpu和磁盘io要快空间要大、内存16G-32G内存(监控2000个主机)
2、zabbix server的配置:16核cpu、磁盘io最差 RAID 10、监 控几十个服务器8G内存、监控几百台16G、32G监控2000左右。主要是看监控项的多少,一个服务器差不多五十个监控项。
3、zabbix.conf文件的优化 编译安装的日志默认是放在/tmp目录下 yum或者apt是在/var目录下
配置文件详解
[root@centos7 zabbix-4.0.20]# vim /apps/zabbix/etc/zabbix_server.conf
DBHost=10.0.0.110 #数据库地址
DBName=zabbix #数据库名
DBUser=zabbix #数据库用户名
DBPassword=123456 #数据库密码
HistoryStorageURL= #elasticsearch 服务器地址,保存zabbix历史数据到ES里面,优化zabbix性能,新版本zabbix才支持(一般不用)
HistoryStorageTypes=uint,db1,str.log.text #elasticsearch索引类型
HistoryStorageDateIndex=0 #将历史数据保存到不同的elasticsearch索引
ExportDir #定义实时到处触发器事件,监控采集值,趋势数据的目录(一般不用)
ExportFileSize=1G #定义每个导出文件的最大大小(一般不用)
ADVANCED PARAMETERS 必须优化类
StartPollers=5 (默认是5 这里至少和cpu核心数保持一致)
StartIPMIPollers=0 (IPMI 默认是0 可以开0-1000个用的时候才开)
StartPreprocessors=3 (这个值可以设置高点)预启动多少个进程用于处理zabbix-agent数据
StartPollersUnreachable=1 (这个保持默认)#不可达主机的轮询进程的初始实例启动数量
StartTrappers=5 (默认为5稍微调大点不超过cpu核心数)预启动的Trappers进程数主要做触发器的,少了的话会延迟报警
StartPingers=1 (默认为1表示同一时间只能ping一个服务器,需要设置多一点)#ICMP ping 进程的初始实例进程数量
StartDiscoverers=1 #自动发信主机的进程数量消耗zabbix性能(一般不用)
StartHTTPPollers=1 #http 进程数量 (默认为1,一般情况下开4个)
StartTimers=1 #计时器实例数量,计时器用于计算问题的发生时间和步骤同步等
StartEscalators=1 #escalators进程的初始实例数量,用于处理动作中的自动步骤的进程数量(通常只开4个)
StartAlerters=3 #报警实例预启动数量
JavaGateway=192.168.7.101 #javagateway 服务器地址,java plllers 必须设置
JavaGatewayPort=10052 #javagateway端口
StartJavaPollers=0 #预启动多少个进程来收集java的监控数据
StartVMwareCollectors=0 #用于设置监控vmwar esxi主机实例时使用,若为0则不启用,若要监控esxi主机此值最少为1,根据监控esxi数量设置对应的值。
VMwareFrequency=60 #监控vmware获取最新数据间隔频率,单位为秒
VMwarePerfFrequency=60 #监控vmware获取性能数据间隔
VMwareCacheSize=8M #vmware数据缓存大小,会占用zabbix server服务器内存
VMwareTimeout=10 #超时时间,主机在多长时间没有反馈就认为挂了
SNMPTrapperFile=/tmp/zabbix_traps.tmp #snmp触发器临时文件路径
StartSNMPTrapper=0 #SNMP触发器预启动数量
ListenIP=0.0.0.0 #zabbix 监听地址
HousekeepingFrequency=1 #多少小时清理一次代理数据库的history
数据
MaxHousekeeperDelete=5000 #每次最多删除历史数据的行数(一般删不干净,得找dba写sql语句删)
CacheSize=8M #配置信息缓存大小(128M-512M)
CacheUpdateFrequency=60 #zabbix更新缓存数据的频率,单位为秒(一般不要设置太多默认就好)
StartDBSyncers=4 #zabbix和数据库同步数据的进程数量(和cpu核心一致)
HistoryCacheSize=16M #历史数据的缓存大小(可以设置多点)
HistoryIndexCacheSize=4M #历史数据索引缓存大小
TrendCacheSize=4M #用去设置划分多少系统共享内存用于存储计算出来的趋势数据,此参数值从一定程度上可影响数据库读压力,范围是128K-2G (可以设置多点)
ValueCacheSize=8M #历史值缓存的大小,用于缓存历史数据请求的共享内存大小(可以设置64G)
Timeout=4 #数据获取等待超时时间(通常配置30s)
TrapperTimeout=300 #触发器处理新数据的最长时间,单位是秒(默认就行)
UnreachablePeriod=45 #当主机不可达多少秒后,设置为主机不可用。(默认就行)
UnavailableDelay=60 #当主机不可以用了,多久检查一次主机的可用性
AlertScriptsPath=${datadir}/zabbix/alertscripts #监控报警脚本路径,取决于编译时的datadir参数
ExternalScripts=${datadir}/zabbix/externalscripts #自定义脚本存储路径
FpingLocation=/usr/sbin/fping #fping命令的位置
Fping6Location=/usr/sbin/fping6 #fping6的位置 #改成fping命令实际的路径
SSHKeyLocation= #用于ssh检查和操作的公钥私钥的位置 (一般不用)
LogSlowQueries=0 #慢日志时间,仅当debugLevel 设置为3,4或者5时才不可用,0-不记录慢查询,范围是1-3600000
StartProxyPollers=1 #启动多少子进程与代理通信,若代理较多可考虑加大此数值,范围是0-250 (和代理数量相等)
ProxyConfigFrequency=3600 #proxy被动模式下,server多少秒同步配置文件至proxy,该参数仅用于被动模式下的代理,范围是1-3600*24*7
ProxyDataFrequency=1 #被动模式下,zabbix server 间隔多少秒向proxy请求历史数据(被动模式下值设置短点)
AllowRoot=0 #是否允许root启动(不允许)
User=zabbix #启动用户
# Include=/usr/local/etc/zabbix_server.general.conf
# Include=/usr/local/etc/zabbix_server.conf.d/
# Include=/usr/local/etc/zabbix_server.conf.d/*.conf #导入配置文件
SSL (一般用不上)
StatsAllowedIP= # 定义允许访问zabbix server的ip地址列表(白名单一般不用,都是在防火墙上控制)
LoadModulePath=${libdir}/modules #第三方模块目录路径 (一般用不上)
TLS (一般用不上)