我花了一点时间整理了一套zabbix的安装脚本,便于部署和安装。它包括了zabbix-server,zabbix-agent的安装,初始化配置,在4.0之后加入了docker-compose,随后的server端都采用了docker安装。在最新的更新中,引入了elasticsearch:6.1.4。
git地址:https://github.com/marksugar/zabbix-complete-works
如果你喜欢这个项目,你可以在github上的zabbix-complete-works右上角点击 ♥ Star或者Fork.
我使用了一套docker-compose来编排server端,对于zabbix-agent我使用脚本安装。
docker和docker-compose安装参考-docker官网的安装方式 And - docker-compose安装参考docker-compose官网的安装方式
- 先睹为快
在zabbix最近的几个版本中的Graph绘图功能我非常讨喜,大致是这样的
这样以来,我就可以在 一张图里面看到自定义一个组,或者一部分机器和某个items组成的一张图,这是非常有效的
zabbix-server
使用最新的4.2稳定版本,引入了elasticsearch,但是对于elasticsearch功能处于开发阶段,支持的版本有限,我这里使用的是6.1.4。我在此主要介绍zabbix的参数,因为这里使用的是docker,如果你要快速了解和安装,那么很有必要了解的。参考zabbix-complete-works项目的docker-compose.yaml文件
zabbix/zabbix-server-mysql:alpine-4.2-latest
根据以往的使用方式,将数据保存在本地
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /data/zabbix/zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro
- /data/zabbix/zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
- /data/zabbix/zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
- /data/zabbix/zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
- /data/zabbix/zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
- /data/zabbix/zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
- /data/zabbix/zbx_env/var/lib/zabbix/snmptraps:/var/lib/zabbix/snmptraps:rw
环境变量
environment:
- DB_SERVER_HOST=127.0.0.1
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=password
- MYSQL_ROOT_PASSWORD=abc123
- ZBX_HISTORYSTORAGEURL=http://127.0.0.1:9200 # elasticsearch
- ZBX_HISTORYSTORAGETYPES=dbl,uint,str,log,text # stor add elasticsearch type
- DebugLevel=5
- HistoryStorageDateIndex=1
- ZBX_STARTDISCOVERERS=10
这里的环境变量对应zabbix-server.conf的配置参数,只不过在前面加上了ZBX_
而已
注意
1,这里提供了MYSQL_ROOT_PASSWORD是数据库root的密码。但这里提供了root密码后,zabbix-server会自动创建用户以及导入sql,请观察日志查看是否有报错产生。
2,这里使用了elasticsearch,根据官网的文档,在server配置后,还需要修改web断的配置文件
- ZBX_HISTORYSTORAGEURL=http://127.0.0.1:9200 # elasticsearch
- ZBX_HISTORYSTORAGETYPES=dbl,uint,str,log,text
zabbix/zabbix-web-nginx-mysql:alpine-4.2-latest
环境变量
environment:
- DB_SERVER_HOST=127.0.0.1
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=password
- ZBX_SERVER_HOST=127.0.0.1
- ZBX_HISTORYSTORAGEURL=http://127.0.0.1:9200
- ZBX_HISTORYSTORAGETYPES=['dbl','uint','str', 'text', 'log'] # uint,dbl,str,log,text
其中,提供在Zabbix-server环境变量中的密码,也就是web链接数据库的密码。而关于elasticsearch的配置需要和server相匹配。最终这里的变量会被替换到容器中的配置文件中。
- ZBX_HISTORYSTORAGEURL=http://127.0.0.1:9200
- ZBX_HISTORYSTORAGETYPES=['dbl','uint','str', 'text', 'log']
- 快速安装
mkdir /data/zabbix -p
curl -Lk https://raw.githubusercontent.com/marksugar/zabbix-complete-works/master/zabbix_server/graphfont.TTF -o /data/zabbix/graphfont.ttf
wget https://raw.githubusercontent.com/marksugar/zabbix-complete-works/master/zabbix_server/docker_zabbix_server/docker-compose.yaml
docker-compose -f docker-compose.yaml up -d
> elasticsearch
你需要注意权限问题,如本示例docker-compose中需要授权: chown -R 1000.1000 /data/elasticsearch/
我整理了索引文件,执行创建索引即可(创建索引尤为重要),你也可以参考官网文档
正常情况下你将看到如下信息:
$ curl http://127.0.0.1:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open str MQWM2bNNRzOvBywM7ne-lw 5 1 0 0 1.1kb 1.1kb
yellow open .monitoring-es-6-2019.04.20 tIfs0MkNQUCI4YuEHRmQ6g 1 1 1926 208 901.6kb 901.6kb
yellow open dbl Y0992hqaR8KTin9iXKsljQ 5 1 0 0 1.1kb 1.1kb
yellow open text s2XMyJtdQQ27b9rS3nWVfg 5 1 0 0 1.1kb 1.1kb
yellow open log MAysNczpSKGZbjfjJXBvTg 5 1 0 0 1.1kb 1.1kb
yellow open uint JA_8kyXlSLqawyHzo28Ggw 5 1 0 0 1.1kb 1.1kb
zabbix-agent
- 快速部署
curl -Lk https://raw.githubusercontent.com/marksugar/zabbix-complete-works/master/zabbix_agent/install-agentd.sh|bash -s local IPADDR
在zabbix-agent的附加脚本中监控的默认项体现如下:
- /root/.ssh/authorized_keys
- /etc/passwd
- /etc/zabbix/zabbix_agentd.conf
- OOM
- iptables
- 磁盘io
- tcp
- nginx和php-fpm
- mariadb-galera
其中配置文件和脚本被打包在一个[zabbix_agent_status.tar.gz包中
自动发现
参考自动发现基于zabbix4.2 zabbix Discovery 教程
阅读更多
- zabbix监控教程
- docker教程
- zabbix-complete-works
- linuxea:zabbix4.2新功能之TimescaleDB数据源测试