整体架构图:(图片是来自网上资料)
介绍这个架构
zabbix agent是装到被监控的机器上 zabbix agent 可以主动向zabbix server汇报数据;也可以是zabbix server主动来拉取 zabbix可以监控数据库,操作系统,磁盘,cpu,应用,监控的数据全部都拿到存到数据库里去 拿到数据之后是要给用户展示的,是有个web界面的,可以和用户进行交互 这个网站使用php写的,web服务可以用nginx也可以用apache 此处我选择的是nginx,然后php的作用是到数据库拿数据,最终展示在页面上
#zabbix-server正常启动对外端口是10051 #zabbix-agent端口是10050 #mysql的端口是3306
一、为什么需要zabbix这种监控软件
保障业务时时刻刻正常运转,一旦出现问题,需要马上知道,
二、安装zabbix
①去zabbix官网(www.zabbix.com)
点击download选择你要下载的版本类型,下面都有命令教你怎么安装(我这里选择的是5.0的zabbix,centos7,使用mysql数据库,使用nginx做web服务)
②到安装数据库
Ⅰ、yum install maraidb mariadb-server -y --安装mariadb
Ⅱ、service maiadb start --启动mariadb
Ⅲ、systemctl enabled mariadb --设置开机自启
Ⅳ、mysql -uroot -p --登录数据库
Ⅴ、之后按官网新建zabbix库,创建zabbix用户,给用户授权,导入表到zabbix库
# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
Ⅵ、关闭防火墙和selinux
service firewalld stop
systemctl disabled firewalld
setenforce 0
vim /etc/selinux/config
将SELINUX=disabled
Ⅶ、后面的配置也按官网来
解决zabbix-server访问不了数据库的问题(编译安装的mysql)
解决方法1:
1,查看mysql的socket文件在哪
①/etc/my.cnf ②看进程也有
2,修改zabbix-server.conf里的配置 vim /etc/zabbix/zabbix_server.conf 将DBSocket改成数据库的socket路径
3,修改/data/mysql目录的权限(编译安装指定的路径),允许zabbix用户启动zabbix-server yum安装的mysql就是zabbix想要的那个 zabbix去拿数据的地方就是yum安装的mysql放数据的地方
解决方案2:
①修改/etc/my.conf [mysql] 将socet改为zabbix默认的拿数据的地方
②刷新数据
agent端只需要安装agent并将服务启动就行
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm --安装源
yum clean all
yum install zabbix-agent -y
systemctl restart zabbix-agent
systemctl enable zabbix-agent
#修改agent端/etc/zabbix的agent的配置文件(vim /etc/zabbix/zabbix_agentd.conf)
将配置文件中的active和passive的ip都修改为允许过来拿数据的服务器的ip,这样就允许server端可以过来拿数据,agent也可以主动推送数据
改完配置记得一定要刷新服务:service zabbix-agent restart
#之后在server端安装zabbix-get:yum install zabbix-get -y,可以测试连通性
zabbix_get -s 192.168.173.133 -p 10050 -k "system.cpu.load[all,avg1]"
-s,source表示从哪台主机拿数据,
-p端口 agent端口是10050,server端口是10051
-k是key,是监控的哪一项指标,zabbix里就是通过很多的key来获取不同的指标数据
添加被监控主机
在浏览器输入server端ip之后 一直下一步下一步 默认登录账号和密码 账号Admin 密码zabbix 在web页面点配置里面的主机,然后右上角创建主机 模板的作用:里面集合了很多的应用集,专门针对web的模板,mysql的模板 应用集:各种各样的应用的集合,zabbix对应用进行分类:web,database,memory,interface等 监控项:被监控的某个项目:cpu使用率 模板里面很多应用集,应用集里很多监控项,使用模板的好处是快速添加监控项自定义监控项: 1,在agent端写个脚本 脚本写在agent的/etcetc/zabbix/zbbix_agentd.d下, 之后编辑置文件.conf结尾(编辑key)--也是在zabbix_agentd.d目录下 conf文件里的内容格式: UserParameter=sc.ssh.status,/etc/zabbix/zabbix_agentd.d/monitor_sshd.sh 2,之后server端可以通过key来测试获取数据) 监控的数据传到server,server端存入数据库 3,之后在web界面添加监控项 4,php从数据库拿数据并显示在网页上 5,将自定义的监控项图形化 先创建应用集 然后创建监控项 监控项的键值就是自己设计的key值 之后创建图形 ####设计可以传参的监控项(看图) 例子:获取192.168.173.132/status下的active,reading数据 使用curl 浏览status页面,然后对数据进行处理看图 还要给文件可执行权限 在agent端的/etc/zabbix/zabbix_agent.d目录下新建脚本文件 之后创建在/etc/zabbix/zabbix_agent.d目录下创建key 图表界面 先创建应用集 创建监控项,键值的[]里面的内容不同就是不同的key
###添加触发器
配置里面添加triggers 如果是常见的那些,expression值可以参考别的定义好的
如果是自己定义的找不到对应的expression就点add,last填正常值 还要给他划分一下级别serverity
#告警,告警是跟触发器绑定的 微信-企业微信 参考博客 https://blog.csdn.net/whell_scl/article/details/106722721?spm=1001.2014.3001.5502