ZABBIX 4.4.0 + TimescaleDB
- 2019 年 12 月 11 日
- 筆記
2019.10 ZABBIX 4.4.0 正式發佈,發佈全新的基於Go語言編寫全新agent2和眾多新功能特性,接下來介紹最重要的新功能,TimescaleDB數據庫,ZABBIX除了支持MySQL、PostgreSQL、Oracle和DB2之外,ZABBIX 官方正式宣布支持TimescaleDB。與傳統的關係數據庫相比,TimescaleDB有諸多優點:近乎線性的性能水平,支持自動即時刪除舊的歷史數據,更容易維護等等
TimescaleDB
TimescaleDB是基於PostgreSQL的時序數據庫插件,完全繼承了PostgreSQL的功能,對於複雜查詢,各種類型(GIS,json,k-v,圖像特徵值,range,數組,複合類型,自定義類型,…..)的支持非常豐富,非常適合工業化的時序數據庫場景需求。具有以下特點:
1.基於時序優化
2.自動分片(按時間、空間自動分片(chunk))
3.全SQL接口
4.支持垂直橫向擴展
5.支持時間維度、空間維度自動分區。空間維度指屬性字段(例如傳感器ID,用戶ID等)
6.支持多個SERVER,多個CHUNK的並行查詢。分區在TimescaleDB中被稱為chunk。
7.自動調整CHUNK的大小
8.內部寫優化(批量提交、內存索引、事務支持、數據倒灌)。內存索引,因為chunk size比較適中,所以索引基本上都不會被交換出去,寫性能比較好。數據倒灌,因為有些傳感器的數據可能寫入延遲,導致需要寫以前的chunk,timescaleDB允許這樣的事情發生(可配置)。
9.複雜查詢優化(根據查詢條件自動選擇chunk,最近值獲取優化(最小化的掃描,類似遞歸收斂),limit子句pushdown到不同的server,chunks,並行的聚合操作)
10.利用已有的PostgreSQL特性(支持GIS,JOIN等),方便的管理(流複製、PITR)
11.支持自動的按時間保留策略(自動刪除過舊數據)
基礎架構

Linux系統配置
系統版本
cat /etc/redhat-release CentOS Linuxrelease 7.6.1810 (Core)
安裝軟件包
yum install epel-release yum -y install sysstat traceroute net-tools telnet tree net-snmp-utils htop vim lrzsz tcpdump wget git
關閉selinux
永久關閉將配置文件中參數selinux改為disabled
臨時關閉setenforce 0
關閉防火牆
systemctl stop firewalld && systemctl disable firewalld
修改ulimit(最大進程數和最大文件打開數)
修改 /etc/security/limits.conf 文件
* soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536
* 代表針對所有用戶
nproc 是代表最大進程數
nofile 是代表最大文件打開數
關閉交換內存優化系統參數
vim /etc/sysctl.conf vm.swappiness =0 vm.max_map_count= 262144 net.core.somaxconn=65535 net.ipv4.ip_forward= 1
激活設置
sysctl -p
修改完需要重啟系統
主機清單
hosname |
ip |
Version |
---|---|---|
zabbix-server |
192.168.99.200 |
zabbix 4.4.0 |
zabbix-db |
192.168.99.221 |
PostgreSQL 11.5 |
Postgresql部署
timescaledb是 postgres的一個 擴展 插件 , 所以要安裝 timescaledb就先要安裝 postgres
安裝postgresql
yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm
安裝客戶端
yum install postgresql11
安裝服務端
yum install postgresql11-server
初始化數據庫並設置為開機自動啟動
/usr/pgsql-11/bin/postgresql-11-setup initdb
啟動並開機啟動
systemctl enable postgresql-11 && systemctl start postgresql-11
Timescaledb部署
添加timescaledb的yum源
vim etc/yum.repos.d/timescale_timescaledb.repo [timescale_timescaledb] name=timescale_timescaledb baseurl=https://packagecloud.io/timescale/timescaledb/el/7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300
安裝timescaledb插件
yum install -y timescaledb-postgresql-11
配置postgresql.conf 使用postgres啟動時加載『timescaledb』
vim/var/lib/pgsql/11/data/postgresql.confshared_preload_libraries = 'timescaledb'
重啟Postgresql服務
systemctl restart postgresql-11
Postgresyum 安裝默認會創建一個postgres的用戶
切換到postgres用戶
su postgres
執行psql ,進入postgres的命令行
psql
q退出
在psql命令行修改默認用戶密碼(默認無密碼)
ALTERUSER postgres WITH PASSWORD '123456';
修改postgres的監聽地址,默認只能為 本地連接
vi/var/lib/pgsql/11/data/postgresql.conf listen_addresses = '*'
允許所有地址 來連接該數據庫
vi/var/lib/pgsql/11/data/pg_hba.conf host all all 0.0.0.0/0 md5
重啟服務
systemctl start postgresql-11
測試數據庫遠端登錄
psql -Upostgres -h 192.168.99.221

