Zabbix
zabbix
由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务
# 1.企业级分布式开源监控解决方案
Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
# 2.监控功能
主机的性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细的报表图表绘制
监控主机zabbix有专用的agent,可以监控Linux,Windows,FreeBSD等 。
监控网络设备zabbix通过SNMP,ssh(不多用)
可监控对象:
设备:服务器,路由器,交换机
软件:OS,网络,应用程序
主机性能指标监控
故障监控: down机,服务不可用,主机不可达
# 3.工作原理
zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。
这里agent收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
# 4.zabbix的组件
Zabbix Web GUI:提供Web界面
Zabbix Database:提供数据存储功能,专用于存储配置信息,以及采集到的数据
Zabbix Server:接收Agent采集数据的核心组件。
Zabbix Agent:部署在被监控主机上,用于采集本地数据。
Zabbix Proxy:当被监控节点较多时,用于减轻Server压力的组件,也用于分布式监控系统。由Proxy接收数据后统一发送至Server。
# 5.zabbix监控环境中基本概念
主机(host):要监控的网络设备,可由IP或DNS名称指定;
主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;
监控项(item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由"key"标识;
触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";
事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;
动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;
报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等;
媒介(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;
通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;
模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至某个主机;
应用(application):一组item的集合;
web场景(web scennario):用于检测web站点可用性的一个活多个HTTP请求;
前端(frontend):Zabbix的web接口;
# 6.zabbix报警级别
6个报警级别:未分类、信息、警告、一般严重、严重、灾难
# zabbix5.0基于docker安装
# 1.安装Docker-MySQL
docker run --name mysql-server -t \\
-e MYSQL_DATABASE="zabbix" \\
-e MYSQL_USER="zabbix" \\
-e MYSQL_PASSWORD="zabbix_pwd" \\
-e MYSQL_ROOT_PASSWORD="123456" \\
-d mysql:8.0
docker run --name mysql-server -t \\
-e MYSQL_DATABASE="zabbix" \\
-e MYSQL_USER="zabbix" \\
-e MYSQL_PASSWORD="zabbix_pwd" \\
-e MYSQL_ROOT_PASSWORD="123456" \\
-d mysql:5.7
docker run --name mysql-server -t \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="123456" \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin`复制
docker run --name mysql-server -t \
-v mysql_data:/var/lib/mysql \
-v mysql_logs:/var/log/mysql \
-v mysql_conf:/etc/mysql \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="123456" \
--restart=unless-stopped \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin
# 2.安装Docker-Java Agent
docker run --name zabbix-java-gateway -t \\
-d zabbix/zabbix-java-gateway:latest
docker run --name zabbix-java-gateway -t \\ -v /etc/localtime:/etc/localtime:ro \\ -d zabbix/zabbix-java-gateway:latest复制
docker run --name zabbix-java-gateway -t \ -d zabbix/zabbix-java-gateway:alpine-6.2-latest
# 3.安装Docker-Zabbix
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 10052:10052 \\
-p 10051:10051 \\
-d zabbix/zabbix-server-mysql:latest
docker安装jenkins
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=10051/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
基于 docker 进行安装 软件,首先需要有 docker 环境。 1.docker 下载 jenkins 镜像 指定版本 ,因为低版本的后面安装 软件会失败(亲测)。
docker pull jenkins/jenkins:2.83
复制
2.查看 jenkins 是否下载成功
docker images
复制
3.运行 jenkins
`mkdir /home/jenkins 创建文件夹
ls -nd jenkins/ 查看文件权限
cd /home 进入
chown -R 1000:1000 jenkins/ 给uid为1000的权限
//启动jenkins docker run -itd -p 8081:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/jenkins:/var/jenkins_home jenkins/jenkins:2.83`复制
4.查看 jenkins 是否启动
`ps -ef | grep jenkins
docker logs jenkins 查看启动日志`复制
5.登录 jenkins 在命令框输入命令查看登录密码
cat /home/jenkins/secrets/initialAdminPassword
复制
如果启动成功之后,安装插件时出现 离线状态,需要作如下处理。
在浏览器中访问 http://ip:端口号/pluginManager/advanced ,出现新页面找到如下页面选项,修改地址。将 https 修改为 http 即可,然后提交(submit)。最后再重启 jenkins,既可以重新安装插件了。
报错
进入挂载的/home/jenkins文件夹下面,修改config.xml,将1.1改为1.0
如果在防火墙为关闭情况下修改完成,不需要修改直接docker run
如果是在关闭防火墙后修改,需要重启docker
docker run --name zabbix-agent \\
-e ZBX_HOSTNAME="Zabbix server" \\
-e ZBX_SERVER_HOST=192.168.10.18 \\
-e ZBX_SERVER_PORT=10051 \\
--network=zabbix-net \\
--privileged \\
--restart unless-stopped \\
-p 10050:10050 \\
-d zabbix/zabbix-agent:alpine-6.2-latest
docker run --name zabbix-agent \\
-e ZBX_HOSTNAME="Zabbix server" \\
-e ZBX_SERVER_HOST=192.168.10.18 \\
-e ZBX_SERVER_PORT=10051 \\
--network=zabbix-net \\
--privileged \\
--restart unless-stopped \\
-p <Host_Port>:10050 \\
-d zabbix/zabbix-agent:alpine-6.2-latest
docker run -it --rm -p 9000:80 -e "API_BASE_PATH=http://host.docker.internal:8849/" registry.cn-shenzhen.aliyuncs.com/jetlinks/jetlinks-ui-vue:2.1.0-SNAPSHOT
docker run -it --rm -p 9000:80 registry.cn-shenzhen.aliyuncs.com/jetlinks/jetlinks-ui-vue:2.1.0-SNAPSHOT
/opt/zabbix/zabbix_agent/usr/sbin/zabbix_agentd -c /opt/zabbix/zabbix_agent/etc/zabbix/zabbix_agentd.conf