监控日志 - 2.Zabbix 监控(上)
百度百科介绍:
zabbix是一个基于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等平台上。
安装服务端
1)安装数据库
[ ]
...略
[ ]
[ ]
2020-07-30T03:45:32.132025Z 1 [Note] A temporary password is generated for root@localhost: jq;M<KxkP7b=
[ ]
...略
[ ]
Enter password:
...略
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'Zabbix111!';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> exit
Bye
2)安装zabbix服务端
[ ]
...略
[ ]
Enter password:
[ ]
[ ]
php_value date.timezone Asia/Shanghai
[ ]
[ ]
...略
DBHost=localhost
...略
DBPassword=Zabbix111!
...略
[ ]
[ ]
3)Web 页面安装
访问http://10.0.0.11/zabbix/
下一步,检查前提条件
下一步,配置数据库连接
下一步,下一步,完成
登陆,默认用户名/密码:Admin/zabbix
手动添加一个客户端
Zabbix agent分为主动和被动模式,默认是被动模式,应答server的数据请求;
如果将配置文件里的StartAgents参数设置成0,就是主动模式,主动模式的agent首先从sever索取监控项列表以进行独立处理,然后会定期发送采集到的新值给server。
1)客户端安装agent
[root@node2 ~]# yum install -y zabbix-agent
...略
[root@node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
[root@node2 ~]# cat /etc/zabbix/zabbix_agentd.conf
...略
StartAgents=0
...略
Server=10.0.0.11
...略
ServerActive=10.0.0.11
...略
Hostname=node2
...略
[root@node2 ~]# systemctl start zabbix-agent
[root@node2 ~]# systemctl enable zabbix-agent
2)Web 页面添加客户端node2
创建一个Host group
创建一个Host
链接Template OS Linux by Zabbix agent active模板
查看主机
查看node2的有效内存图表
自动化添加客户端
1)agent自动注册
以node3为例
[root@node3 ~]# yum install -y zabbix-agent
...略
[root@node3 ~]# vim /etc/zabbix/zabbix_agentd.conf
[root@node3 ~]# cat /etc/zabbix/zabbix_agentd.conf
...略
Server=10.0.0.11
...略
ServerActive=10.0.0.11
...略
Hostname=node3
...略
HostMetadataItem=system.uname
...略
[root@node3 ~]# systemctl start zabbix-agent
[root@node3 ~]# systemctl enable zabbix-agent
Web 页面设置
创建一个Action,注意Event source要选择Auto registration
添加Operations:Add host、Add to host groups、Link to templates
等一会就可以看到node3已经注册了
查看node3的cpu图表
2)网络发现
首先关闭自动注册
下面通过网络发现添加一台处于主动模式的客户端node4
[root@node4 ~]# yum install -y zabbix-agent
...略
[root@node4 ~]# vim /etc/zabbix/zabbix_agentd.conf
[root@node4 ~]# cat /etc/zabbix/zabbix_agentd.conf
...略
Server=10.0.0.11
...略
ServerActive=10.0.0.11
...略
Hostname=node4
...略
HostMetadataItem=system.uname
...略
[root@node4 ~]# systemctl start zabbix-agent
[root@node4 ~]# systemctl enable zabbix-agent
Web 页面设置
配置发现规则
创建一个Action,注意Event source要选择Discovery
添加条件
添加Operations:Add host、Add to host groups、Link to templates
等一会查看node4是否注册
查看node4的图表
用Zabbix API 添加主机
Zabbix 的所有操作都可以通过请求API完成,这里只介绍添加主机;
关于API的用法,可以参考官网: https://www.zabbix.com/documentation/4.4/manual/api ;
以添加node4为例,
先要关闭网络发现及动作
删除已经注册的node4
查看API版本
[root@node4 ~]
{
"id": 1,
"jsonrpc": "2.0",
"result": "4.4.10"
}
获取认证的session id,后面的请求都要带上这个id
[ ]
[ ]
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}
[ ]
{
"id": 1,
"jsonrpc": "2.0",
"result": "7ae3bcee13a43ffb01cd22e1bfc3e91d"
}
获取当前主机信息
[root@node4 ~]# vim get_hostid.json
[root@node4 ~]# cat get_hostid.json
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "7ae3bcee13a43ffb01cd22e1bfc3e91d"
}
[root@node4 ~]# curl -s -X POST -H 'Content-Type:application/json' -d @get_hostid.json http://10.0.0.11/zabbix/api_jsonrpc.php | python -m json.tool
{
"id": 2,
"jsonrpc": "2.0",
"result": [
{
"host": "Zabbix server",
"hostid": "10084",
"interfaces": [
{
"interfaceid": "1",
"ip": "127.0.0.1"
}
]
},
{
"host": "node2",
"hostid": "10318",
"interfaces": [
{
"interfaceid": "2",
"ip": "10.0.0.12"
}
]
},
{
"host": "node3",
"hostid": "10319",
"interfaces": [
{
"interfaceid": "3",
"ip": "10.0.0.13"
}
]
}
]
}
获取Host groups demo的ID
[root@node4 ~]# vim get_groupid.json
[root@node4 ~]# cat get_groupid.json
{
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": "extend",
"filter": {
"name": [
"demo"
]
}
},
"auth": "7ae3bcee13a43ffb01cd22e1bfc3e91d",
"id": 3
}
[root@node4 ~]# curl -s -X POST -H 'Content-Type:application/json' -d @get_groupid.json http://10.0.0.11/zabbix/api_jsonrpc.php | python -m json.tool
{
"id": 3,
"jsonrpc": "2.0",
"result": [
{
"flags": "0",
"groupid": "15",
"internal": "0",
"name": "demo"
}
]
}
获取Template OS Linux by Zabbix agent模板的ID
[root@node4 ~]# vim get_templateid.json
[root@node4 ~]# cat get_templateid.json
{
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend",
"filter": {
"host": [
"Template OS Linux by Zabbix agent"
]
}
},
"auth": "7ae3bcee13a43ffb01cd22e1bfc3e91d",
"id": 4
}
[root@node4 ~]# curl -s -X POST -H 'Content-Type:application/json' -d @get_templateid.json http://10.0.0.11/zabbix/api_jsonrpc.php | python -m json.tool | grep templateid
"templateid": "10001",
添加node4
[root@node4 ~]# vim create_host.json
[root@node4 ~]# cat create_host.json
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "node4",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "10.0.0.14",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "15"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "7ae3bcee13a43ffb01cd22e1bfc3e91d",
"id": 5
}
[root@node4 ~]# curl -s -X POST -H 'Content-Type:application/json' -d @create_host.json http://10.0.0.11/zabbix/api_jsonrpc.php | python -m json.tool
{
"id": 5,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10321"
]
}
}
查看是否已创建
查看其内存图表