一、 Zabbix介绍
docker hub
运维离不开系统监控,鱼儿哭了大海知道,服务器崩了,监控知道。一款强大的监控系统可以有力保证设备和业务的稳定。作为老牌的监控系统,Zabbix 的架构包括了被监控设备和 Zabbix 监控服务器两大部分。
Zabbix Agent 运行在被监控设备上,负责和 Zabbix Server 通信获取和控制被监控设备,它有主动和被动两种工作模式。
Zabbix Server 作为监控核心,可以直接与 Zabbix Agent 连接也可以通过 Zabbix Proxy 进行连接,再由 Zabbix Proxy 连接 Zabbix Agent。后面这种方式用在分布式监控的场景。
Zabbix Server 获取的数据存放到 Zabbix Server 的数据库中,Zabbix UI(Web)可以读取服务器中的数据,通过图表的方式展示出来。
Zabbix 构建过程,分为安装 Zabbix Agent/Server/UI,Host 配置,Item 配置,Trigger 配置,Action 配置。
这个配置过程完美地回答了,“监控谁?监控什么?出现异常以后如何处理?”的问题。
最后,针对不同应用场景,Zabbix 还支持多种监控方式,有 Zabbix Agent,SNMP,IPMI 以及 JMX。
二、 Docker 安装与部署 Zabbix
从容器安装 Zabbix Documentation 3.4
- 启动一个空的Mysql服务器实例
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin
- 启动Zabbix Java gateway实例,Zabbix本身不支持直接监控Java,而是使用zabbix-java-gateway监控jvm/tomcat性能
docker run --name zabbix-java-gateway -t \
-d zabbix/zabbix-java-gateway:latest
- 启动Zabbix server实例,并关联这个实例到已创建的MySQL服务器实例
docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--link mysql-server:mysql \
--link zabbix-java-gateway:zabbix-java-gateway \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:latest
docker run --name zabbix-server-mysql -t \
**-e DB_SERVER_HOST="119.18.193.26" \**
-e DB_SERVER_PORT="3306" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="root" \
-e MYSQL_ROOT_PASSWORD="123456" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--link zabbix-java-gateway:zabbix-java-gateway \
-v /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-v /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:alpine-4.2.6
- 启动Zabbix web 接口 10050 ,并将它与MySQL服务器实例和Zabbix server实例关联
docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 10050:80 \
-d zabbix/zabbix-web-nginx-mysql:latest
docker run --name zabbix-web -t \
-p 10050:80 \
--hostname zabbix-web \
-e PHP_TZ="Asia/Shanghai" \
-e DB_SERVER_HOST="119.18.193.26" \
-e DB_SERVER_PORT="3306" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="123456" \
**--link zabbix-server-mysql:zabbix-server \**
-d zabbix/zabbix-web-nginx-mysql:alpine-4.2.6
- 查看已经启动的端口
[root@ken ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 50 *:3306 *:*
LISTEN 0 50 *:139 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 50 *:445 *:*
LISTEN 0 50 :::139 :::*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::10050 :::*
LISTEN 0 50 :::445 :::*
LISTEN 0 128 :::10051 :::*
- 查看容器启动情况
[root@zabbix_server ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
98cbe8d8a6bd zabbix/zabbix-web-nginx-mysql:latest "docker-entrypoint.sh" 6 seconds ago Up 5 seconds 443/tcp, 0.0.0.0:8080->80/tcp zabbix-web-nginx-mysql
de040d43d60f zabbix/zabbix-server-mysql:latest "docker-entrypoint.sh" 59 seconds ago Up 59 seconds 0.0.0.0:10051->10051/tcp zabbix-server-mysql
3276f18def8d mysql:5.7 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp mysql-server
- 查看docker镜像
[root@zabbix_server ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zabbix/zabbix-web-nginx-mysql latest 4db891b4393a 10 hours ago 177MB
zabbix/zabbix-server-mysql latest f5e58dafe9ac 10 hours ago 62.2MB
mysql 5.7 f0f3956a9dd8 7 days ago 409MB
- 访问web界面
docker run --name gitlab -d --link postgresql:postgresql -e ‘REDIS_HOST=119.18.193.26’ -e ‘REDIS_PORT=6379’ -p 10022:22 -p 9099:80 -e ‘GITLAB_PORT=9099’ -e ‘GITLAB_SSH_PORT=10022’ -e ‘GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string’ -e ‘GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string’ -e ‘GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string’ -e ‘GITLAB_HOST=119.18.193.26’ -e ‘GITLAB_EMAIL=15509853198@sina.com’ -e ‘SMTP_ENABLED=true’ -e ‘SMTP_DOMAIN=www.sina.com’ -e ‘SMTP_HOST=smtp.sina.com’ -e ‘SMTP_STARTTLS=false’ -e ‘SMTP_USER=stefan_muriel’ -e ‘SMTP_PASS=59d554225a0c52fb’ -e ‘SMTP_AUTHENTICATION=login’ -e ‘GITLAB_BACKUP_SCHEDULE=week’ -e ‘GITLAB_BACKUP_TIME=0’ -v /data/gitlab/data:/home/git/data sameersbn/gitlab
三、 Zabbix 源码包安装与部署
- 使用 rpm 安装,或者 wget 下载包。
3.4版本
[root@localhost ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
3.0版本
[root@localhost ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
[root@localhost ~]# wget http://www.zabbix.com/downloads/3.0/zabbix_agents_3.0.linux2_6.x64.tar.gz
- 安装zabbix的包
[root@localhost ~]# yum install -y zabbix-server-mysql zabbix-get zabbix-web zabbix-web-mysql zabbix-agent zabbix-sender
- 创建一个zabbix库并设置为utf8的字符编码格式
[root@localhost ~]# mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
- 创建账户并且授权设置密码
给来自loclhost的用户zabbxi分配可对数据库zabbix所有表进行所有操作的权限,并且设定密码为zabbix
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
# 注意后面密码带引号
Query OK, 0 rows affected (0.00 sec)
# 刷新
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 退出
mysql> Ctrl-C – exit!
- 导入默认的zabbix数据库信息
[root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.0.24/
[root@localhost zabbix-server-mysql-3.0.24]# zcat /usr/share/doc/zabbix-server-mysql-3.0.24/create.sql.gz | mysql zabbix -uzabbix -pzabbix
- 修改 配置 zabbix server 配置文件
yum方式部署的话,其默认的配置文件是在/etc/zabbix。
[root@localhost ~]# vi /etc/zabbix/zabbix_server.conf
添加修改以下内容:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
- 修改配置文件/etc/httpd/conf.d/zabbix.conf,时区改成 Asia/Shanghai
[root@localhost ~]# vi /etc/httpd/conf.d/zabbix.conf
添加修改以下内容:
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai
- 启动 apache/zabbix-server 服务并设置为开机启动
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# systemctl start zabbix-server
[root@localhost ~]# systemctl enable zabbix-server
四、 访问网站
- 访问 http://本机IP/zabbix
例如:http://192.168.85.11/zabbix
- password是我们设置的数据库密码zabbix
- 登陆账户是Admin ------------ 密码zabbix
- 设置中文
- 对服务器自身进行监控
欢迎点赞、关注和评论哦!
如果你也是技术宅,如果你也对技术渴望提升,那么我们是同一类人,欢迎大家关注我的个人公众号,我们一起进步吧!
如果对你有帮助,赞赏也是对我最大的支持。