概述
- Zabbix 是一个企业级分布式开源监控解决方案。
- Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix
使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix
基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。 - Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于
Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix
可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。
我们这里选择4.4版本的进行实验
yum install mariadb-server -y 安装zabbix所需要的初始化的数据库
安装下面这些rpm包,比较全面。
启动
安全初始化mariadb:
mysql_secure_installation
登陆:
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; 创建zabbix的库
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'caoaoyuan';
#导入初始化的一些表和数据。
zcat /usr/share/doc/zabbix-server-mysql-4.4.1/create.sql.gz | mysql -uzabbix -p zabbix
zabbix 库的数据就导入进去了。
配置zabbix
vim /etc/zabbix/zabbix_server.conf
启动zabbix:
[root@server1 4.4]# systemctl start zabbix-server.service
[root@server1 4.4]# systemctl start zabbix-agent.service 客户端
修改php配置:
vim /etc/httpd/conf.d/zabbix.conf
systemctl start httpd 启动apache
访问:
进入到了开始界面,
登陆名称Admin ,密码zabbix。
用户中心可以更改语言:
这里我们可以看到本机是因为我们安装了zabbix-agent,所以如果想加入进来,就安装agent服务。
我们现在加入server2 作为客户端。
scp zabbix-agent-4.4.1-1.el7.x86_64.rpm server2:
yum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y
server1中点击创建主机:
点击添加。
添加一个模板。
在server2中配置一下agent:
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.254.1
ServerActive=172.25.254.1 active时主动模式
Hostname=server2
systemctl start zabbix-agent.service 开启服务
就可用了,上面的可用性是空的,开启agent服务后,就可用了。
这样就把server2加入到集群中去了。
向监控中添加主机
在zabbix中添加主机有几种方法,一种就是上面介绍的,点击添加新主机,这样是比较慢的,所以我们可以:
自动发现
我们先删除上面的server2主机。
设置动作为自动发现,并确认已经激活,右下角本来是停用,点一下旧成以启用了,
然后点击做端的 Auto discovery,Linux servers 进行条件设置:
启用自动发现规则:
点击local network配置自动发现规则:
保证我们的server2山的agent服务是开启的,然后我们等待30s:
就自动把server2添加进去了。
而且是可用的,
自动注册
自动发现,是server主动把一个网段ip的主机加入进来,自动注册不同于自动发现的是server被动接收gent客户机的加入请求,agent是主动的。使用自动发现,必须先禁用自动发现
我们开启server3主机,
server3上安装agent
yum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y
配置文件:
Server=172.25.254.1
ServerActive=172.25.254.1
Hostname=server3
启动客户端。
检查确认这时server3没有被自动发现加进去。
禁用当前动作,创建自动注册新动作。
添加动作,添加操作:
点击添加。
就启用了,重启服务端和客户端。
就添加进来了。
并且可用。
使用API接口
你就可以使用远程HTTP请求来调用API.
编写脚本,执行api请求:
vim zabbix-api
chmod +x zabbixapi
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool #以json格式输出
-H 头 -s忽略详细信息 -d 具体内通
执行:API返回的响应将包含用户身份验证令牌:
检索主机
我们现在有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据。 例如,让我们使用 host.get 方法检索所有已配置主机的ID,主机名和接口 :
vim zabbix-api
curl -s XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "deeda641a01c0e21dc7f67b107927aba" #这里为上面生成的令牌
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
就检索到了我们当前zabbix里面的主机信息。
删除一个主机
vim zabbix-api
rl -s XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10309" #这里是主机的id号
],
"id": 2,
"auth": "deeda641a01c0e21dc7f67b107927aba"
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
##主机id号
执行:
server3 就被删除了,即刻生效。
创建主机
vim zabbix-api
curl -s XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server3", 主机名
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.254.3", 地址
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2" 组id
}
],
"templates": [
{
"templateid": "10001" 模板id
}
]
},
"id": 2,
"auth": "deeda641a01c0e21dc7f67b107927aba"
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
执行:
server3就又加进来了。
配置监控
在server2上添加模板:
它都可以监控那些内容。
在server3上配置nginx,来测试监控nginx.
编译安装nginx,更改配置文件:
设置关于查看状态的配置。
可以获得到状态信息了。
那末现在比如我们要获取Active connections 的信息,那我们该如何配置:
我们进入用户自定义配置的目录:
[root@server3 nginx]# cd /etc/zabbix/zabbix_agentd.d/
[root@server3 zabbix_agentd.d]# ls
userparameter_mysql.conf
[root@server3 zabbix_agentd.d]# cp userparameter_mysql.conf userparameter_nginx.conf
[root@server3 zabbix_agentd.d]# ls
userparameter_mysql.conf userparameter_nginx.conf
vim userparameter_nginx.conf
nginx.active 是key 逗号后面是值。重启server3的 agent 端
然后在server1上安装:
yum install -y zabbix-get-4.4.1-1.el7.x86_64.rpm -y
就可以通过zabbix-get 这个命令可以获取到了。
然后我们在server1的图形界面去进行配置server3的监控项:
主机上点击server3,再点击监控项,,点击右边的创建监控项:
在添加图形,选择nginx-active监控项:
预览:
有1这个数值。有乱码问题,系统自带的无法识别中文。
我们可以去/usr/share/zabbix/assets/fonts 替换字体:
然后再字体配置文件中更改即可。
vim /usr/share/zabbix/include/defines.inc.php
在里面执行:
:%s/graphfont/simkai/g
这样就可以自己配置想要的监控了。
用模板监控数据库
我们server1上安装了数据库,所以在server1的agent进行配置
没有创建数据库模板是一共有112个监控项,添加一个数据库模板之后:
就变成151个了。
但是对于企业来说这增加的39个是远远不够的,所以我们用percona这个解决方案,它可以自定义模板,且能使用的第三方插件比较多,可以和很多软件进行搭配。
在server1上:
建立zabbix监控mysql的配置目录,用来放配置文件。也是zabbix默认的zabbix-agent 家目录
mkdir /var/lib/zabbix
vim /var/lib/zabbix/.my.cnf
[mysql]
host=localhost
user=root
password=redhat
socket=/var/lib/mysql.sock
[mysqladmin]
host=localhost
user=root
password=redhat
socket=/var/lib/mysql.sock
systemctl restart zabbix-agent.service
这时我们只需要把oercona的模板写进目录中去就可以了。里面大约有150多个监控项。
我们先安装zabbix对precona的一个支持: 可以在pkgs上下载。
它的模板放在 /var/lib/zabbix/percona/templates
.xml文件是模板。
里面有190个键值。比较全面。
复制这个模板文件到 agent 的自定义目录:
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
在scripts目录创建配置文件:
重启agent。
然后我们在图形界面去配置.
导入模板,这个模板在/var/lib/zabbix/percona/templates下。导入后给server1添加这个模板,就成300多个了。
然后我们的监控项里面会多出很多内容,丰富了我们的监控。