#一、认识zabbix
- zabbix(音同 za:bix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
- zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
- zabbix由2部分构成,zabbix server与可选组件zabbix agent。
- zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
##zabbix的功能与特性
- 安装与配置简单。
- 可视化web管理界面。
- 免费开源。
- 自动发现。
- 分布式监控。
- 实时绘图。
##Zabbix的系统组成
- Zabbix Server:负责接收Agent发送的报告信息,组织所有配置、数据和操作。
- Database Storage:存储配置信息以及收集到的数据。
- Web Interface:Zabbix的GUI 接口,通常与Server运行在同一台机器上。
- Proxy:可选组件,常用于分布式监控环境中。
Agent:部署在被监控主机上,负责收集数据发送给Server。
##zabbix系统包含的进程
默认情况下zabbix包含5个程序:zabbix_agentd
、zabbix_get
、zabbix_proxy
、zabbix_sender
、zabbix_server
,另外一个zabbix_java_gateway
是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。
- zabbix_agentd 客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。
- zabbix_get zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用- - zabbix_get获取客户端的内容的方式来做故障排查。
- zabbix_sender zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。
- zabbix_server zabbix服务端守护进程。zabbix_agentd、- zabbix_get、zabbix_sender、zabbix_proxy、- zabbix_java_gateway的数据最终都是提交到server
- 备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。
- zabbix_proxy zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。。
- zabbix_java_gateway zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。
各进程对应的zabbix/3.4/rhel/7/x86_64/安装包下载(地址http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/)
#二、部署zabbix
##实验环境
- server1:rhel 7.3系统——172.25.54.1
- server2:rhel 6.5系统——172.25.54.11
##搭建zabbix平台
####server1所需安装包
zabbix-server-mysql-3.4.6-1.el7.x86_64.rpm
zabbix-web-3.4.6-1.el7.noarch.rpm
zabbix-web-mysql-3.4.6-1.el7.noarch.rpm
fping-3.10-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm
zabbix-agent-3.4.2-1.el7.x86_64.rpm
####server1
[root@server1 ~]# ls
zabbix-server-mysql-3.4.6-1.el7.x86_64.rpm
zabbix-web-3.4.6-1.el7.noarch.rpm
zabbix-web-mysql-3.4.6-1.el7.noarch.rpm
fping-3.10-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm
zabbix-agent-3.4.2-1.el7.x86_64.rpm
[root@server1 ~]# yum install -y *.rpm
//安装数据库mariadb并进行初始化
[root@server1 z~]# yum install -y mariadb-server
[root@server1 ~]# systemctl start mariadb
[root@server1 ~]# mysql_secure_installation
Set root password? [Y/n] y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
[root@server1 ~]# systemctl restart mariadb
[root@server1 ~]# mysql -p
Enter password: //直接回车
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.52-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
//创建数据库
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'redhat';
//进行授权
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> Bye
[root@server1 ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.6/
[root@server1 zabbix-server-mysql-3.4.6]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@server1 zabbix-server-mysql-3.4.6]# zcat create.sql.gz | mysql -u zabbix -p zabbix
Enter password: //导入数据,输入授权用户zabbix的密码
[root@server1 zabbix-server-mysql-3.4.6]# mysql -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 5.5.52-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
| alerts |
| application_discovery |
............略................
| valuemaps |
| widget |
| widget_field |
+----------------------------+
140 rows in set (0.00 sec)
MariaDB [zabbix]> Bye
[root@server1 zabbix-server-mysql-3.4.6]# cd /etc/zabbix/
[root@server1 zabbix]# vim zabbix_server.conf
125 DBPassword=redhat
132 DBSocket=/var/lib/mysql/mysql.sock
[root@server1 zabbix]# ll /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 Aug 14 15:28 /var/lib/mysql/mysql.sock
[root@server1 zabbix]# vim /etc/httpd/conf.d/zabbix.conf
19 php_value date.timezone Asia/Shanghai //修改时区
[root@server1 zabbix]# systemctl start zabbix-server
[root@server1 zabbix]# systemctl start httpd
[root@server1 zabbix]# systemctl start zabbix-agent
####浏览器操作
#####修改密码后退出重新登陆
####server2
[root@serevr2 ~]# ls
zabbix-agent-3.4.6-1.el6.x86_64.rpm
[root@serevr2 ~]# rpm -ivh zabbix-agent-3.4.6-1.el6.x86_64.rpm
[root@serevr2 ~]# vim /etc/zabbix/zabbix_agentd.conf
97 Server=172.25.54.1
138 ServerActive=172.25.54.1
149 Hostname=server2
[root@serevr2 ~]# /etc/init.d/zabbix-agent start
[root@serevr2 ~]# netstat -antpl
##向zabbix添加需要监视的主机的四种方式
-
方式一:自动发现
-
方式二:手动创建
-
方式三:自动注册
等待些许时间后
-
方式四、API
[root@server1 ~]# vim zabbix-api.sh
[root@server1 ~]# chmod +x zabbix-api.sh
[root@server1 ~]# cat zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "redhat"
},
"id": 1,
"auth": null
}' http://172.25.54.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": "2cb16ddca9d07e50b68cf736eaf3f283"
}
[root@server1 ~]# vim zabbix-api.sh
[root@server1 ~]# cat zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"auth": "2cb16ddca9d07e50b68cf736eaf3f283",
"id": 2
}' http://172.25.54.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api.sh
{
"id": 2,
"jsonrpc": "2.0",
"result": [
{
"host": "Zabbix server",
"hostid": "10084",
"interfaces": [
{
"interfaceid": "1",
"ip": "127.0.0.1"
}
]
},
{
"host": "server2",
"hostid": "10259",
"interfaces": [
{
"interfaceid": "7",
"ip": "172.25.54.11"
}
]
}
]
}[root@server1 ~]#
//删除主机
[root@server1 ~]# vim zabbix-api.sh
[root@server1 ~]# cat zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10259"
],
"auth": "2cb16ddca9d07e50b68cf736eaf3f283",
"id": 2
}' http://172.25.54.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api1.sh
//创建主机
[root@server1 ~]# cat zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server2",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.54.2",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
],
},
"auth": "2cb16ddca9d07e50b68cf736eaf3f283",
"id": 2,
}' http://172.25.54.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api1.sh