为什么要使用监控?
简单的说就是通过对系统的不间断实时监控,保证业务安全可靠的持续运行。
监控怎么用?
- 首先要明确明确要监控什么?比如要监控磁盘的使用率
- 然后明确要监控哪些参数?
block
和inode
- 如果获取到这些参数?
df -h | awk '/\/$/{print $(NF-1)}'
- 获取的数值要到达多少报警?正常的话80%
去到一家新公司,应该如何搭建监控系统?
1、去机房看看都有什么设备?常见的设备有交换机、防火墙、服务器
2、监控这些设备的哪些参数?CPU、内存、磁盘、网络、进程、TCP
3、服务的监控:nginx、mysql、tomcat、php
4、web的监控:响应时间、加载时间,渲染时间
5、日志的监控:用开源的ELK
(收集、存储、分析、展示),商用的日志易做的比较好
6、安全监控firewall、WAF(nginx+lua)
,推荐使用商用的安全宝、牛顿云、安全狗
7、安全监控:smokeping
多机房
8、业务监控:出货量多少?成效量多少?盈利多少?
zabbix组件之间的关系
我们在安装zabbix的时候安装了四个软件:zabbix-server、zabbix-server-mysql、zabbix-web-mysql、zabbix-agent,那么这个四个软件之间有什么关系呢?
zabbix-server是zabbix的主程序,运行后成为守护进程,监听在10051端口。
zabbix-server-mysql是主程序用来连接mysql的插件
我们在浏览器上登录时用的是apache,在apache的站点目录里有一个zabbix的网站,这个网站是安装zabbix的时候自动生成的,zabbix站点也要连接数据库,因为zabbix站点是可以登录的,zabbix-web-mysql就是zabbix站点用来连接数据库的插件。
那zabbix-agent是用来做什么的呢?这个软件是个代理,用来安装到被监控端的,作用是收集被监控端的信息发送到监控端,侦听到10050端口。
稍微总一下,就是agnet把收集收的信息交给server,而server存储到数据库里面,然后web界面去读取数据库里面的内容显示出来。
数据库读写分离
环境:
zabbix端:zabbix3.4(192.168.80.66)
数据库端:mysql5.7(192.168.80.88)
被监控端:web01(192.168.80.240)
为什么要将数据库从zabbix上分离呢?
将zabbix和数据库都安装到一台主机上其实也没有什么问题,但是当监控的主机越来越多的时候,内存可能比较吃紧,这个其实很简单的,虽然简单,还是得演示一下,不能想当然,里面其实还是有一些坑的。
先理一下思路:
- 在数据库端:创建数据库zabbix,设置字符集什么的,还是按照zabbix官网那一套来
- 在zabbix端,先把当前数据库的内容备份一下,然后导入到数据库的数据库里面
- 更改zabbix-server的配置文件,将数据库的指向由本地改为新的数据库主机地址
- 更改zabbix-web的配置文件,将数据库的指向由本地改为新的数据库主机地址
第一步:数据库端的操作(二进制安装)//创建zabbix数据库
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@'%' identified by 'Zabbix@_123';
第二步:将zabbix端的数据库打包,恢复到mysql端。
mysqldump -uroot -pcba-123 --databases zabbix --single-transaction > `date +%F%H`-zabbix.sqlcat 2019-12-0609-zabbix.sql | mysql -h 192.168.80.240 -uzabbix -p'Zabbix@_123' zabbix
第三步:更改zabbix-server端连接数据库的配置文件
vim /etc/zabbix/zabbix_server.conf
DBHost=192.168.80.240
systemctl restart zabbix-server
第四步:更改zabbix-web端连接数据库的配置文件
vim /etc/zabbix/web/zabbix.conf.php
DB['SERVER'] = '192.168.80.240';
systemctl restart httpd