10-web监控和性能调优

熊 1 阅读 监控平台

1. web场景监测概述

1.1. 网站分类概述

  1. 静态网站: 纯静态网站就是服务器的源代码和客户端的源代码一致。

  2. 动态网站: 比如:<?php phpinfo()?>每次用户访问的时候 , 内容都是在内存中动态生成的。动态网站支持登陆 , 支持用户交互 , 所以用户在请求动态网站时 , 会给客户端下发一个叫sessionID的内容 , 那么客户端则会将SessionID保存至浏览器的cookie中。

1.2 session和cookie工作原理

  1. 当用户首次访问动态网站时 , 是不会携带cookie信息 , 那么在服务端返回网页的时候 , 会给该客户端的浏览器分配一个唯一的sessionID , 客户端会该sessionID存储至浏览器的Cookie中。

  2. 当用户再次访问网站时 , 浏览器会在Header头信息添加Set-Cookie , Set-Cookie携带的则是该网站对应的sessionID信息 , 服务端接收后会进行校验

2087967-20211221164212761-1836952384

1.3 模拟网站登录

  1. 使用curl命令模拟登陆zabbix服务器 , 获取cookie, 将cookie保存至本地cook文件中

    [root@m01 ~]# curl -L -c cook -b cook 'http://10.0.0.61/zabbix/index.php'
    ​
    #-b:    cookie字符串或文件读取位置 , 使用option来把上次的cookie信息追加到http request里面去。
    #-c:    操作结束后把cookie写入到这个文件中

  2. 再次访问时 , 携带cook信息 , 同时使用-d参数携带用户以及密码 , 模拟登陆

    [root@m01 ~]# curl -L -c cook -b cook -d 'name=Admin&password=zabbix&autologin=1&enter=Sign+in' 'http://10.0.0.61/zabbix/index.php'
    ​
    #-d:    以POST的请方式携带头部信息请求

  3. 登陆zabbix服务器后 , 可以使用curl命令获取zabbix队列信息

    [root@m01 ~]# curl -L -c cook -b cook 'http://10.0.0.61/zabbix/queue.php?config=0'

2. Web场景监测实战

我们使用Zabbix Web监控来监控Zabbix的Web界面。我们想知道它是否可用、是否正常工作以及响应速度。所以我们必须使用用户名和密码登录。

  1. 创建新的Web场景

    添加一个场景来监控Zabbix的Web界面。该场景将执行多个步骤。点击配置->主机->选择主机->单击Web监测->创建Web监测

    2087967-20211221164227777-483943015

    在新的场景中 , 我们将场景命名为"监控zabbix服务器" , 并为其创建一个新的应用 (application )。

  2. 定义场景的步骤

    定义场景的步骤->点击步骤->点击添加按钮

    • Web场景步骤1 , 我们首先检查第一页响应是否正确 , 返回HTTP响应代码200 , 并包含文本Zabbix SIA。

      2087967-20211221164240239-1206698525
    • Web场景步骤2 , 我们继续登录Zabbix前端。

      2087967-20211221164251147-1044124875

      注意 ,Zabbix前端在登录时使用JavaScript重定向 , 因此首先我们必须登录 , 只有在下一步的步骤中 , 我们才能进行检查登录功能。此外 , 登录步骤必须使用完整的URL (也就是登陆时需要提交用户名以及密码等)

      还要注意我们如何使用正则表达式的变量语法获取{sid}变量(会话ID) 的内容:regex:name="sid" value="([0-9a-z]{16})"。在步骤4中会使用此变量

    • Web场景步骤3,登录后,我们现在应该验证一下是否登陆成功。为此,我们检查一个仅在登录后可见的字符串 - 例如Administration ( 管理) 。

      2087967-20211221164310362-75067989
    • Web场景步骤 4,现在我们已经验证了前端是可访问的,我们可以登录并检索登录的内容,我们也应该注销,否则 Zabbix数据库将被大量的开放会话记录所污染

      2087967-20211221164324728-1197929522
    • Web场景步骤 5,我们可以通过查找Username字符串来检查我们是否已经注销了。

      2087967-20211221164344733-1572067039

    完成步骤配置Web场景步骤的完整配置应如下所示

    2087967-20211221164401467-1550958203
  3. 保存 Web 监控场景。通过以下方式查看场景 检测中 → Web监测

    2087967-20211221164413965-1910841399
    2087967-20211221164429360-1756591341
    2087967-20211221164441245-1873325654

3.性能调优

  1. Zabbix属于写多读少的业务, 所以需要针对zabbix的MySQL进行拆分。MySQL一定要使用SSD固态盘

  2. 将Zabbix-Agent被动监控模式, 调整为主动监控模式。

  3. 使用zabbix-proxy分布式监控, 在大规模监控时用于缓解Zabbix-Server压力

  4. 去掉无用监控项, 增加监控项的取值间隔, 减少历史数据保存周期(由housekeeper进程定时清理)

  5. 针对于Zabbix-server进程调优, 谁忙就加大谁的进程数量, 具体取决实际情况, 不是越大越好

    2087967-20211221170046866-1860355231
    [root@web02 ~]# vim /etc/zabbix/zabbix_server.conf
    StartPollers=20
    StartPollersUnreachable=20
    ...
  6. 针对于Zabbix-server缓存调优, 谁的剩余内存少, 就加大它的缓存值(zabbix cache usage图表)

    2087967-20211221170059514-1986531652
    [root@web02 ~]# vim /etc/zabbix/zabbix_server.conf
    CacheSize=8M
    HistoryCacheSize=16M
    HistoryIndexCacheSize=4M
  7. 关注管理->队列, 是否有被延迟执行的监控项

    2087967-20211221170113441-1727075899


参考链接

第十章 监控系统-zabbix网站监控WEB - 年少纵马且长歌 - 博客园 (cnblogs.com)

Zabbbix之十二------Zabbix实现微信报警通知及创建聚合图形 - 一叶知秋~~ - 博客园 (cnblogs.com)

第十三章 监控系统-zabbix-API及性能优化 - 年少纵马且长歌 - 博客园 (cnblogs.com)