zabbix(监控) - API、对 nginx 的监控

目录

  • 1. API
      • 1.1 API的简介
      • 1.2 API的应用
          • 1.2.1 验证 API 请求
          • 1.2.2 远程查看监控主机
          • 1.2.3 删除监控主机
          • 1.2.4 创建监控主机
  • 2. 对 httpd、nginx 的监控
      • 2.1 配置agent端环境
          • 2.1.1 web页面上给server2主机添加http模块
          • 2.1.2 在server3上配置nginx服务
      • 2.2 自定义配置监控项
          • 2.2.1 获取活跃的连接数
          • 2.2.2 获取接受请求数

1. API

1.1 API的简介

  1. API定义
    API(Application Programming Interface),应用程序编程接口,是一些预先定义的函数;
    目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部的工作机制的细节;
    简单来说,API就是对外的接口,利用API可以直接到达软件硬件内部来进行操作。
  2. Zabbix中的API
    Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时。很难想象管理数千台服务器而没有自动化是多么的困难。Zabbix API为批量操作、第三方软件集成以及其他作用提供可编程接口。
  • Zabbix API 是基于 Web 的 API,作为 Web 前端的一部分提供。
    a. API 包含一组独立的方法
    b. 客户端和 API 之间的请求和响应通过使用 JSON 格式进行编码
  1. Zabbix API 的方法
检索 get
创建 create
更新 update
删除数据 delete
  1. Zabbix API的作用
    zabbix拥有完善的API,基于JSON RPC提供资产,主机,主机组,监控项,告警等方面的接口。
    在做运维自动化时,需要用API功能对zabbix二次开发。
    Zabbix API为批量操作,第三方软件集成以及其他作用提供可编程接口。
    Zabbix API提供两项主要功能:
    1>远程管理Zabbix配置
    2>远程检索配置和历史数据
  2. Zabbix API 的应用
    Zabbix API 允许我们通过编程的方式检索和修改 Zabbix 的配置,并提供对历史数据的访问。
    它广泛应用于:
    创建新的应用程序来使用 Zabbix
    将 Zabbix 与第三方软件集成
    自动执行常规任务
  3. Zabbix API的工作流程如下:
    API采用JSON-RPC实现这意味着调用任何函数,都需要向POST请求,输入输出数据都是以JSON格式
    转备JSON对象,它描述了你想要做什么,比如创建主机、获取JSON格式响应.

1.2 API的应用

1.2.1 验证 API 请求
user.login 用户登录
host.get(create delete
hostgroup.get(create|delete|update) 主机组操作
item.get(create|delete|update) 监控项目操作
history.get 历史数据查询
event.get 事件查询
trigger.get 触发器查询
[root@server1 ~]# ./zabbix-api
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://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# chmod +x zabbix-api
[root@server1 ~]# ./zabbix-api
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "dcfd223f76cc30d944133cc07f2300b5"
}

zabbix(监控) - API、对 nginx 的监控_第1张图片
zabbix(监控) - API、对 nginx 的监控_第2张图片

1.2.2 远程查看监控主机

当前有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据

[root@server1 ~]# 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": 1,
    "auth": "dcfd223f76cc30d944133cc07f2300b5"
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool

zabbix(监控) - API、对 nginx 的监控_第3张图片
zabbix(监控) - API、对 nginx 的监控_第4张图片

1.2.3 删除监控主机
[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
        "10308"
    ],
    "id": 2,
    "auth": "dcfd223f76cc30d944133cc07f2300b5"
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool

zabbix(监控) - API、对 nginx 的监控_第5张图片

zabbix(监控) - API、对 nginx 的监控_第6张图片

1.2.4 创建监控主机
[root@server1 ~]# 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": "192.168.1.13",   ## 主机IP
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "2"      ##主机群组 id
            }
        ],
        "templates": [
            {
                "templateid": "10001"    ## 模板 id
            }
        ]

    },"id": 1,
    "auth": "dcfd223f76cc30d944133cc07f2300b5"    ## 身份验证牌
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool

zabbix(监控) - API、对 nginx 的监控_第7张图片

zabbix(监控) - API、对 nginx 的监控_第8张图片
在这里插入图片描述

2. 对 httpd、nginx 的监控

2.1 配置agent端环境

2.1.1 web页面上给server2主机添加http模块

zabbix(监控) - API、对 nginx 的监控_第9张图片
zabbix(监控) - API、对 nginx 的监控_第10张图片

2.1.2 在server3上配置nginx服务
[root@server3 ~]# tar zxf nginx-1.18.0.tar.gz  #解压
[root@server3 ~]# ls
 nginx-1.18.0  nginx-1.18.0.tar.gz
[root@server3 ~]# cd nginx-1.18.0/
[root@server3 nginx-1.18.0]# vim auto/cc/gcc 
[root@server3 nginx-1.18.0]# yum install -y gcc pcre-devel zlib-devel   #安装所需插件
[root@server3 nginx-1.18.0]# ./configure --help | grep status
  --with-http_stub_status_module     enable ngx_http_stub_status_module
