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