商业监控方案
#从各个地区来监测网络情况 http://ping.chinaz.com/ 站长之家 免费 https://www.jiankongbao.com/ 监控宝 ...#云服务自带云监控系统
Zabbix 架构
#zabbix web为php程序 如果公司规模小,zabbix server,db和zabbix web装在一台机器上 如果公司规模大,zabbix server和zabbix web装在一天机器上,db装在一台机器上
Zabbix 部署
# zabbix server,db和zabbix web装在一台机器上, 内存配大些,这里配4G zabbix server 10.0.0.151 zabbix agent 10.0.0.152
zabbix server安装
#容器安装不推荐,会有额外资源消耗。性能受影响,不如直接部署在物理服务器上(小公司无所谓)#二进制包部署 https://www.zabbix.com/cn/ #官网地址 官网点下载,选6.0TLS,Ubuntu,22.04,[Server,Frontend,Agent(3个都包含)],mysql,nginx #根据选择完下面提示的步骤操作 #自动会把源也修改了,省的自己修改 wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent#安装数据库 [root@zabbix-server ~]# apt install -y mysql-server#创建初始数据库 # mysql mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; #允许在不启用二进制日志的情况下开启函数创建 mysql> set global log_bin_trust_function_creators = 1; mysql> quit; #导入初始架构和数据 zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -ppassword zabbix #把log_bin_trust_function_creators改回去 # mysql mysql> set global log_bin_trust_function_creators = 0; mysql> quit;#为Zabbix server配置数据库 [root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf DBPassword=password#为Zabbix前端配置PHP [root@zabbix-server ~]# vim /etc/zabbix/nginx.conf listen 80; server_name zabbix.magedu.org;#有可能zabbix当中装了apache2,这里直接禁用apache2。(本次测试中没发现apache2服务) systemctl mask apache2 #这样就无法启动#让nginx生效 [root@zabbix-server ~]#nginx -s reload#启动zabbix-server,并开机自启 [root@zabbix-server ~]#systemctl enable --now zabbix-server.service#设置host文件,zabbix-web连接数据库通过页面设置 #浏览器输入 zabbix.magedu.org #选择语言,默认为英文,可修改为中文,需要有中文包,没有的话,如下安装(测试重启才能选中文) #CentOS安装中文包,再修改语言,否则无法选择 [root@zabbix-server ~]#yum -y install langpacks-zh_CN #Ubuntu安装下面中文包 [root@zabbix-server ~]#apt -y install language-pack-zh-hans#设置数据库配置,输入密码,相当于设置php连接mysql #设置主机名(左上角有个说明,不填也没事),时区选择 #如果是CentOS下面文件 /etc/zabbix/web/zabbix.conf.php #如果是Ubuntu则下面文件 /usr/share/zabbix/conf/zabbix.conf.php 实质也是/etc/zabbix/web/zabbix.conf.php软链接#登录 默认用户 Admin 密码 zabbix#后续中文会有字符乱码的情况,是因为版权问题,可以从windows中拷贝到zabbix中替换 #将中文字体上传到 Zabbix Server 的目录 /usr/share/zabbix/assets/fonts
zabbix agent安装
zabbix-agent #1版本 c开发 zabbix-agent2.0 #2版本 go开发#同样在官网下载中点击配置,注意和server端zabbix版本一致 #6.0TLS,Ubuntu,22.04; 这次选agent1(目前主流), 如果不是并发很高,1代2代没什么区别1.安装zabbix-agent [root@zabbix-agent ~]#wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb [root@zabbix-agent ~]#dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb #这里把源改成清华大学的,加快速度(包较小,不改没事) [root@zabbix-agent ~]#sed -i 's#https://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#' /etc/apt/sources.list.d/zabbix.list [root@zabbix-agent ~]#apt update [root@zabbix-agent ~]#apt install zabbix-agent -y2.agent配置授权哪个zabbix server(默认不能用,必须改) [root@zabbix-agent ~]#dpkg -L zabbix-agent /lib/systemd/system/zabbix-agent.service [root@zabbix-agent ~]#cat /lib/systemd/system/zabbix-agent.service Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf" ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE ... #所以要修改agent的配置文件为 /etc/zabbix/zabbix_agentd.conf [root@zabbix-agent ~]#vim /etc/zabbix/zabbix_agentd.conf Server=10.0.0.151 [root@zabbix-agent ~]#systemctl restart zabbix-agent.service#zabbix server端检查是否可以连接agent端,如没有zabbix_get命令就安装 [root@zabbix-server ~]#apt install zabbix-get # -k 后面跟监控项 [root@zabbix-server ~]#zabbix_get -s 10.0.0.152 -k 'agent.ping' 1 #说明连接成功3.zabbix server 同意监控agent,添加主机 #在zabbix web网页端左侧配置下的主机,右侧点击创建主机 #主机名称输入 10.0.0.152 #可见的名称输入 10.0.0.152-ubuntu2024 #群组输入 Linux servers(选择已有的),M56(可以创建新的标签) #接口选agent IP:10.0.0.152 IP port:10050 #点击添加4.监控什么?指定监控项 使用内置模板,很多常见的监控项的集合 内置的模板关联至主机上 #在zabbix web网页端左侧配置下的主机,点击主机 #在模板输入linux会搜索,选Linux by Zabbix agent(默认模板)#如果要在windows上装agent,在zabbix官网点击下载,右上方点击Zabbix Agents栏,OS里面有windows系统 #amd64 64位cpu ENCRYPTION加密(OpenSSL安全些) MSI为安装包/Archive解压直接能用#监控项有些是by zabbix agent, 有些没有。一般情况下用带zabbix agent的,因为可以同时捕捉系统的状态,更详细
监控 Nginx 服务
通过状态页监控
#agent端 [root@zabbix-agent ~]#yum install nginx -y #配置状态页 [root@zabbix-agent ~]#vim /etc/nginx/sites-enabled/default location = /basic_status {stub_status;} [root@zabbix-agent ~]#nginx -s reload#在zabbix web网页端左侧配置下的主机,点击主机 #在模板输入nginx会搜索,选nginx by Zabbix agent,点更新 #如nginx状态页路径修改了,再次点击主机进入详情,点击宏栏目,点击继承以及主机宏中进行修改#注意如果是没有agent情况下监控nginx,在配置主机时,接口协议端口任意填写,ip地址要真实。其他选项一致。
监控 PHP-FPM 服务
通过状态页监控
#agent端 [root@zabbix-agent ~]#apt update && apt -y install php-fpm #配置状态页 [root@zabbix-agent ~]#vim /etc/php/8.1/fpm/pool.d/www.conf pm.status_path = /status #放开注释 ping.path = /ping#修改nginx的配置 #Ubuntu22.04 [root@ubuntu2204 ~]#vim /etc/nginx/sites-enabled/default server {.......location ~ \.php|/status|/ping$ {root /data/php;fastcgi_pass unix:/run/php/php8.1-fpm.sock;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}...... [root@zabbix-agent ~]#nginx -s reload#模拟工作环境(不做也没关系) [root@zabbix-agent ~]#mkdir /data/php -p [root@zabbix-agent ~]#vim /data/php/index.php <?php phpinfo(); ?>[root@zabbix-agent ~]#systemctl restart php8.1-fpm.service
zabbix-web添加php监控模板
#在zabbix web网页端左侧配置下的主机,点击主机 #在模板输入php会搜索,选PHP-FPM by Zabbix agent模板,点更新
不使用zabbix agent监控php
#在zabbix web网页端左侧配置下的主机,点击主机 #在模板输入php会搜索,选PHP-FPM by HTTP模板 #这里不是靠接口里设定的ip地址,而是宏定义里的地址决定(属于zabbix的缺陷) #点击宏栏,点击继承以及主机宏,把{$PHP_FPM.HOST}改为被监控的IP地址
案例: 将Zabbix Server的 MySQL 数据库迁移到独立的 MySQL 服务器
# 10.0.0.153 mysql服务器 #安装,注意版本要和原来的mysql版本一致 [root@ubuntu ~]#apt install mysql-server #修改配置允许远程连接 [root@ubuntu ~]#sed -i '/127.0.0.1/s/^/#/' /etc/mysql/mysql.conf.d/mysqld.cnf #重启服务 [root@ubuntu ~]#systemctl restart mysql#zabbix服务器 #停止zabbix,保证不再生成新的数据到mysql中 [root@zabbix-server ~]#systemctl stop zabbix-server.service #备份,这里可以用事务,不用也没事 [root@zabbix-server ~]#mysqldump -B zabbix > zabbix.sql #把sql拷贝到mysql服务器 [root@zabbix-server ~]#scp zabbix.sql 10.0.0.153:#mysql服务器 #进入mysql,创建远端连接账号 mysql mysql> create user zabbix@'10.0.0.%' identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@'10.0.0.%'; #允许在不启用二进制日志的情况下开启函数创建(导入时设置下和上面一样) mysql> set global log_bin_trust_function_creators = 1; #导入库 [root@ubuntu ~]#mysql < zabbix.sql #完成后恢复配置 mysql mysql> set global log_bin_trust_function_creators = 0; quit#zabbix服务器 #测试连接 [root@zabbix-server ~]#mysql -uzabbix -ppassword -h 10.0.0.153 -e status #停止zabbix服务器上的mysql,不用了 [root@zabbix-server ~]#systemctl stop mysql#修改zabbix server的配置,连接到新mysql [root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf DBHost=10.0.0.153 #修改zabbix web的配置,修改php的配置文件 [root@zabbix-server ~]#vim /etc/zabbix/web/zabbix.conf.php $DB['SERVER'] = '10.0.0.153';#启动zabbix server [root@zabbix-server ~]#systemctl start zabbix-server.service
自定义模板 Templates 和监控项 Items
#自定义模板和监控项实现过程 1.在Zabbix 被监控主机上安装Agent2.在Zabbix 被监控主机上编写自定义监控项的取值的脚本,并添加执行权限3.在Zabbix 被监控主机上的Agent配置文件中添加自定义监控项,指定 key 和 对 key 赋值的脚本及参数 #可以写在里面,太过臃肿,可以写在里面包含的文件中 [root@zabbix-agent ~]#vim /etc/zabbix/zabbix_agentd.conf #名字不重要,以conf结尾即可 里面写 UserParameter= 监控项名,命令 [root@zabbix-agent ~]#vim /etc/zabbix/zabbix_agentd.d/tes.conf UserParameter=user_online_number,who | wc -l #重启后,远端agent就可以用这个测试项测试了 [root@zabbix-agent ~]#systemctl restart zabbix-agent.service4.在Zabbix Server 上使用 zabbix_get 工具测试是否能取到自定义监控项信息 [root@zabbix-agent ~]#zabbix_agentd -t user_online_number user_online_number [t|2] [root@zabbix-server ~]#zabbix_get -s 10.0.0.152 -k 'user_online_number' 2 #这时候,agent端在web端已可单独创user_online_number监控项,进行监控了5/在Zabbix Web 创建模板,在模板中添加自定义监控项 #在左侧配置下点击模板,点击创建模板,输入模板名称template-m56,选择组,点击添加 #在左侧配置下点击模板,名称输入m56搜索,找到对应模板点击监控项,点击添加监控项 #输入名称,键值user_online_number,点击添加(模板就有这个监控项了)6.在Zabbix Web 将模板关联至被监控的主机 #点击左侧配置下主机,点击主机,选择新添加的模板,点击更新7.导出自定义模板生成一个对应的文件,可以在其它 Zabbix Server 导入复用 #其他机器还需要监控执行的命令 #把脚本考到另一台agent上 10.0.0.153 [root@zabbix-agent ~]#scp /etc/zabbix/zabbix_agentd.d/tes.conf 10.0.0.202:/etc/zabbix/zabbix_agentd.d #另一台agen 10.0.0.153上,重启服务生效 [root@zabbix-agent2 ~]#systemctl restart zabbix-agent.service #在zabbix server上测试远端10.0.0.153能否使用监控项 [root@zabbix-server ~]#zabbix_get -s 10.0.0.153 -k 'user_online_number' 2 #在web端,10.0.0.153主机上配置对应模板
自定义监控项配置
支持参数
#下面列出一种不同参数,相同方法的监控项 #捕捉不同类型网络状态的数量 [root@zabbix-agent ~]#vim /etc/zabbix/zabbix_agentd.d/tes.conf UserParameter=tcp_state[*],netstat -ant |grep -c $1 # *表示输入任何内容 $1表示输入的第一个参数 #UserParameter=test[*],echo $1 $2 $3#另一台机器上测试 [root@zabbix-server ~]#zabbix_get -s 10.0.0.152 -k 'tcp_state[TIME_WAIT]'#在web端配置增加监控项,键值写tcp_state[LISTEN],添加7个(中途可以点击克隆修改) #可以把模板导出,直接编辑模板文件添加(uuid不能一样) 以后换公司了,可以把以前的监控模板也拷过去(注意脚本也得拷贝) #上面操作注意版本要一致,如果不一致,可以如下操作: 生产机4.0 --5.0(新机器)测试机安装zabbix相同版本4.0 将生产机的模板导出 将生产机的模板导入到测试机 升级测试机5.0(这里的升级是直接再装一次5.0,会自动把之前的配置修改成5.0的配置) 导出测试机5.0的模板
判断端口是否处于监听状态
#net.tcp.listen[port] 1表示开,0表示没开 #在模板中添加监听80端口 键值: net.tcp.listen[80]
使用值映射
#在配置模板下,在模板里点击值映射,输入名称和映射关系,点添加,点更新 #在模板里,点击对应监控项,在值映射中选择前面添加的值映射
触发器 Triggers
#5和6版本格式不同 判断80服务是否挂了 #在配置下模板中,在模板中点击触发器,点击创建触发器 #输入名称如:http服务异常,严重性选择。在表达式右侧点击添加,监控项点击选择监控项 #功能选择last最后一次,结果选 = 0 自动会生成表达式 #注意下面是已启动,点击添加#可设置web提醒声音,在用户设置下配置,点正在发送信息栏,勾前端信息中,更新