开源监控软件-----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

输出:

[root@server1 ~]# 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的信息以图像的方式显示出来

查看图形:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值