常见监控方案、Zabbix编译安装、配置WEB页面、修改默认字体、自定义模板监控nginx、主动与被动模式的区别、zabbix proxy编译安装

常见监控方案

开源监控软件:cacti、nagios、zabbix、smokeping、open-falcon等

Cacti:基于LAMP平台展现的网络流量监测及分析工具,通过SNMP技术或自定义脚本从目标设备/主机获取监控指标信息;其次进行数据存储,调用模板将数据存到数据库,使用rrdtool存储和更新数据,通过rrdtool绘制结果图形;最后进行数据展现,通过Web方式将监控结果呈现出来。
官网地址:https://www.cacti.net/
https://github.com/Cacti/cacti

Nagios:用来监视系统和网络的开源应用软件,利用其众多的插件实现对本机和远端服务的监控,当被监控对象发生异常时,会及时向管理员告警,提供一批预设好的监控插件,用户可以之间调用,也可以自定义Shell脚本来监控服务,适合各企业的业务监控,可通过Web页面显示对象状态、日志、告警信息,分层告警机制及自定义监控相对薄弱。
官网地址: https://www.nagios.org/

Smokeping:是一款用于网络性能监测的开源监控软件,主要用于对IDC的网络状况,网络质量,稳定性等做检测,通过rrdtool制图方式,图形化地展示网络的时延情况,进而能够清楚的判断出网络的即时通信情况。
官网地址:https://oss.oetiker.ch/smokeping/

Open-falcon:小米公司开源出来的监控软件,监控能力和性能较强。
官网地址:https://www.open-falcon.org/ https://github.com/XiaoMi/open-falcon

Zabbix:目前使用较多的开源监控软件,可横向扩展、自定义监控项、支持多种监控方式、可监控网络与服务等。
官网地址:https://www.zabbix.com/cn/

Zabbix编译安装

这里使用zabbix 5.0.14版本
上传解压源码后开始编译配置

1.创建用户

useradd -r -s /sbin/nologin zabbix

注:如果 Zabbix server 和 agent 运行在相同的机器上,建议使用不同的用户运行来 Zabbix server 和 agent。 否则,如果两者都作为同一用户运行,则 Zabbix agent 可以访问 Zabbix server 配置文件,并且可以轻松检索到 Zabbix 中的任何管理员级别的用户,例如,数据库密码。

2.在MYSQL中创建数据库和用户

注:使用utf8mb4会导致后续导入sql时索引超长的问题,故使用utf8。
CREATE DATABASE  `zabbix` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;

3.导入数据

按顺序导入
mysql -uzabbix -p123456 zabbix < database/mysql/schema.sql
mysql -uzabbix -p123456 zabbix < database/mysql/images.sql
mysql -uzabbix -p123456 zabbix < database/mysql/data.sql

4.编译安装

./configure --prefix=/app/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
如果只装server端把--enable-agent去掉

编译时由于之前编译nginx php redis已经安装了部分包,现在还缺的如下
yum install -y net-snmp net-snmp-devel libevent-devel java-1.8.0-openjdk-devel curl-devel

然后
make && make install

5.配置启动脚本

cp misc/init.d/fedora/core/zabbix_server /etc/init.d/
cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/

vim /etc/init.d/zabbix_server
vim /etc/init.d/zabbix_agent
修改启动目录
BASEDIR=/app/zabbix

systemd脚本
vim /usr/lib/systemd/system/zabbix-server.service

