一、硬件需求分析
1、首先我们来分析一个硬件需求,这里我以400个agent计算,CPU建议是4核,内存不要少于8GB,硬盘只要不是用了很久的主机就行,容量的话建议300GB基本就够使用好一段时间了,如果agent太多,可以使用分布式监控。
二、服务器配置文件优化
2、服务器配置文件说明
#zabbix-server的日志文件路径 LogFile=/tmp/zabbix_server.log ##当日志文件达到多大时进行轮询操作 LogFileSize=100 #数据名称 DBName=zabbix #数据库授权用户 DBUser=zabbix #数据库授权用户的密码 DBPassword=zabbix #一般情况下默认即可(模式认识5) StartPollers=50 初始的Unreachable主机检查进程(也就是不可达的进程数) StartPollersUnreachable=30 ##打开的进程数 StartTrappers=5 #同上,意思是同时开多少个ping检测的进程,不易太大,特别耗cpu和数据库连接数 StartPingers=10 #同上,默认即可 StartDiscoverers=5 #这里只服务器IP地址,记得一定要添加上服务器的内网ip ListenIP=127.0.0.1,192.168.1.58 #缓存的大小 CacheSize=512M 多少秒更新一次配置缓存 CacheUpdateFrequency=100 #预先foke DB Syncers的数量,1.8.5以前最大值为64 StartDBSyncers=10 #历史数据缓存大小 HistoryCacheSize=1024M #3.0.0开始支持,历史索引大小,一个监控项需要100bytes来存储 HistoryIndexCacheSize=512M 趋势图历史数据缓存大小 TrendCacheSize=512M #lue缓存大小,当缓存超标了,将会每隔5分钟往server日志里面记录 ValueCacheSize=512M #处理trapper数据的超时时间 Timeout=2 #间隔多少秒再次检测主机是否可用 UnavailableDelay=90 间隔多少秒再次检测主机是否可达。 UnreachableDelay=90 #短信报警模板路径 AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #fping检测路径 FpingLocation=/usr/local/sbin/fping 多慢的数据库查询将会被记录,单位:毫秒,0表示不记录慢查询。只有在DebugLevel=3时,这个配置才有效。 LogSlowQueries=3000
其它更改参数
参数 | 是否必须 | 范围 | 默认值 | 描述 |
---|---|---|---|---|
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返回数据的最长时间 |
3、备份和优化
1、首先所有的配置都是在书库里面,其实也可以前端直接导出就行,但是比较麻烦,所以我比较喜欢数据库备份,简单粗暴。因为这里我使用的是mariadb10.3的版本数据库,所以不能用原来的xtrabackup工具备份数据量,版本10开始就可以使用mariabackup工具,用法基本和xtrabackup工具相同。
2、做好配置文件的备份。
3、数据库的优化,这里需要提一下,mariadb默认最大连接数是151个,如果你上面参数调的太大的话,需要在数据库里面增加max_connection参数,否则数据库会报错。
4、缓存问题,我们先看看下面的图。注意buff/cache这个参数,如果不定时清理缓存的话,这个值就会越来越大,最后导致内存溢出,数据库崩溃。
脚本很简单如下,每4个小时清除一下缓存。
* */4 * * * /usr/bin/echo 3 > /proc/sys/vm/drop_caches
更改zabbix的admin密码:
use zabbix;
更改密码为12345678
update users set passwd=md5('12345678') where alias = 'Admin';
mysql报警too many connection
设置zabbix_server配置文件的时候,mysql报警too many connection
查看默认数据库最大连接数(mysql默认是151):
select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='MAX_CONNECTIONS';
修改为1000,可以根据自己的配置尝试逐渐提高。
set global max_connections = 1000;