文章目录

  • 1. zabbix API
    • 1.1 API介绍
    • 1.2 获取令牌
    • 1.3 关闭一台节点
    • 1.4 删除一条节点
    • 1.5 创建一台主机
    • 1.6 批量创建主机
  • 2. zabbix 优化
    • 2.1 拆分数据库
    • 2.2 调主被模式
    • 2.3 使用分布式
    • 2.4 删除无用监控项
    • 2.5 进程调优
    • 2.6 缓存调优
    • 2.7 检查延迟队列
  • 3.Grafana
    • 3.1 什么是Grafana
    • 3.2 Grafana安装配置
    • 3.3 Grafana配置数据源
      • 3.3.1 安装插件
      • 3.3.2 启用插件
      • 3.3.3 配置数据源
    • 3.4 Granfana数据展示
      • 3.4.1 创建文件夹
      • 3.4.2 创建CPU图形
      • 3.4.3创建内存图形
      • 3.4.4 创建流量图形
      • 3.4.5 创建告警面板
    • 3.6 Grafana变量使用
      • 3.6.1 创建变量
      • 3.6.2 使用变量
      • 3.7 Grafana模版使用

1. zabbix API

1.1 API介绍

web界面操作zabbix,就是点击页面按钮,点鼠标;而通过api操作,其实就是通过curl命令来完成点鼠标的操作,相当于命令行执行。

1.2 获取令牌

在使用zabbix-api之前,先获取一个token

[root@zabbix-proxy ~]# curl -s -X POST -H 'Content-Type:application/json' -d '> {> "jsonrpc": "2.0",> "method": "user.login",> "params": {> "user": "Admin",> "password": "zabbix"> },> "id": 1,> "auth": null> }' http://zabbix.panpancar.com/api_jsonrpc.php{"jsonrpc":"2.0","result":"886b0361b6691b8aecbdda028e058bdf","id":1}

1.3 关闭一台节点

#使用token验证身份,并禁用某一台主机curl -s -X POST -H 'Content-Type:application/json' -d '{"jsonrpc": "2.0","method": "host.update","params": {"hostid": "10437","status": 1},"auth":"886b0361b6691b8aecbdda028e058bdf","id": 1}' http://zabbix.panpancar.com/api_jsonrpc.php

1.4 删除一条节点

#使用API方式删除一台主机curl -s -X POST -H 'Content-Type:application/json' -d '{"jsonrpc": "2.0","method": "host.delete","params": ["11697","11699"],"auth": "886b0361b6691b8aecbdda028e058bdf","id": 1}' http://zabbix.panpancar.com/api_jsonrpc.php

1.5 创建一台主机

#使用API方式创建一台主机curl -s -X POST -H 'Content-Type:application/json' -d '{"jsonrpc": "2.0","method": "host.create","params": {"host": "Linux server","interfaces": [{"type": 1,"main": 1,"useip": 1,"ip": "192.168.3.1","dns": "","port": "10050"}],"groups": [{"groupid": "50"}],"tags": [{"tag": "Host name","value": "Linux server"}],"templates": [{"templateid": "20045"}],"macros": [{"macro": "{$USER_ID}","value": "123321"},{"macro": "{$USER_LOCATION}","value": "0:0:0","description": "latitude, longitude and altitude coordinates"}],"inventory_mode": 0,"inventory": {"macaddress_a": "01234","macaddress_b": "56768"}},"auth": "886b0361b6691b8aecbdda028e058bdf","id": 1}' http://zabbix.panpancar.com/api_jsonrpc.php

1.6 批量创建主机

[root@zabbix-proxy ~]# cat zabbix_create.sh#loginGetToken=$(curl -s -X POST -H 'ContentType:application/json' -d '{"jsonrpc": "2.0","method": "user.login","params": {"user": "Admin","password": "zabbix"},"id": 1}' http://zabbix.panpancar.com/api_jsonrpc.php)# result tokenToken=$(echo $GetToken|awk -F ',' '{print$2}'|awk -F '"' '{print $4}')while read line;docurl -s -X POST -H 'ContentType:application/json' -d '{"jsonrpc": "2.0","method": "host.create","params": {"host": '\"$line\"',"interfaces": [{"type": 1,"main": 1,"useip": 1,"ip": '\"$line\"',"dns": "","port": "10050"}],"groups": [{"groupid": "2"}],"templates": [{"templateid": "10001"}]},"auth": '\"$Token\"',"id": 1}' http://zabbix.panpancar.com/api_jsonrpc.php | python -m json.tooldone < /tmp/ip.txt

2. zabbix 优化

2.1 拆分数据库

zabbix属于写多读少的业务,可以对za’bbix的mysql数据库进行拆分

2.2 调主被模式

将zabbix-agent被动监控模式,调整为主动监控模式

2.3 使用分布式

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

2.4 删除无用监控项

去掉无用监控项,增加监控项的取值间隔,减少历史数据保存周期(由housekeeper进程定时清理) 增大监控项取值间隔:60s,1h,1d

2.5 进程调优

针对zabbix-server进程调优,将比较繁忙的进程数量进行调大,具体取决于实际情况,不是越大越好

StartPollersUnreachable=50

2.6 缓存调优

针对zabbix-server 缓存调优,将剩余内存较少缓存值增大,通过(zabbix cache usage图表观察)

