开源监控软件-----zabbix (一)
一、安装zabbix
准备工作:两台redhat7.3的虚拟机,zabbix的相关rpm包
具体的操作步骤可以访问zabbix的官方网站,上面有针对不同系统,不同版本的zabbix软件的安装教程,且一定比我所述清晰。
https://www.zabbix.com/documentation/4.0/zh/manual/installation/install_from_packages/rhel_centos
这个链接是针对zabbix4.0版本的安装及环境配置
1.下载相关的安装包(在zabbix的官方网站下载)
查看zabbix的相关信息:
curl -s -XPORT -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.6.1/zabbix/api_jsonrpc.php |python -m json.tool
输出:
[[email protected] ~]# sh zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": "70dab0fbbf0a0fd0d9714a99e8e77627"
}
相应对象包含一下的属性:
jsonrpc是JSON-RPC协议的版本
result 是方法返回的数据
id 是相应请求的标示符
查看zabbix监控的主机
脚本:
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth":"70dab0fbbf0a0fd0d9714a99e8e77627"
}' http://172.25.6.1/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": "server2",
"hostid": "10265",
"interfaces": [
{
"interfaceid": "4",
"ip": "172.25.6.2"
}
]
}
]
}
可以看到上面的输出有两个主机。
创建主机
脚本:
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.6.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
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.6.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
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.6.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
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.6.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
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.6.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
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.6.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "70dab0fbbf0a0fd0d9714a99e8e77627",
"id": 1
}' http://172.25.6.1/zabbix/api_jsonrpc.php | python -m json.tool
输出:
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10266"
]
}
}
此时查看zabbix的web网页发现:
server2已经加上了
删除主机:
脚本:
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10266" 这里的10266是上面创建主机时候输出的host-id
],
"auth": "70dab0fbbf0a0fd0d9714a99e8e77627",
"id": 1
}' http://172.25.6.1/zabbix/api_jsonrpc.php | python -m json.tool
输出:
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10266"
]
}
}
查看zabbix客户端:
此时客户端上只有Zabbix server主机
在实际的工作中可以使用api的方式批量创建主机,节省时间。
实验3:
在sever2上添加http监控项:
在server2的模板上添加Template App HTTP Service模板
测试:
查看server2上的监控项:
发现此时没有报错:
关闭server2上的httpd
发现报错。
在server2上的zabbix的监控上自定义监控项
实验4:
编辑脚本实现自定义监控和自定义图表:
1.在server2上实验
步骤一、在server2上安装nginx,可以在网上下载资源,将nginx的包解压
tar xf nginx-1.14.0.tar.gz ##这里我用的是nginx1.14.0版本的包
在安装nginx之前必须要进行的操作就是将nginx的debug模式注释掉
vim /auto/cc/gcc
安装源码编译所需要的软件包
yum intall gcc zlib-devel prec-devel -y
然后就是源码安装的三部曲:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module ###要加上后面这个模组
make &&make install
安装好nginx之后为nginx的启动设置软链接:
ln -s /usr/local/nginx/sbin/nginx /usr/sbin
编辑nginx的配置文件:
在第47行加上下面的语句:
location /status {
stub_status on; ###这里是开启stub_status模块
access_log off; ###关闭此服务的日志
allow 127.0.0.1; ###允许本机
deny all; ###只允许本机
}
检查nginx的配置文件的语句:
nginx -t
显示上面的语句表示nginx的配置文件的语句是没有错误的。
nginx ###开启nginx软件
此时nginx就支持查询了:
查询的是本机的状态,上面的这个Active是,本机的并发数:
此时只有一个,上面所述的模块就是一个接口,我们可以用这个接口取出来当前nginx服务的一些数据:
然后用zabbix来进行监控,进而实时掌控自己公司的服务器情况,并及时处理错误:
下面介绍zabbix怎么来监控上面nginx接口传出来的 数据:
进入到下面的路径下:
cd /etc/zabbix/zabbix_agentd.d
将原始的默认脚本复制到新的脚本,进行更改:
cp userparameter_mysql.conf userparameter_nginx.conf
vim userparameter_nginx.conf 文件中写入:
UserParameter=nginx.active,curl -s http://127.0.0.1/status |grep Active|awk '{print $3}'
UserParameter=nginx.accept,curl -s http://127.0.0.1/status |awk NR==3|awk '{print $3}'
重启zabbix-agent客户端:
systemctl restart zabbix-agent
在server1上安装软件zabbix-get
yum install zabbix-get -y
测试:
上面可以看到不同的get方法可以拿到不同的值。
在zabbix的客户端上加上监控项,监控nginx的并发量和访问量。
点击server2的监控项,创建监控项:nginx_accept he nginx_active
创建之后可以看到
监控项下面:
再创建图形:将监控到的nginx的信息以图像的方式显示出来
查看图形: