zabbix安装部署

Alexei Vladishev创建了Zabbix项目,当前处于活跃开发状态,Zabbix SIA提供支持.Zabbix是一个企业级的、开源的、分布式的监控套件

Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题作出相应. Zabbix可以利用存储数据提供杰出的报告及图形化方式. 这一特性将帮助用户完成容量规划.Zabbix支持polling和trapping两种方式. 所有的Zabbix报告都可以通过配置参数在WEB前端进行访问. Web前端将帮助你在任何区域都能够迅速获得你的网络及服务状况. Zabbix可以通过尽可能的配置来扮演监控你的IT基础框架的角色,而不管你是来自于小型组织还是大规模的公司.

Zabbix是零成本的. 因为Zabbix编写和发布基于GPL V2协议. 意味着源代码是免费发布的.

Zabbix公司也提供商业化的技术支持.

程序构成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
进程介绍
1)- zabbix_agentd
客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等

2)- zabbix_get
zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。
通常用户排错。例如在server端获取不到客户端的内存数据,
我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。

3)- zabbix_sender
zabbix工具,用于发送数据给server或者proxy,
通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。
于是我们在脚本执行完毕之后,使用sender主动提交数据。

4)- zabbix_server
zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、
zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server
备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。

5)- zabbix_proxy
zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,
它需要把收集到的数据提交/被提交到server里。
为什么要用代理?代理是做什么的?卖个关子,请继续关注运维生存时间zabbix教程系列。

6)- zabbix_java_gateway
zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,
但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。
它的数据最终会给到server或者proxy。

zabbix部署(服务端)

1)zabbix依赖数据库配置

yum install mariadb-server

vim /etc/my.cnf,在[mysqld]下加上

1
2
skip_name_resolve=on
innodb_file_per_table=on

创建zabbix授权

1
2
3
4
5
6
7
mysql -uroot -h127.0.0.1 -e "
CREATE DATABASE zabbix CHARSET 'utf8';
GRANT ALL ON zabbix.* TO zbxuser@'192.168.%.%' IDENTIFIED BY 'zbxpass';
GRANT ALL ON zabbix.* TO zbxuser@'127.0.0.1' IDENTIFIED BY 'zbxpass';
FLUSH PRIVILEGES;
quit
"

2)配置服务端组件

1
2
3
4
5
安装服务端:yum install zabbix-server-mysql zabbix-get

安装webGUI:yum install zabbix-web zabbix-web-mysql

安装agent端(可以监控自己):yum install zabbix-agent zabbix-sender

zabbix server 数据库初始化:(将create.sql 导入到database中)\

1
2
3
4
# rpm -ql zabbix-server-mysql |grep create
/usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz
gzip -d creat.sql.gz
mysql -h192.168.1.108 -uzbxuser -p zabbix < create.sql

php时区更改(可直接执行

1
sed -i '/# php_value date.timezone.*/c\\tphp_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf

修改服务端配置文件:/etc/zabbix/zabbix_server.conf(先备份)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[centos ~]# grep -i "#####" /etc/zabbix/zabbix_server.conf
############ GENERAL PARAMETERS ################# 通用参数
############ ADVANCED PARAMETERS ################ 高级参数
####### LOADABLE MODULES ####### 加载的模块
####### TLS-RELATED PARAMETERS ####### TLS相关的参数



[centos ~]# egrep -v "(#|^$)" /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost= 192.168.0.10
DBName=zabbix
DBUser=zabuser
DBPassword=zabpass
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

常用部分配置解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# ListenPort=10051 监听的端口 默认为10051,默认即可
#
#SourceIP:若是有多个IP,启用一个源IP,对方授权的IP
#
#DBHost:数据库服务地址
#
#DBname:zabbix数据库名
#
#DBuser:zabbix数据库账户名
#
#DBpassword:zabbix数据库密码
#
#DBSocket:如果database与server在同一台主机就要改,不在就没事。
#
#logfile:日志文件地址
#
#logfilesize:日志文件大小,(最大为1G,0为用不滚动)
#
#DebugLevel:日志记录等级(1-5
#
#pidfile:pid文件
##启动:systemctl start zabbix-server,注意如果是centos是7.0或者7.1版本的trousers包要更新.

测试环境配置中仅改以下配置,其余配置保持默认、按需更改

1
2
3
4
5
# vim /etc/zabbix/zabbix_server.conf
DBHost=192.168.0.10
DBname=zabbix
DBUser=zabuser
DBPassword=zabpass

服务端配置完成

1
2
3
4
5
6
7
启动httpd:systemctl start httpd.service

访问:192.168.0.10/zabbix
http://192.168.0.10/zabbix/setup.php
默认账户密码
admin/zabbix

zabbix/setup.php。

配置客户端agent

Zabbix Agent检查有两种模式,分为主动(Agent Active)和被动(Agent)两种形式。主动与被动的说法均是相对于Agent来讨论的。

  • 主动检查:Agent请求Server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给Server/Proxy
  • 被动检查:Server向Agent请求获取监控项的数据,Agent返回数据。

安装agent端(可以监控自己):yum install zabbix-agent zabbix-sender

配置部分解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
root@c7-02:[~]: grep  "####" /etc/zabbix/zabbix_agentd.conf  
############ GENERAL PARAMETERS #################
EnableRemoteCommands:是否允许远程执行命令
LogRemoteCommands:远程命令执行是否记录日志
##### Passive checks related
Server:服务端地址(允许哪个ip获取数据)
StartAgents:服务启动时预生成的进程数(注意不能为0,为0是代表禁用被动模式)
##### Active checks related
ServerActive:#主动模式的server IP地址
Hostname:主#机名(用于主动发送数据时用于标示主机名)
RefreshActiveChecks:#多长时间去服务端刷新一次配置间隔
############ ADVANCED PARAMETERS #################
####### USER-DEFINED MONITORED PARAMETERS #######
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######



root@c7-02:[~]: egrep -v "(#|^$)" /etc/zabbix/zabbix_agentd.conf
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
EnableRemoteCommands=1
Server=192.168.0.10
ServerActive=192.168.0.10
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/


测试环境更改以下

1
2
3
4
5
6
7
8
9
10
11
12
13
#被动监控,agent等待server过来请求数据
#passive checks related 下

Server=192.168.0.10 可以用逗号隔开授权的有哪些

#主动监控:被监控端把数据主动发给服务端
#active checks related 下

ServerActive=192.168.0.10
Hostname=在Web UI上声明主机时所使用相同的主机名(区分大小写),不配置则使用主机名。

#启动服务即可
systemctl start zabbix-agent.service
修改 Zabbix Server 系统语言为简体中文

对于 3.0 版本的 Zabbix Server 系统语言选择下拉框中默认是没有简体中文的,需要改动其源码,改动方式如下:

  • vim /usr/share/zabbix/include/locales.inc.php`,修改文件中的 `'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => false]` 的 `false` 为 `true` 即可。
1
sed -E "55s/display.*/display' => true],/" /usr/share/zabbix/include/locales.inc.php  

不过中文翻译得并不贴切,而且还会有乱码(需要修改字体解决)的可能,不建议修改此项。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!