CW-Zabbix是一个Zabbix的二次开发项目,它目前基于Zabbix 5.0.4版本,使得Zabbix支持向Clickhouse写入指标数据。
Zabbix-Clickhouse项目编译出的应用支持将Zabbix数据导入到Clickhouse列数据库中。Zabbix在运行中产生的主要数据基本上可以分为history数据和trend数据。其中,trend数据是根据history计算出的各种中间值,如平均值,最高值等。而history就是zabbix搜集到的各种指标的实时历史数据,我们的目标就是把这些时序数据导入到clickhouse中。
需要配置zabbix server启动所需的配置文件来实现上面的目标。
在配置之前需要预先启动Clickhouse并导入表结构。启动Clickhouse时请注意配置中设置的http服务监听的端口号,下面的配置中会用到。
说明:本项目源于官方5.0.4版本开发,在安装时只有zabbix server和web的配置文件比官方版本多了一些配置,并在clickhouse中创建相关表结构即可。具体配置详见参数/配置小节。
master - 主分支
develop - 开发分支
Zabbix Server 编译依赖
unixODBC-devel、mariadb-devel、mariadb-server、net-snmp-devel、libxml2-devel、libcurl-devel、libevent-devel、autoconf、gcc、automake
Zabbix Web 运行依赖
软件 | 版本 | 备注 |
---|---|---|
MySQL | 推荐5.7.* 或以上 | |
Clickhouse | 推荐20.12.*或以上 | |
Apache | 推荐2.4.* 或以上 | |
Nginx | 推荐1.6.* 或以上 | 推荐使用nginx |
PHP | 必须7.2.* 或以上 |
PHP扩展 | 版本 | 备注 |
---|---|---|
gd | 2.0 or later | |
bcmath | ||
libXML | 2.6.15 或以上 | |
xmlreader | ||
xmlwriter | ||
session | ||
sockets | ||
mbstring | ||
gettext | ||
ldap | ||
ibm_db2 | ||
mysqli | ||
oci8 | ||
pgsql | ||
opcache | 选择安装 | |
yac | 选择安装 |
Zabbix编译安装参考:此版本支持数据源为mysql+clickhouse,编译时请注意参数!官方文档供参考:Zabbix源代码安装
# 这里仅展示安装zabbix-server-mysql,若安装zabbix-agent请参考上面链接
$ yum install unixODBC-devel mariadb-devel mariadb-server net-snmp-devel libxml2-devel libcurl-devel libevent-devel autoconf gcc automake
$ autoreconf --install
$ autoconf
$ ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
$ make install
如果使用软件包方式,会将Zabbix Web运行环境一并安装。但使用本仓库代码搭建Zabbix Web,需要手动安装运行环境。
启动PHP 7.2、Mysql 5.7、Apache或Nginx
创建用户账户:
$ groupadd zabbix
$ useradd -g zabbix zabbix
创建 ZABBIX 数据库:
$ mysql> create database zabbix character set utf8 collate utf8_bin;
$ mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
$ mysql> quit;
在clickhouse中,执行以下语句:
CREATE DATABASE zabbix;
CREATE TABLE zabbix.history ( day Date,
itemid UInt64,
clock DateTime,
ns UInt32,
value Int64,
value_dbl Float64,
value_str String
) ENGINE = MergeTree(day, (itemid, clock), 8192);
CREATE TABLE zabbix.history_buffer (day Date,
itemid UInt64,
clock DateTime,
ns UInt32,
value Int64,
value_dbl Float64,
value_str String ) ENGINE = Buffer(zabbix, history, 8, 30, 60, 9000, 60000, 256000, 256000000) ;
如果需要在Clickhouse中创建trends与trends_unit视图,请执行以下语句:
CREATE MATERIALIZED VIEW zabbix.trends
ENGINE = AggregatingMergeTree() PARTITION BY toYYYYMM(clock) ORDER BY (clock, itemid)
AS SELECT
toStartOfHour(clock) AS clock,
itemid,
count(value_dbl) AS num,
min(value_dbl) AS value_min,
avg(value_dbl) AS value_avg,
max(value_dbl) AS value_max
FROM zabbix.history GROUP BY clock,itemid;
CREATE MATERIALIZED VIEW zabbix.trends_uint
ENGINE = AggregatingMergeTree() PARTITION BY toYYYYMM(clock) ORDER > BY (clock, itemid)
AS SELECT
toStartOfHour(clock) AS clock,
itemid,
count(value) AS num,
min(value) AS value_min,
avg(value) AS value_avg,
max(value) AS value_max
FROM zabbix.history GROUP BY clock,itemid;
在mysql中执行以下语句:
shell> mysql -uroot -p<password>
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by '<password>';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> quit;
把当前仓库中的UI目录通过Apache或Nginx进行代理,推荐使用Nginx
$ mkdir <htdocs>/zabbix
$ cd CW-Zabbix/UI
$ cp -a . <htdocs>/zabbix
创建目录/etc/zabbix/
将仓库中/conf/目录下的zabbix_server.conf,复制到/etc/zabbix/,修改相关配置(详见“参数/配置”)
将仓库中/ui/conf/zabbix.conf.php.example,复制到/etc/zabbix/,删除“.example”后缀名,修改相关配置(详见“参数/配置”)
配置完成后,访问web页面,初始化zabbix,初始化请参考:
zabbix_server.conf (zabbix-server配置文件) 除了下面四项配置,其他配置与官方一致:
HistoryStorageURL=http://localhost:8123 // 注意,由于使用的是Clickhouse的rest接口,需要制定Clickhouse监听的http端口
HistoryStorageTypes=uint,dbl,str,log,text //使用默认配置即可
HistoryStorageName=clickhouse // 指明History存储方式
HistoryStorageDBName=zabbix // 指示Clickhouse中所用的数据库名称
zabbix.conf.php (Zabbix-web配置文件)
文件中除了默认配置外,添加$HISTORY配置(链接clickhouse相关)
// Zabbix GUI configuration file.
// ...省略与官方使用一致的配置项,以下展示对接clickhouse配置项
$HISTORY['storagetype']='clickhouse'; // 指明History存储方式
$HISTORY['url']='http://localhost:8123'; // Clickhouse接口
$HISTORY['dbname']='zabbix'; // Clickhouse数据库名称
$HISTORY['types'] = ['uint', 'text', 'str', 'dbl']; // 默认配置即可
$ClickHouseDisableNanoseconds=0; // 支持纳秒存储,不需要禁用
$HISTORY['disable_trends']=1; // 是否禁用trends记录,Clickhouse中创建trends与trends_unit视图,需要设置为0开启
$YAC_CACHE['enable']=1; // 1:开启,0:关闭。Zabbix-API开启yac缓存,数据将以分钟片段进行缓存。按需配置
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型