[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/app/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/app/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/app/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.target



vim /usr/lib/systemd/system/zabbix-agent.service

[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/app/zabbix/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/app/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStart=/app/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.target

6.修改配置文件

先创建日志目录
mkdir /app/zabbix/log
chown zabbix.zabbix /app/zabbix/log

编辑配置
vim /app/zabbix/etc/zabbix_server.conf
改下面选项
PidFile=/app/zabbix/zabbix_server.pid
LogFile=/app/zabbix/log/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBPort=3306
Timeout=30

vim /app/zabbix/etc/zabbix_agentd.conf
改下面选项
PidFile=/app/zabbix/zabbix_agentd.pid
LogFile=/app/zabbix/log/zabbix_agentd.log
Timeout=30

7.启动

systemctl daemon-reload
systemctl start zabbix-server.service
systemctl status zabbix-server.service

出现报错
error while loading shared libraries: libmysqlclient.so.21: cannot open shared object file: No such file or directory
搜索发现这文件在mysql里有

创建软连接
ln -s /usr/local/mysql/lib/libmysqlclient.so.21 /usr/lib64/

再次启动,竟然报权限不足
error while loading shared libraries: libmysqlclient.so.21: cannot open shared object file: Permission denied

干脆复制一个过去。。
cp /usr/local/mysql/lib/libmysqlclient.so.21.0.16 /usr/lib64/libmysqlclient.so.21

启动成功。。。

配置WEB页面

复制源码包中的PHP页面到WEB目录
cp ui/* /html/zabbix -r

进入页面192.168.1.17

发现PHP缺少相关模块,根据给出的提示增加选项重新编译

./configure --prefix=/app/php \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-openssl \
--with-pdo-mysql=mysqlnd \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm  \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-maintainer-zts \
--with-gd \
--enable-bcmath \
--with-ldap \
--with-gettext \
--disable-fileinfo && make -j 2 && make install

编译过程提示找不到这些jpeglib.h,png.h,freetype-config,ldap.h
安装确缺失包
yum -y install libjpeg-devel libpng-devel freetype-devel openldap-devel

如果提示Cannot find ldap libraries in /usr/lib
cp -frp /usr/lib64/libldap* /usr/lib/

如果提示ext/ldap/.libs/ldap.o: undefined reference to symbol
在PHP源码目录下 vim Makefile 
找到 EXTRA_LIBS = -lcrypt 行,在行末添加 -llber 保存退出再make

修改PHP配置为一下值
vim /etc/php.ini
post_max_size = 16M
max_execution_time = 300
改为 max_input_time = 300
date.timezone = Asia/Shanghai

启动PHP服务再次进入进入页面192.168.1.17配置即可

修改默认字体

1.在WEB目录中新建文件夹assets/fonts
2.上传字体文件到新建的文件夹,我这里用simkai.ttf
3.修改配置文件

进入WEB目录
vim include/defines.inc.php
找到字体名称修改为自己上传的字体名称
define('ZBX_GRAPH_FONT_NAME',           'simkai');

自定义模板监控nginx

监控nginx需要用到http_stub_status模块
编译的时候使用 --with-http_stub_status_module
1.修改nginx配置

vim /app/nginx/nginx.conf
添加
location /nginx_status {
	stub_status;
	allow 127.0.0.1;
	deny all;
}

2.添加监控脚本

vim /app/zabbix/sh/check_nginx.sh

#!/bin/bash 
nginx_status_fun(){ #函数内容
	NGINX_PORT=$1 #端口,函数的第一个参数是脚本的第二个参数,即脚本的第二个参数是段端口号
	NGINX_COMMAND=$2 #命令,函数的第二个参数是脚本的第三个参数,即脚本的第三个参数是命令
	nginx_active(){ #获取nginx_active数量,以下相同,这是开启了nginx状态但是只能从本机看到
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
        }
	nginx_reading(){ #获取nginx_reading状态的数量
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
       }
	nginx_writing(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
       }
	nginx_waiting(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
       }
	nginx_accepts(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
       }
	nginx_handled(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
       }
	nginx_requests(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
       }
  	case $NGINX_COMMAND in
		active)
			nginx_active;
			;;
		reading)
			nginx_reading;
			;;
		writing)
			nginx_writing;
			;;
		waiting)
			nginx_waiting;
			;;
		accepts)
			nginx_accepts;
			;;
		handled)
			nginx_handled;
			;;
		requests)
			nginx_requests;
		esac 
}

main(){ #主函数内容
	case $1 in #分支结构,用于判断用户的输入而进行响应的操作
		nginx_status) #当输入nginx_status就调用nginx_status_fun,并传递第二和第三个参数
			nginx_status_fun $2 $3;
			;;
		*) #其他的输入打印帮助信息
			echo $"Usage: $0 {nginx_status key}"
	esac #分支结束符
}

main $1 $2 $3

添加执行权限
chmod a+x /app/zabbix/sh/check_nginx.sh

测试脚本是否能在SHELL运行
bash /app/zabbix/sh/check_nginx.sh status 80 active

3.在zabbix配置中添加自定义的监控项

vim /app/zabbix/etc/zabbix_agentd.conf
添加选项,格式:key名称,shell命令
UserParameter=nginx.status[*],/app/zabbix/sh/check_nginx.sh $1 $2 $3
'[*]'是把server端的参数传进去

测试脚本是否能在zabbix运行
/app/zabbix/bin/zabbix_get -s 192.168.1.10 -p 10050 -k "nginx.status[status,80,active]"

4.进入zabbix网站,新建模板,群组可以自己建,也可以加到现有的。
在这里插入图片描述

5.点击刚刚新建的模板,创建应用集,名称随便填

6.创建监控项,监控项需要每一个键值都创建一次,这里举例一个
名称:niginx_active
类型:zabbix客户端
键值:nginx.status[status,80,active]
更新时间:1m
历史数据保留时长:90d
趋势储存时间:365d
应用集:nginx _chk
在这里插入图片描述

7.在主机模板那关联自己新建的模板即可
在这里插入图片描述

如果出现问题,可以把日志级别改成debug级别,查看详细情况,查完记得改回去否则日志会很大

主动与被动模式的区别

主动与被动是对于zabbix agent来说的工作模式

主动模式 是有zabbix agent主动采集数据并返回给zabbix server,不再需要zabbix serve进行干预,因此主动模式在一定程度上可减轻zabbix server的压力。

被动模式 就是由zabbix server向zabbix agent发出指令获取数据,即zabbix agent被动的去获取数据并返回给zabbix server,zabbix server周期性的向agent 索取数据。
这种模式的最大问题就是会加大zabbix server的工作量,在数百台服务器的环境下zabbix server不能及时获取到最新数据,但这也是默认的工作方式。

zabbix proxy编译安装

zabbix 是一个分布式的监控系统,支持通过代理服务器zabbix proxy收集zabbix agent的数据,然后把收集保存在本地数据库并发送给zabbix server进行统一存储和展示。

1.跟编译server时一样安装相关支持包和创建用户

yum install -y net-snmp net-snmp-devel libevent-devel java-1.8.0-openjdk-devel curl-devel libxml2-devel

useradd -r -s /sbin/nologin zabbix

2.编译安装

 ./configure --prefix=/usr/local/zabbix --enable-proxy --enable-agent --withmysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java

3.创建数据库和专用用户

CREATE DATABASE  `zabbix_proxy` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'zabbix_porxy'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix_porxy'@'localhost';

主动和被动模式分别需要创建额外的数据库
create database zabbix_proxy_active character set utf8 collate utf8_bin;
GRANT ALL PRIVILEGES ON zabbix_proxy_active.* TO 'zabbix_porxy'@'localhost';

create database zabbix_proxy_passive character set utf8 collate utf8_bin;
GRANT ALL PRIVILEGES ON zabbix_proxy_passive.* TO 'zabbix_porxy'@'localhost';

FLUSH PRIVILEGES;

导入数据库
mysql -uzabbix -p123456 zabbix_porxy < database/mysql/schema.sql

4.zabbix proxy主动模式配置文件

ProxyMode=0 #0为主动,1为被动
Server=192.168.1.10 #zabbix server服务器的地址或主机名
Hostname=zabbix-proxy #代理服务器名称,需要与zabbix server添加代理时候的proxy name是一致的!
LogFile=/app/zabbix/zabbix_proxy.log
DBHost=192.168.1.11 #数据库服务器地址
DBName=zabbix_proxy #使用的数据库名称
DBUser=proxy #连接数据库的用户名称
DBPassword=123456 #数据库用户密码
DBPort=3306 #数据库端口
ProxyLocalBuffer=3 #已经提交到zabbix server的数据保留时间
ProxyOfflineBuffer=24 #未提交到zabbix server的时间保留时间
HeartbeatFrequency=60 #心跳间隔检测时间,默认60秒,范围0-3600秒,被动模式不使用
ConfigFrequency=5 #间隔多久从zabbix server 获取监控信息
DataSenderFrequency=5 #数据发送时间间隔,默认为1秒,范围为1-3600秒,被动模式不使用
StartPollers=20 #启动的数据采集器数量
JavaGateway=192.168.1.10 #java gateway服务器地址,当需要监控java的时候必须配置否则监控不到数据
JavaGatewayPort=10052 #Javagatewa服务端口
StartJavaPollers=20 #启动多少个线程采集数据
CacheSize=2G #保存监控项而占用的最大内存
HistoryCacheSize=2G #保存监控历史数据占用的最大内存
Timeout=30 #监控项超时时间,单位为秒
LogSlowQueries=3000 #毫秒,多久的数据库查询会被记录到日志

5.WEB中添加代理设置
agent代理名称:zabbix-proxy
代理地址:192.168.1.10
然后添加

6.WEB中添加主动模式的监控模板
主要修改监控项中类型改成zabbix客户端(主动式),如果是克隆的模板可以全选监控项之后批量更新类型

7.agent主机配置
Server指向服务器和代理服务器

vim /app/zabbix/etc/zabbix_agentd.conf
Server=192.168.1.10,192.168.1.11
ServerActive=192.168.1.11
Hostname=192.168.1.11
10是服务器 11是代理

8.在WEB添加主机

主机名称:192.168.1.12
群组:test
agent代理地址:192.168.1.11
由agent代理程序监测选择刚刚添加的zabbix-proxy

最后再关联主动模式的模板即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值