[root@server3 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
[root@server3 nginx-1.18.0]# make && make install
[root@server3 nginx-1.18.0]# cd  /usr/local/nginx/conf/
[root@server3 conf]# vim /usr/local/nginx/conf/nginx.conf
          location /status {
                  stub_status on;    #开启该模块
                  access_log off;    #关闭日志记录
                  allow 127.0.0.1;   #白名单 只允许本机访问
                  deny all;
         }
[root@server3 nginx]# sbin/nginx -t   #检测语法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server3 nginx]# sbin/nginx    #启动
[root@server3 conf]# curl http://127.0.0.1/status    #检测是否部署成功
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 

zabbix(监控) - API、对 nginx 的监控_第11张图片
zabbix(监控) - API、对 nginx 的监控_第12张图片
zabbix(监控) - API、对 nginx 的监控_第13张图片
zabbix(监控) - API、对 nginx 的监控_第14张图片

zabbix(监控) - API、对 nginx 的监控_第15张图片
zabbix(监控) - API、对 nginx 的监控_第16张图片

2.2 自定义配置监控项

2.2.1 获取活跃的连接数
[root@server3 ~]# curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'      #获取活跃的连接数的数值
1
[root@server3 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@server3 zabbix_agentd.d]# ls
userparameter_mysql.conf   #将mysql服务的监控模版给nginx服务复制一份
[root@server3 zabbix_agentd.d]# cp userparameter_mysql.conf userparameter_nginx.conf
[root@server3 zabbix_agentd.d]# ls
userparameter_mysql.conf  userparameter_nginx.conf
[root@server3 zabbix_agentd.d]# vim userparameter_nginx.conf 
[root@server3 zabbix_agentd.d]# cat userparameter_nginx.conf   #获取活跃连接数,nginx.active为健值,获得的连接数为value值
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
[root@server3 zabbix_agentd.d]# systemctl restart zabbix-agent.service   #重启服务

zabbix(监控) - API、对 nginx 的监控_第17张图片

  • 在server1下载软件zabbix-get,来获取server3的活跃连接数
    zabbix_get 是 zabbix 服务端的一个命令,用于检测 agent 端的配置是否正确,可以很方便地知道 key 是否能正常获取到数据
    在测试自定义监控的时候特别有用
[root@server1 4.4]# yum install -y zabbix-get-4.4.1-1.el7.x86_64.rpm
[root@server1 4.4]# zabbix_get -s 172.25.254.3 -p 10050 -k "nginx.active"

zabbix(监控) - API、对 nginx 的监控_第18张图片
在这里插入图片描述

  • 在web界面添加nginx的监控
    zabbix(监控) - API、对 nginx 的监控_第19张图片
    zabbix(监控) - API、对 nginx 的监控_第20张图片
    zabbix(监控) - API、对 nginx 的监控_第21张图片
  • 修改字体
[root@server1 ~]#  find / -name fonts
/boot/grub2/fonts
/run/media/root/RHEL-7.6 Server.x86_64/EFI/BOOT/fonts
/etc/fonts
/usr/lib64/firefox/fonts
/usr/share/doc/HTML/common/fonts
/usr/share/fonts
/usr/share/X11/fonts
/usr/share/cockpit/base1/fonts
/usr/share/cockpit/static/fonts
/usr/share/yelp/mathjax/fonts
/usr/share/yelp/mathjax/jax/output/HTML-CSS/fonts
/usr/share/zabbix/assets/fonts
/usr/include/X11/fonts
/westos/EFI/BOOT/fonts
[root@server1 ~]# cd /usr/share/zabbix/assets/
[root@server1 assets]# ls
fonts  img  styles
[root@server1 assets]# cd fonts/
[root@server1 fonts]# ls
graphfont.ttf
[root@server1 fonts]# mv /root/Desktop/simkai.ttf /usr/share/zabbix/assets/fonts/
[root@server1 fonts]# ls
graphfont.ttf  simkai.ttf
[root@server1 fonts]# cd /usr/share/zabbix/include/
[root@server1 include]# vim defines.inc.php     #编辑文件
:%s/graphfont/simkai/g    #将graphfont替换为simkai(全文有两处)

zabbix(监控) - API、对 nginx 的监控_第22张图片
zabbix(监控) - API、对 nginx 的监控_第23张图片
zabbix(监控) - API、对 nginx 的监控_第24张图片

  • 新添加监控项

zabbix(监控) - API、对 nginx 的监控_第25张图片
在这里插入图片描述
web界面添加新的监控项
zabbix(监控) - API、对 nginx 的监控_第26张图片
zabbix(监控) - API、对 nginx 的监控_第27张图片
zabbix(监控) - API、对 nginx 的监控_第28张图片

2.2.2 获取接受请求数
  • 压力测试
root@server1 include]# zabbix_get -s 192.168.1.13 -p 10050 -k "nginx.accept"
[root@server1 include]# cd /usr/share/zabbix/assets/fonts/
[root@server1 fonts]# ls
graphfont.ttf  simkai.ttf
[root@server1 fonts]# chmod 777 simkai.ttf    #注意文件权限,解决字体乱码
[root@server1 fonts]# ll
total 4040
lrwxrwxrwx. 1 root root      33 Aug 27 02:10 graphfont.ttf -> /etc/alternatives/zabbix-web-font
-rwxrwxrwx  1 root root 4135804 May 19 11:28 simkai.ttf
[root@server3 zabbix_agentd.d]#  curl -s http://127.0.0.1/status
Active connections: 1 
server accepts handled requests
 1225 1225 1225 
Reading: 0 Writing: 1 Waiting: 0 

zabbix(监控) - API、对 nginx 的监控_第29张图片
zabbix(监控) - API、对 nginx 的监控_第30张图片

你可能感兴趣的:(nginx,zabbix,运维)