注意:ZABBIX Server支持TimescaleDB,Zabbix Proxy不支持TimescaleDB。
ZABBIX TimescaleDB數據庫配置
創建zabbix用戶並授權
sudo-upostgres psql create user zabbix with password 'zabbixpwd123'; create database zabbix owner zabbix; grantall privileges on database zabbix to zabbix; 數據庫創建 echo"CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo-u postgrespsqlzabbix
以下步驟需要在安裝完成zabbix-server執行
導入zabbix數據庫
zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz| sudo -u zabbix psql zabbix –h 192.168.99.221 zcat/usr/share/doc/zabbix-server-pgsql*/timescaledb.sql.gz| sudo -u zabbix psql zabbix -h 192.168.99.221
至此zabbixTimescaledb數據庫部署完成!
ZABBIX Server部署
配置ZABBIX官方yum數據源(zabbix 4.4 集成nginx rpm 包)
yum localinstall zabbix-nginx-conf-4.4.0-1.el7.noarch.rpm
安裝LNMP軟件包
#yum install nginx php php-fpm php-mysql –y
啟動配置並開機啟動
systemctl start nginx && systemctl enable nginx
注意:zabbix-nginx-conf軟件包為Zabbix前端安裝了單獨的Nginx服務器。其配置文件位於中/etc/nginx/conf.d/zabbix.conf。為了使Zabbix前端正常工作,必須取消注釋和設置listen和server_name指令。

查看端口是否已經啟動監聽狀態
[root@zabbix ~]# netstat -auntlp |grep -w 80 啟動php-fpm(不啟動php-fpm,php鏈接失敗) systemctl start php-fpm && systemctl enable php-fpm
ZABBIX-Server 安裝
配置ZABBIX官方yum數據源
rpm -Uvhhttps://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
yum 安裝zabbix server 和zabbix前端Web組件
yum-y install zabbix-server-pgsql zabbix-web-pgsql
由於在線yum安裝軟件包較慢,這裡將軟件包上傳至/opt目錄下使用yum localinstall安裝
yum localinstall zabbix-server-pgsql-4.4.0-1.el7.x86_64.rpm zabbix-web-pgsql-4.4.0-1.el7.noarch.rpm zabbix-web-4.4.0-1.el7.noarch.rpm zabbix-get-4.4.0-1.el7.x86_64.rpm
編輯zabbix server 配置文件
egrep-v "*#|^$" /etc/zabbix/zabbix_server.conf |grep DB DBHost=192.168.99.221 DBName=zabbix DBUser=zabbix DBPassword=zabbixpwd123 DBPort=5432
啟動並開機啟動zabbix-serber服務
#systemctl start zabbix-server && systemctl enable zabbix-server
ZABBIX PHP優化
配置PHP 相關參數
vim /etc/php-fpm.d/zabbix.conf
其配置文件位於中/etc/php-fpm.d/zabbix.conf。PHP參數已經配置。但是有必要在此文件中設置正確的date.timezone。

重啟php-fpm
systemctl restart php-fpm
ZABBIX Web UI 安裝ZABBIX 4.4.0



ZABBIX Web中文顯示優化
在Windows 系統中找到 C:WindowsFonts 中的楷體(常規)複製到windows桌面上
通過cecureFX上傳在zabbix server /usr/share/fonts/dejavu/ 目錄下
查看zabbix字體軟鏈接
[root@zabbixdejavu]# cd/etc/alternatives/ [root@zabbixdejavu]# ll [root@zabbixdejavu]# mv simkai.ttf zabbix.ttf [root@zabbixdejavu]# rm -f /etc/alternatives/zabbix-web-font [root@zabbixdejavu]# ln -s /usr/share/fonts/dejavu/zabbix.ttf /etc/alternatives/zabbix-web-font
以上文章來源於開源搬運工宋師傅,作者songhongpeng