文章目录
- 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