ZbxTable——zabbix优秀报表二开

Python023

ZbxTable——zabbix优秀报表二开,第1张

zbxTable是一个开源zabbix报表系统,go语言编写(张思德,zabbix中国社区开源专家),目前版本已更新到1.15版本,支持zabbix5.4版本。

zbxTable部署有两种方式:RPM部署和编译安装,如有特殊需要,可选择编译安装,zbxtable用go语言编写,对系统影响小,推荐用RPM安装。

添加yum源

CentOS 6.x

rpm -Uvhhttps://repo.cactifans.com/zbxtable/1.0/rhel/6/x86_64/zbxtable-release-1.0-1.el6.noarch.rpm

CentOS 7.X

rpm -Uvh https://repo.cactifans.com/zbxtable/1.0/rhel/7/x86_64/zbxtable-release-1.0-1.el7.noarch.rpm

CentOS 8.X

rpm -Uvh https://repo.cactifans.com/zbxtable/1.0/rhel/8/x86_64/zbxtable-release-1.0-1.el8.noarch.rpm

安装

全新安装直接复制命令即可

yum clean all

yum -y install zbxtable

安装ms-agent

yum -y install ms-agent

配置

数据库初始化

mysql -uroot -ppassword

create database zbxtable character set utf8 collate utf8_bin

create user zbxtable@localhost identified by ‘zbxtablepwd123’

这里不讲其他数据库,有兴趣的可以看官网具体配置

系统初始化

配置文件需要初始化才能生成,步骤如下:

cd /usr/local/zbxtable/

./zbxtable init

这时候会进入交互命令行,根据实际情况正确输入数据库库的账号密码,zabbix链接信息,成功后会生成配置文件,否则无法看到配置文件。

配置MS-Agent

MS-Agent作为告警消息采集客户端,采集zabbix产生的告警信息,发送到zbxtable平台中,zbxtable需要在zabbix server配置相应的action。配置如下。

cd /usr/local/zbxtable

./zbxtable install

这时会在zabbix上创建ms-agent用户,密码随机,权限管理员,最后输出MS-Agent token为MS-Agent 与ZbxTable通信的token,需要和MS-Agent 配置文件里的token保持一致,否则无法正常收到告警。 Token可在conf/app.conf文件里找到。

启动服务

systemctl enable --now zbxtable

重启

systemctl restart zbxtable

查看状态

systemctl status zbxtable

必须确保zbxtable服务是active状态,如果异常,查看日志文件:/usr/local/zbxtable/logs/zbxtable.log或者系统日志message

Zbxtable-web配置

zbxtable使用nginx做代理,安装即可

yum -y install nginx

拷贝nginx配置文件

cp /usr/local/zbxtable/nginx.conf /etc/nginx/conf.d/

启动nginx

systemctl start nginx

开机自启动

systemctl enable nginx

zbxtable访问地址:http://ip:8088,默认账号密码:admin/Zbxtable。

根据需求做一个csv报表数据导入入库功能,运行多天突然运维告知导入数据有问题,有问题那就排查呗。。。

题外话:这个问题足足浪费了我2天时间,期间还出了其他的一些问题着实让我抓狂,另外这篇文章希望能帮到你,不要在采坑了!!!

说在前面,这个csv表格数据是有中文的。ok继续

通过日志打点发现了以下错误

找了一圈,着实头痛,我也知道中文需要做处理转化这个我已经做了,并且已经明确是utf-8了通过标准库方法进行判断的还是报错。着实让我摸不着头脑。判断utf-8方法如下

ok,最后借助了百度,google找了一大圈功夫不负有心人,最后发现utf-8还有 utf-8 bom 这种编码格式,我想骂娘。。。至于编码规则啥的就不详细说了,有兴趣自行百度吧。

解决方案如下:

至于其他编码方式以及转换可以查看golang官方扩展库 golang.org/x/text/encoding 库中的源码。

https://stackoverflow.com/questions/31326659/golang-csv-error-bare-in-non-quoted-field

https://github.com/golang/go/issues/21672

https://zasy.github.io/2018/09/28/tx-06/

一个用golang的无名小卒

完~

Go语言由Google公司开发,并于2009年开源,相比Java/Python/C等语言,Go尤其擅长并发编程,性能堪比C语言,开发效率肩比Python,被誉为“21世纪的C语言”。

Go语言在云计算、大数据、微服务、高并发领域应用应用非常广泛。BAT大厂正在把Go作为新项目开发的首选语言。

Go语言能干什么?

1、服务端开发:以前你使用C或者C++做的那些事情,用Go来做很合适,例如日志处理、文件系统、监控系统等

2、DevOps:运维生态中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go语言开发

3、网络编程:大量优秀的Web框架如Echo、Gin、Iris、beego等,而且Go内置的 net/http包十分的优秀

4、Paas云平台领域:Kubernetes和Docker Swarm等

5、分布式存储领域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等

6、区块链领域:区块链里面有两个明星项目以太坊和fabric都使用Go语言

7、容器虚拟化:大名鼎鼎的Docker就是使用Go语言实现的

8、爬虫及大数据:Go语言天生支持并发,所以十分适合编写分布式爬虫及大数据处理。