CacheSize=128M

2.7 检查延迟队列

管理→队列,查看是否有延迟执行的监控项

3.Grafana

3.1 什么是Grafana

Grafana是一个图形展示工具,它本身并不存储任何数据,数据都是从配置的“数据源”获取的; Grafana支持从zabbix中获取数据,然后进行图形展示;

3.2 Grafana安装配置

1.安装Grafana

[root@zabbix-server ~]# wget https://dl.grafana.com/oss/release/grafana-9.1.6-1.x86_64.rpm[root@zabbix-server ~]# sudo yum install grafana-9.1.6-1.x86_64.rpm[root@zabbix-server ~]# systemctl enable grafana-server[root@zabbix-server ~]# systemctl start grafana-server

2.通过浏览器访问Grafana,Grafana监听在3000端口上,默认登录用户和密码都是admin

3.3 Grafana配置数据源

3.3.1 安装插件

由于Grafana默认不支持读取Zabbix的,所以需要安装zabbix相关的插件 插件下载地址:https://github.com/alexanderzobnin/grafana-zabbix

[root@zabbix-server ~]# grafana-cli plugins list-remote[root@zabbix-server ~]# grafana-cli plugins list-remote | grep -i zabbix[root@zabbix-server ~]# grafana-cli plugins install alexanderzobnin-zabbix-app#插件安装有时候比较慢,可以下载zabbix插件放到/var/lib/grafana/plugins, 解压#完成后需要重启grafana,注意插件目录权限,granfana使用grafana用户启动[root@zabbix-server ~]# systemctl restart grafana-server

3.3.2 启用插件

  • Grafana启用Zabbix插件:
  • 点击→configuration →Plugins→ zabbix → enable

3.3.3 配置数据源

  • configuration → Add data source → zabbix → settings

    • 1、配置http协议地址(http://zabbix.panpancar.com/api_jsonrpc.php)
    • 2、配置Zabbix Api details,输入用户名及密码
    • 3、点击save&test

3.4 Granfana数据展示

先创建文件夹,然后在文件夹中创建各种图形;创建一定要点save

3.4.1 创建文件夹

Dashboards → Manage → New folder → 填写名称(Monitor) → Create Dashboard

3.4.2 创建CPU图形

  • Add an empty panel → Data source → zabbix
  • Query(数据查询)
    • Group:Zabbix servers
    • Host::Zabbix server
    • Application: CPU
    • Item:获取负载(/Load/)、获取时间(/time)
  • 图形美化
    • Title: CPU 平均负载
    • Tooltip mode: ALL(展示所有指标的数据)、Single(展示选中的单个指标数据)
    • Unit: CPU负载图形部需要单位(Misc-none)、CPU时间要显示为百分比(Misc-Percent)

3.4.3创建内存图形

  • Query A

    • Group: zabbix servers
    • Host: zabbix server
    • Application: Memory
    • Item: Total Memory
  • Query B

    • Group: zabbix servers
    • Host: zabbix server
    • Application: Memory
    • Item: Available memory
  • 图形美化

    • 选择Pie chart图形
    • Title: 内存使用占比
    • unit: 单位选择: data → bytes(IEC)
    • Lable: 标签选择(name、value)
    • Legend values:数据使用展示选择(value、Percent)

3.4.4 创建流量图形

  • Query A
    • Group: zabbix servers
    • Host: zabbix server
    • Application: Interface eth0
    • Item: /Bits/
  • 图形美化
    • Title: eth0进出流量
    • unit:单位选择: data → Unit/sec(SI)
    • Legend values: 数据使用展示选择 (Last、Min、Max)

3.4.5 创建告警面板

  • Query Mode: Problems
  • Visualizations:zabbix problems
  • Title: zabbix告警展示

3.6 Grafana变量使用

单台服务器的图形比较好展示,但多台服务器的图形就需要从头到尾创建一次比较麻烦; 所以可以使用变量的方式获取对应的主机组,以及主机,然后基于变量来完成图形创建;

3.6.1 创建变量

Dashboard Settings → Variables

  • 设置主机组变量

    • Name: 定义名称Group
    • Data source: 选择zabbix
    • Refresh: 跟随时间而变化 on time range change
    • Query Type: 选择Group
    • Group: 提取所有组的正则表达式: /.*/
    • Selection Options: 全部打开
    • Preview of values: 会显示所有的主机组
  • 设置主机变量:

    • Name: 定义名称Host
    • Data Source: 选择zabbix
    • Refresh: 跟随时间而变化 on time range change
    • Quey Type: 选择Host
    • Group: 提取所有组的正则表达式:/.*/
    • Host: 提取所有主机的正则表达式:/.*/
    • Selection Options: 全部打开
    • Preview of values: 会显示所有的主机
  • 设置完成后记得Save保存

3.6.2 使用变量

将此前创建的CPU负载图形,修改为变量方式,这样就更灵活;

  • Query A
    • Group: $Group
    • Host: $Host
    • Application: CPU
    • Item: /Load/
  • Title: $Group $Host CPU平均负载

3.7 Grafana模版使用

  • 导入模版: 点击 + → import 监控Linux模版: ID:5363 Zabbix – Full Server Status
  • 导出模版: 点击需要导出的图形 → share → Export→ save to file