• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

七、Zabbix调优和Grafana

武飞扬头像
爬也要爬着前进
帮助1

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模版使用

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfeige
系列文章
更多 icon
同类精品
更多 icon
继续加载