#zabbix基本php
应用运维的三大任务之一:故障处理。如何找到故障就成了一个问题。java
经过客户反馈能够得知故障的发生,可是从客户感知到故障到提交故障可能周期很长。由于有些客户即便发现了没法访问服务也不会提交故障。
即便客户提交故障了,还须要从客户的描述中找出故障发生的位置,这中间可能还须要很长的时间。mysql这时,咱们就须要一个能随时监控系统并提供报警功能的软件了。ios
咱们的整个应用系统包括硬件和软件两大部分。
硬件:包括主机、交换机、路由器、网线等各类肉眼能看获得的设备。
软件:提供服务的各类软件、各项软件的相关指标、系统使用率等
以上不管哪一个部分发生故障均可能致使业务的中断。
而且因业务系统访问压力的增大,对系统资源的使用率持续上升,直至上升到系统资源彻底被占用致使业务不可用,这种状况也是很是有必要注意的。这种状况下,就须要咱们经过向外扩展增长提供服务的主机,来减轻系统的压力。web
在对一个应用系统进行监控时,各项数据能够经过系统内建的接口获取信息,也能够本身收集,有时数据采集后还须要计算。如ifconfig中RX packets是一个累加数据,单纯采集数据无实际意义,咱们须要的单位时间内的数量,这种状况下就须要进行计算。redis
须要监控的指标项:spring
数据采集的方式:sql
zabbix使用mysql和pgsql,因这些数据系统自身的局限性,在某些大型场景下,数据库很容易成为系统瓶颈。数据库
另外还能够借助一些配置系统,在警告前作出一些自愈操做。如重启服务等。apache
cacti:基于snmp,结合crontab采集数据,把采集的数据存入rrd(round robin databases)数据库。且cacti的报警功能弱暴了。一般配合nagios使用。但这两种数据库结合使用常常会出现各类问题。
nagios:周期性采集数据,采集后当即断定数据是否达到指定的阈值,达到或超过就告警,达不到就把数据丢掉。
zabbix-agent:被监控端须要安装的组件 get和sender:手动测试的命令行工具 zabbix-java-gateway:zabbix监控java程序所须要安装的包 zabbix-proxy-mysql、zabbix-proxy-sqlite3:zabbix代理端经过什么数据库存储,就安装哪一个组件 zabbix-server-mysql、zabbix-server-pgsql: zabbix服务端基于mysql和pgsql作存储所须要的包 zabbix-web:提供zabbix-gui接口
# rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
也可直接建立repo文件,使用以下repo内容:
如下为repo文件内容:
[zabbix] #提供了zabbx各类功能包。 name=Zabbix Official Repository - $basearch baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/ enabled=1 gpgcheck=0 gpgkey=http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX [Zabbix Official Repository] #提供了iksemel及fping。 name=Zabbix Official Repository baseurl=http://repo.zabbix.com/non-supported/rhel/7/x86_64/ enabled=1 gpgcheck=0 gpgkey=http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX
若不添加Zabbix Official Repository,安装zabbix时会出现以下提示:
Error: Execution of '/bin/yum -d 0 -e 0 -y install zabbix-server-mysql' returned 1: Error: Package: zabbix-server-2.4.8-1.el7.x86_64 (zabbix-2.4) Requires: iksemel Error: Package: zabbix-server-mysql-2.4.8-1.el7.x86_64 (zabbix-2.4) Requires: libiksemel.so.3()(64bit) You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
若报错Requires: libiksemel.so.3()(64bit),需下载libiksemel包:
Error: Package: zabbix-server-mysql-4.0.4-1.el7.x86_64 (zabbix) Requires: libiksemel.so.3()(64bit) You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest [root@zabbix ~]# wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//iksemel-1.4-6.sdl7.x86_64.rpm --2019-02-19 04:32:35-- http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//iksemel-1.4-6.sdl7.x86_64.rpm Resolving springdale.math.ias.edu (springdale.math.ias.edu)... 192.16.204.192 Connecting to springdale.math.ias.edu (springdale.math.ias.edu)|192.16.204.192|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 51884 (51K) [application/x-rpm] Saving to: ‘iksemel-1.4-6.sdl7.x86_64.rpm’ 100%[======================================================================================>] 51,884 93.9KB/s in 0.5s 2019-02-19 04:32:36 (93.9 KB/s) - ‘iksemel-1.4-6.sdl7.x86_64.rpm’ saved [51884/51884] [root@zabbix ~]# ls anaconda-ks.cfg dump.rdb iksemel-1.4-6.sdl7.x86_64.rpm private redis-4.0.10 redis-4.0.10.tar.gz [root@zabbix ~]# yum install -y iksemel-1.4-6.sdl7.x86_64.rpm Loaded plugins: fastestmirror Examining iksemel-1.4-6.sdl7.x86_64.rpm: iksemel-1.4-6.sdl7.x86_64 Marking iksemel-1.4-6.sdl7.x86_64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package iksemel.x86_64 0:1.4-6.sdl7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================ Package Arch Version Repository Size ================================================================================================================================ Installing: iksemel x86_64 1.4-6.sdl7 /iksemel-1.4-6.sdl7.x86_64 112 k Transaction Summary ================================================================================================================================ Install 1 Package Total size: 112 k Installed size: 112 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : iksemel-1.4-6.sdl7.x86_64 1/1 Verifying : iksemel-1.4-6.sdl7.x86_64 1/1 Installed: iksemel.x86_64 0:1.4-6.sdl7 Complete!
# yum -y install zabbix-server-mysql zabbix-proxy-mysql zabbix-web-mysql zabbix-agent mariadb-server
提示:若是 Zabbix server 和 Zabbix proxy 安装在相同的主机,它们必须建立不一样名字的数据库!
默认状况下,zabbix server配置文件中的DBName是zabbix,zabbix proxy配置文件中DBName是zabbix_proxy。
# mysql -uroot -p password mysql> create database zabbix character set utf8 collate utf8_bin; mysql> create database zabbix_proxy character set utf8 collate utf8_bin; #可选 mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'password'; #可选 mysql> flush privileges; mysql> quit;
[root@lxk ~]# cd /usr/share/doc/zabbix-proxy-mysql-4.0.2/ [root@lxk zabbix-proxy-mysql-4.0.2]# zcat schema.sql.gz > schema.sql #可选 [root@lxk zabbix-proxy-mysql-4.0.2]# cd ../zabbix-server-mysql-4.0.2/ #可选 [root@lxk zabbix-server-mysql-4.0.2]# zcat create.sql.gz > create.sql [root@lxk zabbix-server-mysql-4.0.2]# mysql -uroot -hlocalhost -p MariaDB [(none)]> use zabbix_proxy; #可选 MariaDB [zabbix_proxy]> source /usr/share/doc/zabbix-proxy-mysql-4.0.2/schema.sql; #可选 MariaDB [zabbix_proxy]> use zabbix; MariaDB [zabbix]> source /usr/share/doc/zabbix-server-mysql-4.0.2/create.sql;
编辑 /etc/zabbix/zabbix_server.conf以及/etc/zabbix/zabbix_proxy.conf,把其中的DBPassword值改成对应密码
DBPassword=password
编辑 /etc/httpd/conf.d/zabbix.conf, 设置时区
# php_value date.timezone Asia/Shanghai
# systemctl restart zabbix-server zabbix-agent httpd # systemctl enable zabbix-server zabbix-agent httpd
[root@nfs zabbix]# chown -R apache.apache ../zabbix/
访问zabbix-server http://zabbix-server IP/zabbix/setup.php 配置完成后配置文件会保存在如下文件 /etc/zabbix/web/zabbix.conf.php 安装完成后,默认用户为Admin,默认密码为zabbix
[root@nfs ~]# grep "^[^[:space:]]#\+" /etc/zabbix/zabbix_server.conf ############ GENERAL PARAMETERS ################# ### Option: ListenPort #服务监听的端口 ### Option: SourceIP #服务器端如有多个地址,使用哪一个地址与agent端链接。 ### Option: LogType #指明日志保存位置,syslog、文件、标准输出 ### Option: LogFile #日志保存的文件名 ### Option: LogFileSize #日志文件大小,超出大小自动滚动,0为不限制大小。 ### Option: DebugLevel #debug级别,详见配置文件解释。通常为3 ### Option: PidFile #PID文件位置 ### Option: SocketDir #基于UNIX SOCKET通信时的SOCKET文件位置 ### Option: DBHost #数据库IP ### Option: DBName #数据库名称 ### Option: DBSchema #数据库方案,即Mysql仍是pgsql ### Option: DBUser #链接数据库的用户 ### Option: DBPassword #链接数据库用户的密码 ### Option: DBSocket #DBSocket位置 ### Option: DBPort #数据库端口 ### Option: HistoryStorageURL # ### Option: HistoryStorageTypes #
[root@nfs ~]# grep "^[^[:space:]]####\+" /etc/zabbix/zabbix_agentd.conf 通常参数 ############ GENERAL PARAMETERS ################# 被动检查相关 ##### Passive checks related 主动检查相关 ##### Active checks related 高级配置 ############ ADVANCED PARAMETERS ################# 自定义监控参数 ####### USER-DEFINED MONITORED PARAMETERS ####### 加载的模块 ####### LOADABLE MODULES ####### 安全认证相关:局域网内无需配置 ####### TLS-RELATED PARAMETERS #######
### Option: PidFile #PID文件路径 ### Option: LogType #日志类型 ### Option: LogFile #日志文件位置 ### Option: LogFileSize #日志文件大小 ### Option: DebugLevel #debug级别 ### Option: SourceIP #与server端链接的IP地址 ### Option: EnableRemoteCommands #是否容许远程命令 ### Option: LogRemoteCommands #远程命令是否记录在日志中。
### Option: Server #server端IP ### Option: ListenPort #server端端口 ### Option: ListenIP #agent监听的地址 ### Option: StartAgents #启动几个agent
### Option: ServerActive ### Option: Hostname ### Option: HostnameItem ### Option: HostMetadata ### Option: HostMetadataItem ### Option: RefreshActiveChecks ### Option: BufferSend ### Option: BufferSize ### Option: MaxLinesPerSecond
server端的agent无需设置选项,安装好以后归入server端监控的方法:
直接启动agent--> 在zabbix-server的web-gui页上点击configuration --> hosts.找到Zabbix server并点击disabled --> 在弹出的消息中点击enable。
zabbix server的Availability列会显示当前采集数据的方式。ZBX为经过zabbix-agent方式。