文章目录
业务布局

整体布局

一. 常见的监控方案
开源监控软件:cacti、nagios、zabbix、smokeping、open-falcon等
- Cacti:基于
LAMP
平台展现的网络流量监测及分析工具
,通过SNMP技术或自定义脚本从目标设备/主机获取监控指标信息;其次进行数据存储,调用模板将数据存到数据库,使用rrdtool
存储和更新数据,通过rrdtool绘制结果图形;最后进行数据展现,通过Web方式将监控结果呈现出来。(IDC机房常用)
https://www.cacti.net/
https://github.com/Cacti/cacti - Nagios:用来
监视系统和网络
的开源应用软件,利用其众多的插件实现对本机和远端服务的监控,当被监控对象发生异常时,会及时向管理员告警,提供一批预设好的监控插件,用户可以之间调用,也可以自定义Shell脚本来监控服务,适合各企业的业务监控,可通过Web页面显示对象状态、日志、告警信息,分层告警机制及自定义监控相对薄弱
。(无法支持服务的自治)
https://www.nagios.org/ - Smokeping:是一款用于
网络性能监测
的开源监控软件,网络质量,稳定性等做检测,通过rrdtool制图
方式,图形化地展示网络的时延情况,进而能够清楚的判断出网络的即时通信情况。 (IDC的网络状况
,监控外网的)
https://oss.oetiker.ch/smokeping/
http://blogs.studylinux.net/?p=794 - Open-falcon:小米公司开源出来的监控软件,监控能力和性能较强。
https://www.open-falcon.org/
https://github.com/XiaoMi/open-falcon - Zabbix:目前使用较多的开源监控软件,
可横向扩展、自定义监控项、支持多种监控方式、可监控网络与服务
等。
https://www.zabbix.com/cn/
商业监控解决方案:
- 监控宝(https://www.jiankongbao.com/)、
- 听云(https://www.tingyun.com/)、……
二. Zabbix监控概述
https://www.zabbix.com/cn/
https://www.zabbix.com/cn/features
适用于任何IT基础架构、服务、应用程序和资源的解决方案
数据采集:周期性时序数据
df -TH
- 主机/对象:服务器、路由器、交换机、存储、防火墙、
IP
、PORT、URL、自定义监控对象… 采集目标
:监控项,指标数据(metrics data)
数据存储:
存储系统
:
SQL: MySQL/MariaDB(Zabbix)
NoSQL:Redis(Open-falcon)
rrd: Round Robin Database(Cacti)数据
:
历史数据: 每个监控项采集到的每个监控值
趋势数据: 趋势表里主要保留某个监控项一个小时内历史数据的最大值、最小值和平均值以及该监控项一个小时内所采集到的数据个数。阈值
:severity,可按照等级实现层级报警告警
:email, 短信, 微信,语音,故障自治愈
四大核心任务
采集:zabbix-server, zabbix-proxy,zabbix-agent
Agentless:SNMP,Telnet,ssh, IPMI, JMX,
Agent:zabbix agent
存储: zabbix database
展示:zabbix web
graph -> screen -> slideshow(将多个screen以幻灯片的方式进行轮流展示)
告警:
host (host groups) <- templates
host -> items -> triggers -> action (条件-conditions, 操作-operations)
zabbix架构
Server
Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。
数据库
所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。
Web 界面
为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
Proxy
Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。
Agent
Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
数据流
另外,回过头来整体的了解下 Zabbix 内部的数据流对Zabbix的使用也很重要。首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“X个server上CPU负载过高”这样的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用
安装zabbix—10050
提前做个数据库
最小化安装操作系统:
安装以下常用依赖包:
yum install -y vim iotop bc gcc gcc-c++ \
glibc glibc-devel pcre pcre-devel \
opensslopenssl-devel zip unzip \
zlib-devel net-tools lrzsz tree ntpdate \
telnet lsof tcpdump wget \
libevent libevent-devel
apt-get install -y apache2 apache2-bin apache2-data apache2-utils fontconfig-config fonts-dejavu-core fping libapache2-mod-php libapache2-mod-php7.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libfontconfig1 libgd3 libiksemel3 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.2-0 libodbc1 libopenipmi0 libsensors4 libsnmp-base libsnmp30 libsodium23 libssh2-1 libtiff5 libwebp6 libxpm4 php-bcmath php-common php-gd php-ldap php-mbstring php-mysql php-xml php7.2-bcmath php7.2-cli php7.2-common php7.2-gd php7.2-json php7.2-ldap php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-readline php7.2-xml snmpd ssl-cert ttf-dejavu-core libmysqlclient-dev libxml2-dev libxml2 snmp libsnmp-dev libevent-dev openjdk-8-jdk curl libcurl4-openssl-dev
安装 :1—yum安装
从官网就可以查到具体的安装步骤
https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=ubuntu&os_version=20.04_focal&db=mysql&ws=nginx
直接在官网中查看—安装步骤
- 下载
- 安装Zabbix server,Web前端,agent
- 创建初始数据库
- 导入初始架构和数据,系统将提示您输入新创建的密码
- 为Zabbix server配置数据库
- 为Zabbix前端配置PHP
- 启动Zabbix server和agent进程
- 配置Zabbix前端
Install Zabbix repository
wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
dpkg -i zabbix-release_5.0-1+focal_all.deb
apt update
安装Zabbix server,Web前端,agent
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent -y
日志格式
mkdir /var/log/zabbix
chown -R zabbix.zabbix /var/log/zabbix
vim /usr/local/zabbix/etc/zabbix_server.conf
创建初始数据库
[root@zabbix-web1 ~]# mysql
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql>grant all privileges on zabbix.* to zabbix@"192.168.%.%" identified by '123456';
修改监听地址 /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 0.0.0.0
重启服务
systemctl restart mariadb
验证
mysql -uzabbix -p123456 -h192.168.1.202
导入初始
架构和数据,系统将提示您输入新创建的密码
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 -h192.168.1.202 zabbix
最后查看zabbix数据库中的表
为Zabbix server配置数据库
编辑配置文件
vim /etc/zabbix/zabbix_server.conf
DBUser=zabbix
DBName=zabbix
DBPassword=123456
DBHost=192.168.1.202
DBPort=3306
ListenIP=0.0.0.0
ListenPort=10051
为Zabbix前端配置PHP
编辑配置文件 /etc/zabbix/apache.conf 或者nginx.conf配置时区
首先用php查看时什么版本
然后在指定版本的地方修改这一条
php_value date.timezone Asia/Shanghai
启动Zabbix server和agent进程,并为它们设置开机自启:
systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2
配置Zabbix前端
连接到新安装的Zabbix前端:
直接访问192.168.1.202
192.168.1.202/zabbix
最后登陆 Admin 密码admin
安装 :2—源码编译安装
首先配置数据库:单独
配置
systemctl disable firewalld
stop
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
iptables -F
注意:必须有httpd
和php
程序
yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl \
openssl-devel zip unzip zlib-devel net-tools lrzsz tree ntpdate telnet lsof tcpdump wget \
libevent libevent-devel
yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb
yum install mariadb-devel -y
这个是ubuntu18.版本的,如果是20里面的包版本可能不对
里面有mariadb,php环境配置,java,等
apt-get install apache2 apache2-bin apache2-data apache2-utils fontconfig-config fonts-dejavu-core fping libapache2-mod-php libapache2-mod-php7.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libfontconfig1 libgd3 libiksemel3 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.2-0 libodbc1 libopenipmi0 libsensors4 libsnmp-base libsnmp30 libsodium23 libssh2-1 libtiff5 libwebp6 libxpm4 php-bcmath php-common php-gd php-ldap php-mbstring php-mysql php-xml php7.2-bcmath php7.2-cli php7.2-common php7.2-gd php7.2-json php7.2-ldap php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-readline php7.2-xml snmpd ssl-cert ttf-dejavu-core libmysqlclient-dev libxml2-dev libxml2 snmp libsnmp-dev libevent-dev openjdk-8-jdk curl libcurl4-openssl-dev php-gettext php-xml php-net-socket php-gd
apt-get update
apt-get install mariadb-server -y
zabbix机器要安装mariadb-client
创建初始数据库
[root@zabbix-web1 ~]# mysql
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql>grant all privileges on zabbix.* to zabbix@"192.168.%.%" identified by '123456';
修改监听地址 /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 0.0.0.0
重启服务
systemctl restart mariadb
ss -ntl
验证
mysql -uzabbix -p123456 -h192.168.1.202
在官网中查看产品手册
https://www.zabbix.com/download_sources
安装jdk,可以编译--需要配置java的环境变量
也可以apt装
apt-get install openjdk-8-jdk
[root@zabbix-server ~]# cd /usr/local/src/
[root@zabbix-server src]# zabbix-4.0.1.tar.gz
[root@zabbix-server src]# tar xvf zabbix-4.0.1.tar.gz
useradd zabbix -s /sbin/nologin
cd zabbix-5.2.6/src
./configure --prefix=/usr/local/zabbix --enable-server \
--enable-agent --with-mysql --with-net-snmp \
--with-libcurl --with-libxml2 --enable-java
结果一定是 echo $?
0
编译时常出现错误
编译安装出错解决方法
C
compiler cannot create executables
apt install -y build-essential
- 如果出现
configure: error: MySQL library not found
安装这个包
apt-get install -y libmysqlclient-dev
yum -y install mysql-devel
最后要能找到这个文件
find / -name mysql_config
- 出现则个错误
configure: error: Not found libxml2 library
如果不行直接咱装libxml2*
apt-get -y install libxml2-dev libxml2
yum install libxml2 libxml2-devel -y
configure error: Invalid Net-SNMP directory - unable to find net-snmp-config
apt-get install snmp snmpd libopenipmi-dev -y
apt-get -y install libsnmp-dev
yum install -y net-snmp-devel
configure: error: Curl library not found
apt-get -y install libcurl4-openssl-dev
yum install curl-devel -y
- configure: error: Unable to use
libevent
(libevent check failed)
apt-get -y install libevent-dev
- configure: error: Unable to find “
javac
” executable in path
apt-get -y install openjdk
- configure: error: Unable to use
libpcre
(libpcre check failed)
apt-get -y install libpcre3 libpcre3-dev
apt-get install -y make
最后开始安装
make && make install
导入数据库:
先导入此文件,如果做zabbix代理21器,则只导入第一个
cd /usr/local/src/zabbix-5.2.6/
mysql -uzabbix -p123456 -h192.168.1.106 zabbix < database/mysql/schema.sql
mysql -uzabbix -p123456 -h192.168.1.106 zabbix < database/mysql/images.sql
mysql -uzabbix -p123456 -h192.168.1.106 zabbix < database/mysql/data.sql
复制启动脚本:
cp /usr/local/src/zabbix-4.0.1/misc/init.d/fedora/core/zabbix_server /etc/init.d//etc/init.d/
cp /usr/local/src/zabbix-4.0.1/misc/init.d/fedora/core/zabbix_agent /etc/init.d//etc/init.d/
或者
cp misc/init.d/tru64/zabbix* /etc/init.d/
更改启动脚本:
vim /etc/init.d/zabbix_server
vim /etc/init.d/zabbix_agent
21 # Zabbix-Directory
22 BASEDIR=/usr/local/zabbix
安装apache
yum install httpd -y
将所有的php程序拷贝 4版本为frontends/php/* 这里的是5版本的
cd zabbix-5.2.1/
mkdir /var/www/html/zabbix
cp -a ui/* /var/www/html/zabbix
chown -R apache:apache /var/www/html/
#日志路径
mkdir /var/log/zabbix
chown -R zabbix.zabbix /var/log/zabbix
[root@zabbix-server ~]# grep "^[a-Z]" /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
DBHost=192.168.1.103 #数据库地址
DBName=zabbix
DBUser=zabbix
DBPassword=123456
ListenPort=10050
DBPort=3306
Timeout=30
LogSlowQueries=3000
vim /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/var/log/zabbix/zabbix_agentd.log
这样就可以直接启用
/etc/init.d/zabbix-agent start
/etc/init.d/zabbix-server start
ss -ntl
配置server启动脚本
Server systemd启动脚本
ln -s /usr/local/zabbix/sbin/zabbix_server /usr/sbin/
mkdir /run/zabbix
chown -R zabbix.zabbix /run/zabbix
vim /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start zabbix-server
systemctl enable zabbix-server
端口为10051
Agent systemd启动脚本
ln -s /usr/local/zabbix/sbin/zabbix_agentd /usr/sbin/
vim /lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start zabbix-agent
systemctl enable zabbix-agent
访问web
systemctl restart zabbix-server zabbix-agent apache2 或httpd
192.168.1.103/zabbix
解决报错
yum install php-gettext php-session php-ctype php-xmlreader php-xmlwriter php-xml php-net-socket php-gd php-mysql
如下更改vim /etc/php.ini:
post_max_size = 8M 改为 post_max_size = 16M
max_execution_time = 30 改为 max_execution_time = 300
max_input_time = 60 改为 max_input_time = 300
date.timezone = Asia/Shanghai
重启http再次访问web
systemctl restart httpd
或
systemctl restart apache2
1. 让界面展示为中文(有乱码)
英文Ubuntu系统安装中文支持,中文UTF-8
第一步,安装中文包:
sudo apt-get install language-pack-zh*
第二步,配置相关环境变量:
sudo vim /etc/environment
在文件中增加语言和编码的设置:
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"
我的配置文件显示如下:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
LANG="zh_CN.UTF-8"
UNZIP="-O CP936"
ZIPINFO="-O CP936"
第三步,重新设置本地配置:先择中文的
sudo dpkg-reconfigure locales
重启服务:再次访问web界面就可以修改为中文
systemctl restart zabbix-server zabbix-agent apache2
2. 让界面展示为中文(无乱码)
复制字体文件: 控制面板\字体设置----找一个中文字体
上传到服务器:
find / -name "graphfont*"
/usr/share/zabbix/assets/fonts/graphfont.ttf
/usr/share/zabbix/assets/fonts/
注意要修改权限 777
编辑配置文件使用新字体:
vim /usr/share/zabbix/include/defines.inc.php
将里面的graphfont 默认的改为 SIMKAI
重启服务
systemctl restart zabbix-server zabbix-agent apache2
测试数据
yum install zabbix-get -y
-s指定主机,或者主机名
-p端口
-k 测试具体的监控项
avg几分钟
zabbix_get -s 192.168.15.204 -p 10050 -k "system.cpu.load[all,avg1]"
可以检测这些
测试主机名