zabbix:自动监控,自动注册,手动添加,api添加用户和删除
原理:
是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
- zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(agent方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。另外zabbix server还支持SNMP (v1,v2),可以与SNMP软件(例如:net-snmp)等配合使用
2. zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集
实验环境
zabbix-server=172.25.254.72 rhel7.2
Zabbix-agent=172.25.254.5 rhel6.5
server:
[root@localhost zabbix]# ls后面一列是所需,其他是依赖包
fping-2.4b2-16.el6.x86_64.rpm
zabbix-agent-3.4.6-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm
zabbix-server-mysql-3.4.6-1.el7.x86_64.rpm
php-bcmath-5.4.16-36.el7_1.x86_64.rpm
zabbix-web-3.4.6-1.el7.noarch.rpm
php-mbstring-5.4.16-36.el7_1.x86_64.rpm
zabbix-web-mysql-3.4.6-1.el7.noarch.rpm
[root@localhost zabbix]# yum install *
安装中的错误:报错requiers:zabbix-web-database实际上没有这种包,
要先安装zabbix-web-mysql
装数据库:
[root@localhost zabbix]# yum install mariadb-server -y
[root@localhost zabbix]# systemctl start mariadb
[root@localhost zabbix]# mysql_secure_installation (设置登陆时的密码)
创建一个库zabbix进行授权:
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)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| zabbix |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]> use zabbix
Database changed
MariaDB [zabbix]> show tables;
Empty set (0.00 sec)
倒入数据到数据库:
[root@localhost doc]# cd zabbix-server-mysql-3.4.6/
[root@localhost zabbix-server-mysql-3.4.6]# pwd
/usr/share/doc/zabbix-server-mysql-3.4.6
[root@localhost zabbix-server-mysql-3.4.6]# zcat create.sql.gz |mysql -u zabbix -p zabbix
Enter password: 输入授权用户密码(倒入过程好慢的说)
终于好了查看一下:
[root@localhost zabbix-server-mysql-3.4.6]# cd /etc/zabbix/
[root@localhost zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
[root@localhost zabbix]# vim zabbix_server.conf
132 DBSocket=/var/lib/mysql/mysql.sock
125 DBPassword=redhat
[root@localhost zabbix]# cd /etc/httpd/conf.d/
[root@localhost conf.d]# ls
autoindex.conf php.conf README userdir.conf welcome.conf zabbix.conf
[root@localhost conf.d]# vim zabbix.conf
19 php_value date.timezone Asia/Shanghai
[root@localhost conf.d]# systemctl start zabbix-server
[root@localhost conf.d]# systemctl start httpd
[root@localhost conf.d]# systemctl start zabbix-agent.service
数据库倒入数据错误报错,其中的报错看日志:/var/log/zabbix
测试:
在浏览器处:172.25.254.72/zabbix
(若前面服务都起来,此处页面显示不可达,那就检查防火请和selinux,使其关闭)
输入zabbix原始密码名Admin,密码为zabbix
登陆进去界面
点击人头修改语言密码,用户名的密码并且重新登陆:
在浏览器查看(查看zabbix-server的状态,若显示已停用,点击'已停用',开启它):
zabbix-agent(rhel6.5 172.25.254.5):
[root@server ~]# yum install zabbix-agent-3.4.6-1.el6.x86_64.rpm
错误:zabbix版本要和yum源版本一致 不然就是如下结果 可以找包,本次采用适合yum源的zabbix-agent
[root@server ~]# cd /etc/zabbix/
[root@server zabbix]# ls
zabbix_agentd.conf zabbix_agentd.d
[root@server zabbix]# vim zabbix_agentd.conf
97 Server=172.25.254.72
98 ServerActive=172.25.254.72
99 hostname=server5
[root@server zabbix]# /etc/init.d/zabbix-agent start
Starting Zabbix agent: [ OK ]
错误:配置文件严格按照大小写
查看开启的服务:
zabbix-web 添加监控
方式一:自动添加
点击:动作-->自动发现
如果不添加“新的”一栏报错如下
点击:配置-->主机
方式二:手动添加
先关闭自动发现,再关闭动作,删除已经发现的主机
点击创建主机:
添加模块:
添加完毕:
f5刷新一下:
方式三:自动注册(由agent去主动发现,就算启用成功也不一定检测到,因为配置文件的原因)
删除原来的server5,重新创建
使用原因:
zabbix_server端当主机数量过多的时候,由Server端去收集数据,Zabbix会出现严重的性能问题,主要表现如下:
1、当被监控端到达一个量级的时候,Web操作很卡,容易出现502
2、图层断裂
3、开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题
所以下面主要往两个优化方向考虑:
1、添加Proxy节点或者Node模式做分布式监控
2、调整Agentd为主动模式
由于第一个方案需要增加物理机器,所以首先尝试第二方案。
具体操作:
点击:动作,自动注册,创建动作
在server5上开启zabbix-agent服务,并且更改配置文件
添加完成:(时间不长,注意配置文件)
[root@server4 zabbix]# vim zabbix_agentd.conf
97 Server=172.25.254.72
98 ServerActive=172.25.254.72 server的ip 指定数据要往哪里送
99 Hostname=server4 必须和server端添加主机时的主机名一样,这样server端接收的数据可以找到对应关心。
等一会可看到添加进去:
四:用api删除agen
用户登陆;获取agent信息;删除agent
[root@localhost ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{ "jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "westos" //在页面改过
},
"id": 1,
"auth": null
}' http://172.25.254.72/zabbix/api_jsonrpc.php | python -m json.tool//zabix-server的ip
[root@localhost ~]# chmod +x ./zabbix-api.sh
[root@localhost ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": "9c9e60d2752e9b70e96a3a3c6adaba94"
}
获取zabbix-agent的信息
[root@localhost ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"auth": "9c9e60d2752e9b70e96a3a3c6adaba94",由上面的result所得
"id": 1
}' http://172.25.254.72/zabbix/api_jsonrpc.php | python -m json.tool //zabbix-server上的
[root@localhost ~]# cat zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{ "jsonrpc": "2.0",
"method": "host.get",
"params": {
"output":["host"] },
"id": 1,
"auth": "e59d54b4075df5966076ecdc0504eb4c"//此处为上一步获得的结果
}' http://172.25.254.72/zabbix/api_jsonrpc.php | python -m json.tool
此处并无在线的agent 若有已被删除显示为
遗留问题:主机显示no space left 但df 和du -sh都有空间