zabbix-agent
Zabbix-agent监控
好久不更新,一口气更新几篇,终于到了我最喜欢的zabbix监控这篇!
zabbix可以监视各种网络参数,保证服务器系统的安全运营,提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。我们知道,zabbix由2部分构成,zabbix server与可选组件zabbix agent,zabbix-server是基于mysql存储的,监控文件都存到mysql库里,上次已经安装完zabbix server,这次主要是关于agent的操作,不废话了,开整:
Zabbix-agent服务及配置:
在对应的客户端上安装zabbix
查看服务状态:systemctl status zabbix-agent
服务启动:systemctl start zabbix-agent
如果启动报如下错误,kill进程重新启动即可:
启动服务之后,agent变配置完成,之后去web端进行监控项操作,由于我们服务器比较多,所以使用脚本进行agent服务的批量启动,在web端也需要批量添加服务器,比较麻烦,好在zabbix支持自动发现满足条件的主机。
配置自动发现规则
可添加网段,能够发现整个网段内启动agent服务的机器,但要注意配置-自动发现-设备唯一性准则 不要选ip地址,否则会发现不了:

配置DISK监控项
zabbix模板自带CPU与内存的监控项,没有DISK和NET的监控项,所以需要我们自己添加:
首先,磁盘的在客户端进行配置:
对每个启动agent服务的客户端,(通常在/etc/zabbix下)添加磁盘的conf 文件,并重启zabbix-agent
然后去zabbix-server查看配置是否生效,切换到zabbix-server的bin目录执行如下命令,ip换成agent服务器ip,能正常读取出来就可以,
./zabbix_get -s 192.1.1.1 -p 10050 -k custom.vfs.dev.write.ops[sda]
配置NET监控项
net的很简单,只需要监控项net写上具体网卡就可以监控,我的是ens160:
聚合图形
zabbix支持聚合图形的编辑和实时监控,可导出为xml文件,并可以导入xml图表

我们的需求是每行添加五个图表,对应一个IP。然后多少个agent就有多少行,使用java直接生成xml比较简单,要注意0那行需要选择0静态,不然页面会跟着选择的ip乱跑 :
import java.util.ArrayList;
import java.util.List;
public class ZabbixXml {
public String createXml(List <String> ip) {
int hsize = 5;
int vsize = ip.size ();
String name,host;
int x,y;
//5种图表监控项,根据需要添加
List<String> imgname = new ArrayList<String>() {
{
this.add ( "CPU utilization" );
this.add ( "Memory usage" );
this.add ( "IO" );
this.add ( "Network traffic on ens160" );
this.add ( "CPU load" );
}
};
String head = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"\n" +
" 4.0 \n" +
" 2020-11-12T07:21:22Z \n" +
" \n" +
" \n" +
" Zabbix server \n" +
" "+hsize+" \n" +
" "+vsize+" \n" +
" \n";
for(int i=0;ifor(int j =0;j<5;j++) {
x=j;
y=i;
name = imgname.get ( j );
String screen_item = " \n" +
" 0 \n" +
" 500 \n" +
" 100 \n" +
" "+x+" \n" +
" "+y+" \n" +
" 1 \n" +
" 1 \n" +
" 0 \n" +
" 0 \n" +
" 0 \n" +
" \n" +
" \n" +
" 0 \n" +
" 0 \n" +
" \n" +
" "+name+" \n" +
" "+host+" \n" +
" \n" +
" 3 \n" +
" \n" +
" \n";
head=head+screen_item;
}
}
String end = " \n" +
" \n" +
" \n" +
" ";
return head+end;
}
public static void main(String args[]){
List <String> ip =new ArrayList<String>() {
{
//换下IP
this.add ( "192.168.1.1" );
this.add ( "192.168.1.2" );
}
};
ZabbixXml test = new ZabbixXml ();
System.out.println ( test.createXml ( ip ) );
}
}
然后将生成的文本复制成xml导入到zabbix,就可以生成相对定制化的监控图表:
支持展示时间段,可配置最长数据保存时间等:
