七、Zabbix调优和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
#login
GetToken=$(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 token
Token=$(echo $GetToken|awk -F ',' '{print$2}'|awk -F '"' '{print $4}')
while read line;do
curl -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.tool
done < /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
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfeige
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01