技术标签: zabbix 集群监控 nagios linux cacti Linux集群
监控很重要,是必不可少的,运维最重要的就是监控和备份
宕机损失案例:美国呼叫中心 24000 美金/小时
Cacti是RRDtool的前端应用程序,RRDtool是一种用于存储实时变化数据的开源数据库工具,其使用SNMP作为其默认收集算法,但如果你喜欢本地Perl的PHP脚本,那么你也可以使用它们。Cacti 是一款开源的基于Web的网络监控和专为数据记录而设计的图形化工具。它可以用于实时显示网络数据,如CPU负载或带宽利用率。
软件设计目标: 流量与性能监测为主
数据展示平台: B/S
数据收集方式: SNMP(Simple Network Management Protocol)
Nagios 是一款用于监控IT基础架构和查看当前状态、历史日志和基本报告的开源软件工具。 Nagios 用户可以监控系统指标,网络协议,应用程序,服务器,网络基础架构和接收故障警报。Nagios提供三种类型的网络管理工具,Nagios XL,Nagios日志服务器和Nagios网络分析器。其中 Nagios XL 最适合网络监控(尽管其他两种也提供网络监控服务)。
软件设计目标: 服务与性能监测为主
数据展示平台: B/S
数据收集方式: C/S(预定义/自定义脚本)
Zabbix 作为企业级的网络监控工具,通过从服务器,虚拟机和网络设备收集的数据提供实时监控,自动发现,映射和可扩展等功能。Zabbix的企业级监控软件为用户提供内置的Java应用服务器监控,硬件监控,VMware监控和CPU,内存,网络,磁盘空间性能监控。
软件设计目标: 全功能监控软件
数据展示平台: B/S
数据收集方式: C/S(官方客户端)
Cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。
组合框架: LAP
数据收集: SNMP
绘制图形: RRDtool
(简单网络管理协议)用于收集设备内部发生的数据,如负载、磁盘状态、带宽之类
收集数据展示图
官方定义: RRDtool 是开源行业标准,高性能的时间序列数据记录和绘图系统。RRDtool 可以很容易 地集成到 shell 脚本、perl、python、ruby、lua 或 tcl 应用程序中
C/S 模式:采集监测数据
B/S 模式:管理监测数据
Cacti的工作过程
首先通过LAMP平台部署Cacti监控工具,之后通过客户端的web登录Cacti进行对其他客户端的设置,可以从下图看到Cacti采集数据时必须要使用SNMP协议来连接客户端进而能够采集数据,也就是说客户端必须支持SNMP协议,监控之后通过RRDtool来生成图表。
两台服务器
10.10.10.11 Cacti服务端
10.10.10.12 客户端(被监控)
可以参考之前的文章2.3章节搭建基础环境和配置本地yum源
https://blog.csdn.net/w918589859/article/details/111146921
[[email protected] ~]$ mount -t iso9660 /dev/cdrom /mnt/cdrom #挂载本地yum光盘
[[email protected] ~]$ yum -y install httpd mysql mysql-server mysql-devel libxml2-devel mysql-connector-odbc perl-DBD-MySQL unixODBC php php-mysql php-pdo # 安装基础环境 LAMP
[[email protected] ~]$ service httpd start && chkconfig httpd on# 启动 Apache
[[email protected] ~]$ service mysqld start && chkconfig mysqld on# 启动 MySQL
[[email protected] ~]$ mysqladmin -uroot password root #设置mysql密码
[[email protected] ~]$ yum -y install net-snmp net-snmp-utils net-snmp-libs lm_sensors # 安装 SNMP、主板信息监控 所需软件包
所需软件百度网盘
链接:https://pan.baidu.com/s/1wfgE3ISFsBddoO2JuMdRiA
提取码:ton9
#上传cacti.iso
[[email protected] ~]$ yum -y install lrzsz #方便把软件直接拖到xshell里面
[[email protected] ~]$ mkdir /iso
[[email protected] ~]$ mount -o loop cacti.iso /iso
[[email protected] ~]$ cp -a /iso/* .
[[email protected] ~]$ tar -zxf rrdtool-1.4.5.tar.gz && cd rrdtool-1.4.5 # 源码编译安装 RRDTOOL
[[email protected] ~]$ ./configure --prefix=/usr/local
#如出错,按以下步骤解决,解决源码编译报错依赖
#第 1 步
[[email protected] ~]$ cd /root && tar zxvf cgilib-0.5.tar.gz && cd cgilib-0.5 && make
[[email protected] ~]$ cp libcgi.a /usr/local/lib && cp cgi.h /usr/include
#第 2 步
[[email protected] ~]$ yum -y install libart_lgpl-devel pango-devel* cairo-devel*
#重新执行./configure
[[email protected] ~]$ cd /root/rrdtool-1.4.5
[[email protected] ~]$ ./configure --prefix=/usr/local
[[email protected] ~]$ make && make install
部署源码包,并安装补丁文件
[[email protected] ~]$ cd /root/cacti
[[email protected] ~]$ tar -zxf cacti-0.8.7g.tar.gz # 解压 Cacti 网站
[[email protected] ~]$ mv cacti-0.8.7g/ /var/www/html/cacti # 拷贝至 Apache 默认路径
# 为 Cacti 代码进行补丁更新
[[email protected] ~]$ cd /var/www/html/cacti
[[email protected] ~]$ patch -p1 -N < /root/cacti/data_source_deactivate.patch
[[email protected] ~]$ patch -p1 -N < /root/cacti/graph_list_view.patch
[[email protected] ~]$ patch -p1 -N < /root/cacti/html_output.patch
[[email protected] ~]$ patch -p1 -N < /root/cacti/ldap_group_authenication.patch
[[email protected] ~]$ patch -p1 -N < /root/cacti/script_server_command_line_parse.patch
[[email protected] ~]$ patch -p1 -N < /root/cacti/ping.patch
[[email protected] ~]$ patch -p1 -N < /root/cacti/poller_interval.patch
添加检测数据的用户账户,更改权限,保证读写数据正常
[[email protected] ~]$ cd /var/www/html/cacti
[[email protected] ~]$ useradd runct # 添加 runct 用户,用于 RRDTOOL 运行
[[email protected] ~]$ chown -R root.root ./
[[email protected] ~]$ chown -R runct.runct rra/ log/
授权数据库用户,导入初始化数据
[[email protected] ~]$ mysql -u root -proot
mysql> create database cactidb default character set utf8; # 创建 cactidb 数据库
mysql> grant all on cactidb.* to 'cactiuser'@'localhost' identified by '[email protected]'; # 把 cactiuser 用 户赋予 cactidb 库的所有权限
mysql> quit
[[email protected] ~]$ mysql -uroot -p cactidb < cacti.sql # cacti 数据库还原
修改 cacti 配置文件
[[email protected] ~]$ vim include/config.php # 配置 cacti 页面连接数据库的认证信息
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cactidb";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "[email protected]";
$database_port = "3306";
调整 http 配置
[[email protected] ~]$ vim /etc/httpd/conf/httpd.conf # 配置 Apache 对 cacti 的用户权限
Listen 80
Listen 80 DocumentRoot "/var/www/html/cacti" #默认网站路径
<Directory "/var/www/html/cacti">
options None
AllowOverride None
Order allow,deny
Allow from al
</Directory>
DirectoryIndex index.php index.html #默认主页
AddDefaultCharset utf-8 #默认字符集
[[email protected] ~]$ service httpd restart
浏览器输入10.10.10.11
访问,账户名:admin
密码:admin
[[email protected] ~]$ mount -t iso9660 /dev/cdrom /mnt/cdrom #挂载本地yum光盘
[[email protected] ~]$ yum -y install net-snmp net-snmp-utils lm_sensors # 安装 SNMP、主板信息监控所需软件包
[[email protected] ~]$ vim /etc/snmp/snmpd.conf
#41服务器地址 默认为 default 共同体名称 默认为 public
#62开放所有的 SNMP 查询权限 all 默认为 SystemView
# group context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact all none none
view all included .1 80
# 85支持各种查询与访问 取消注释符号
[[email protected] ~]$ service snmpd start && chkconfig snmpd on
[[email protected] ~]$ su - runct
[[email protected] ~]$ snmpwalk -v 2c -c public 10.10.10.12 tcp
[[email protected] ~]$ php /var/www/html/cacti/poller.php # 生成对应的监控图表
[[email protected] ~]$ crontab -e
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null # 配置 RRDTOOL 的轮训任务
[[email protected] ~]$ service crond start
exit
Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
Cacti
Nagios
nagios的四种监控状态
Nagios可以识别四种状态返回信息。
命令(Commands)
“命令”用于定义Nagios如何执行某特定的监控工作。它是基于某特定的Nagios插件定义出的一个抽象层,通常包含一组要执行的操作。
时段(Time periods)
“时段”用于定义某“操作”可以执行或不能执行的日期和时间跨度,如工作日内的每天8:00-18:00等;
联系人和联系人组(Contacts and contact groups)
“联系人”用于定义某监控事件的通知对象、要通知的信息以及这些接收通知者何时及如何接收通知;一个或多个联系人可以定义为联系人组,而一个联系人也可以属于多个组;
主机和主机组(host and host groups)
“主机”通常指某物理主机,其包括此主机相关的通知信息的接收者(即联系人)、如何及何时进行监控的定义。主机也可以分组,即主机组(host groups),一个主机可同时属于多个组;
服务(Services)
“服务”通常指某主机上可被监控的特定的功能或资源,其包括此服务相关的通知信息的接收者、如何及何时进行监控等。服务也可以分组,即服务组(Service groups),一个服务可同时属于多个服务组;
Nagios 监控实现原理
Nagios 通过NRPE 来远端管理服务
Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。
通过SSL,check_nrpe 连接远端机子上的NRPE daemon
NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,…etc)
最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。
Nagios 依次读取队列中的信息,再把结果显示出来。
10.10.10.11---- Nagios 服务端
10.10.10.12---- 被监控端
# 需要注意 *gb* 必须按照视屏的方式进行后安装
[[email protected] ~]$ mount -t iso9660 /dev/cdrom /mnt/cdrom #挂载本地yum光盘
[[email protected] ~]$ yum -y install httpd gcc glibc glibc-common php php-mysql
[[email protected] ~]$ cd /mnt/cdrom/Packages
[[email protected] ~]$ yum -y install *gd*
[[email protected] ~]$ groupadd nagcmd # 创建运行组
[[email protected] ~]$ useradd -m nagios # 创建运行用户 nagios
[[email protected] ~]$ usermod -a -G nagcmd nagios # 将 nagios 用户添加到 nagcmd 组中
[[email protected] ~]$ usermod -a -G nagcmd apache # 将 apache 用户添加到 nagcmd 组中
所需软件百度网盘
链接:https://pan.baidu.com/s/1wfgE3ISFsBddoO2JuMdRiA
提取码:ton9
#上传 nagios.iso
[[email protected] ~]$ mkdir /iso
[[email protected] ~]$ mount -o loop nagios.iso /iso
[[email protected] ~]$ cp -a /iso/* .
[[email protected] ~]$ cd /root
[[email protected] ~]$ tar -zxvf nagios-3.3.1.tar.gz && cd nagios # 解压 Nagios 源码包
[[email protected] ~]$ ./configure --with-command-group=nagcmd --enable-event-broker # 生成 Nagios Makefile 文件
[[email protected] ~]$ make all
[[email protected] ~]$ make install
[[email protected] ~]$ make install-init
[[email protected] ~]$ make install-config
[[email protected] ~]$ make install-commandmode
[[email protected] ~]$ vim /usr/local/nagios/etc/objects/contacts.cfg
email [email protected] #这个是默认设置
[[email protected] ~]$ make install-webconf
[[email protected] ~]$ htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password: #123
Re-type new password: #123
Adding password for user nagiosadmin
[[email protected] ~]$ service httpd restart
[[email protected] ~]$ cd /root
[[email protected] ~]$ tar zxf nagios-plugins-1.4.14.tar.gz
[[email protected] ~]$ cd nagios-plugins-1.4.14
[[email protected] ~]$ ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-mysql --enable-perl-modules
[[email protected] ~]$ make && make install
[[email protected] ~]$ chkconfig --add nagios && chkconfig nagios on
[[email protected] ~]$ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
[[email protected] ~]$ service nagios start
浏览器输入10.10.10.11/nagios
访问,用户名nagiosadmin
,密码123
nagios目录解释
[[email protected] ~]$ cd /usr/local/nagios/
bin:Nagios 可执行程序所在目录 nagios nagiostats nrpe
etc:配置文件
libexec:Nagios 外部插件所在目录 check_ifstatus
sbin :Nagios CGI 文件所在目录,也就是执行外部命令所需文件所在的目录
histogram.cgi showlog.cgi statuswrl.cgi
share:Nagios网页文件所在的目录
var:Nagios 日志文件、lock 等文件所在的目录 nagios.log
[[email protected] ~]$ mount -t iso9660 /dev/cdrom /mnt/cdrom #挂载本地yum光盘
[[email protected] ~]$ scp [email protected].10.10.11:/root/nagios.iso /root
[[email protected] ~]$ mkdir /iso
[[email protected] ~]$ mount -o loop nagios.iso /iso
[[email protected] ~]$ cp -a /iso/* .
[[email protected] ~]$ useradd nagios
[[email protected] ~]$ tar zxf nagios-plugins-1.4.14.tar.gz
[[email protected] ~]$ cd nagios-plugins-1.4.14
[[email protected] ~]$ ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[[email protected] ~]$ make all && make install
[[email protected] ~]$ yum -y install openssl openssl-devel
[[email protected] ~]$ cd && tar -zxvf nrpe-2.12.tar.gz
[[email protected] ~]$ cd nrpe-2.12
[[email protected] ~]$ ./configure --enable-ssl --with-ssl-lib=/usr/lib64/
[[email protected] ~]$ make all
[[email protected] ~]$ make install-plugin
[[email protected] ~]$ make install-daemon
[[email protected] ~]$ make install-daemon-config
[[email protected] ~]$ vim /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=10.10.10.11,127.0.0.1 #添加服务器ip
[[email protected] ~]$ /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
[[email protected] ~]$ yum -y install openssl openssl-devel
[[email protected] ~]$ cd && tar -zxvf nrpe-2.12.tar.gz
[[email protected] ~]$ cd nrpe-2.12
[[email protected] ~]$ ./configure --enable-ssl --with-ssl-lib=/usr/lib64/
[[email protected] ~]$ make all
[[email protected] ~]$ make install-plugin
[[email protected] ~]$ vim /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
[[email protected] ~]$ cd /usr/local/nagios/etc/objects
[[email protected] ~]$ cp -a windows.cfg linux.cfg
[[email protected] ~]$ sed -i 's/windows/linux/g' linux.cfg
[[email protected] ~]$ vim linux.cfg
define host{
use linux-server ; Inherit default values from a template
host_name linux ; The name we're giving to this host alias My linux Server ; A longer name associated with the host
address 10.10.10.12 ; IP address of the host #(客户端 IP 既被监控的 IP)
}
#dG,光标以后全部删除,然后添加如下内容
define service{
#负载检测
use generic-service
host_name linux
service_description check-load
check_command check_nrpe!check_load
}
define service{
#用户数
use generic-service
host_name linux
service_description check-users
check_command check_nrpe!check_users
}
define service{
#总进程
use generic-service
host_name linux
service_description otal_procs
check_command check_nrpe!check_total_procs
}
[[email protected] ~]$ vim /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
cfg_file=/usr/local/nagios/etc/objects/linux.cfg
#检测配置有没有错误
[[email protected] ~]$ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
[[email protected] ~]$ service nagios restart
1)被监控端安装 NSClient+±0.3.8-Win32.msi
2)安装完成后修改配置文件 NSC.ini 把需要的库都打开
3)在监控服务器上修改 nagios 配置文件 nagios.cfg
[[email protected] ~]$ vim /usr/local/nagios/objects/windows.cfg
define host{
use windows-server ; Inherit default values from a template
host_name winserver ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 10.10.10.99 ; 你主机的 IP
}
[[email protected] ~]$ vim //usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
[[email protected] ~]$ service nagios restart
使用的最多
zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 ( 基于 GPL V2 ) zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent
常用组件
Zabbix监控原理:
Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)
zabbix 安装完成后会产生 5 个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、 zabbix_server
,zabbix_java_gateway
是可选,这个需要另外安装
Zabbix监控概念
主机(host): 被监控的网络设备,可以写IP或者DNS;
主机组(host group): 主机组用于管理主机,可以批量设置权限;
监控项(item): 具体监控项,items值由独立的keys进行识别;
触发器(trigger): 为某个items设置触发器,达到触发器会执行action动作;
事件(event): 例如达到某个触发器,称之为一个事件;
动作(action): 对于特定事件事先定义的处理方法,默认可以发送信息及发送命令;
报警升级(escalation): 发送警报或执行远程命令的自定义方案,如隔5分钟发送一次警报,共发送5次等。
媒介(media): 发送通知的方式,可以支持Mail、SMS、Scripts等;
通知(notification): 通过设置的媒介向用户发送的有关某事件的信息;
远程命令 达到触发器,可以在被监控端执行命令;
模板(template): 可以快速监控被监控端,模块包含:item、trigger、graph、screen、application;
web场景(web scennario) 用于检测web站点可用性,监控HTTP关键词;
web前端(frontend): Zabbix的web接口;
图形(graph) 监控图像;
屏幕(screens) 屏幕显示;
幻灯(slide show) 幻灯显示;
操作系统
centos7,最小化安装
网络类型: 两个网卡,一个仅主机模式,一个nat模式
【编辑】----【虚拟网络编辑器】----修改仅主机的网卡。关闭DHCP服务,子网改成10.10.10.0
#第一块网卡
[[email protected] ~]$ vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #修改此处,改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=48f11f35-eb9f-40de-92f8-85492b0258c5
DEVICE=ens33
ONBOOT=yes #开机自启,改为yes
IPADDR=10.10.10.11 #ip地址
NETMASK=255.255.255.0 #子网掩码
#第二块网卡
[[email protected] ~]$ vi /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #修改此处,改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
UUID=48f11f35-eb9f-40de-92f8-85492b0258c5
DEVICE=ens34
ONBOOT=yes #开机自启,改为yes
[[email protected] ~]$ yum -y install net-tools
关闭防火墙
[[email protected] ~]$ systemctl stop firewalld && systemctl disable firewalld
关闭selinux
[[email protected] ~]$ setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
[[email protected] ~]$ getenforce
设置yum源可以参考之前的文章
https://blog.csdn.net/w918589859/article/details/109191537
安装常用工具
[[email protected] ~]$ yum -y install lrzsz vim gcc gcc-c++
保存快照
zabbix需要有lamp环境
#安装mariadb http php,数据库centos7是mariadb,和mysql一样的
[[email protected] ~]$ yum -y install mariadb mariadb-server httpd php php-mysql
[[email protected] ~]$ systemctl start httpd && systemctl enable httpd
[[email protected] ~]$ systemctl start mariadb && systemctl enable mariadb
#mariadb不会初始化数据库,这里需要手动初始化一下
[[email protected] ~]$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): #mysql的root密码,还没设置,直接回车即可
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y #是否设置root密码,输入y是
New password: root #输入密码
Re-enter new password: root #再次数据密码,两次需要一致
Password updated successfully!
Reloading privilege tables..
... Success!
....
Remove anonymous users? [Y/n] y #移除匿名用户,输入y是
....
Disallow root login remotely? [Y/n] y #拒绝远程登陆,输入y是
....
Remove test database and access to it? [Y/n] y #移除测试数据库,输入y是
....
Reload privilege tables now? [Y/n] y #刷新权限表,输入y是
....
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
==========================================
[[email protected] ~]$ mysql -uroot -proot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
#安装的时候显示安装进度,安装zabbix官网yum源安装包
[[email protected] ~]$ rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
#导入密钥
[[email protected] ~]$ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
#安装zabbix连接数据库,web页面,agent部署在被监控的主机上
#被监控端只需要部署agent即可
[[email protected] ~]$ yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
初始化数据库(zabbix-server端操作)
[[email protected] ~]$ mysql -uroot -proot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to [email protected] identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
#导入zabbix初始化数据
#zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix -e "use zabbix;"
#zcat,先解压,在通过cat打开
[[email protected] ~]$ cd /usr/share/doc/zabbix-server-mysql-3.2.11
[[email protected] ~]$ zcat create.sql.gz | mysql -uroot -p zabbix
#查看表
[[email protected] ~]$ mysql -uroot -proot << EOF
use zabbix;
show tables;
EOF
配置zabbix_server的配置文件
[[email protected] ~]$ vim /etc/zabbix/zabbix_server.conf
DBHost=localhost #连接数据库地址
DBName=zabbix #连接数据库名
DBUser=zabbix #连接数据库用户名
DBPassword=zabbix #连接数据库用户密码
[[email protected] ~]$ systemctl start zabbix-server && systemctl enable zabbix-server
编辑Zabbix前端的PHP配置,zabbix_web
sed -i “s/;date.timezone =/date.timezone = Asia/Shanghai/g” /etc/php.ini
[[email protected] ~]$ vim /etc/httpd/conf.d/zabbix.conf
<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai #修改为上海的时区
</IfModule>
[[email protected] ~]$ systemctl restart httpd
调整时间同步
[[email protected] ~]$ yum -y install ntpdate
[[email protected] ~]$ ntpdate cn.pool.ntp.org
修改apached的配置文件设置访问路径
[[email protected] ~]$ cd /usr/share/zabbix/
[[email protected] ~]$ vim /etc/httpd/conf/httpd.conf
DocumentRoot "/usr/share/zabbix/" #修改为/usr/share/zabbix/
[[email protected] ~]$ systemctl restart httpd
浏览器输入10.10.10.11(zabbix服务端的ip)或者10.10.10.11/zabbix
,就能访问
检测的php的相关依赖,点击下一步
配置数据库相关信息
zabbix服务器端的相关信息,默认就行,下一步
输出了刚才设置的信息,直接点下一步
安装成功
然后就跳到登录界面了,用户名是Admin,密码是zabbix
server web展示显示中文
#修改被监控端的配置文件,agent前面已经安装
[[email protected] ~]$ vim /etc/zabbix/zabbix_agentd.conf
Server=10.10.10.11 #zabbix-server的ip
# ListenPort=10050 默认监听段口是tcp10050
ServerActive=10.10.10.11 #zabbix-server的ip
Hostname=10.10.10.11 #本机的ip地址,或者可解析的主机名
[[email protected] ~]$ systemctl start zabbix-agent && systemctl enable zabbix-agent
[[email protected] ~]$ netstat -anpt | grep :10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 13538/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 13538/zabbix_agentd
=================================================================
#如果需要监控的主机比较多,可以使用ansible部署agent
---
- hosts: test
remote_user: root
gather_facts: False
tasks:
- name: get localhost ip #获取ip
shell : ip addr show ens33|grep 'inet\b'|awk '{print $2}'|awk -F '/' '{print $1}'
register : info
- name: rpm1
shell: "rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.4-2.el7.x86_64.rpm"
- name: yum_zabbix
shell: "yum install -y zabbix-agent zabbix-get"
- name: update_Server
lineinfile:
path: /etc/zabbix/zabbix_agentd.conf
regexp: '^Server='
line: Server=10.3.118.200 #zabbix-server的ip
- name: update_ServerActive
lineinfile:
path: /etc/zabbix/zabbix_agentd.conf
regexp: '^ServerActive='
line: ServerActive=10.3.118.200 #zabbix-server的ip
- name: update_hostname
lineinfile:
path: /etc/zabbix/zabbix_agentd.conf
regexp: '^Hostname='
line: Hostname={
{
info.stdout}} #获取上面info变量的信息
#Hostname=10.10.10.11 #本机的ip地址,或者可解析的主机名
点击配置—主机,删除这个停用的监控,自己进行配置
点击创建主机
下面是主机的添加过程
首先创建一个主机组
配置-----> 主机群组-----> 创建主机群组(web页面右上角)-----> 添加组名,如:Zabbix agents(在弹出框中输入组名)----->添加
添加一个主机
配置 ----->主机 -----> 右上角在群组那里选择Zabbix agents-----> 点击创建主机
给此主机引用一条模板,模板定义了监控那些选项数据
然后点击模板弹框下面的选择,这里就会添加上刚才勾选的,然后点击添加才能添加上
然后返回主机添加页面,点击下面的添加即可
下面是添加完的效果图
最后看下图形效果
检测中-----> 图形----->然后就是选择要看什么了,如下图:
由上图可以看出,所有的汉字都是白框没有显示出来。
按Win+R键,输入fonts回车,将windows端的msyh.ttf字体文件(随便一个字体都可以)上传到 zabbix-server 服务器端的/var/www/html/zabbix/fonts目录中。
然后字体上传到zabbix-server服务器
#把上传的字体放到zabbix的fonts目录下
[[email protected] ~]$ mv msyh.ttc /usr/share/zabbix/fonts/
[[email protected] ~]$ cd /usr/share/zabbix/fonts/
#修改ttf的后缀
[[email protected] ~]$ cd /usr/share/zabbix/fonts/
[[email protected] ~]$ mv msyh.ttc msyh.ttf && chmod a+x msyh.ttf
#修改php配置文件
[[email protected] ~]$ vim /usr/share/zabbix/include/defines.inc.php
#修改 zabbix php 页面配置,将'graphfont' 修改为 msyh
define('ZBX_GRAPH_FONT_NAME', 'msyh'); // font file nam
刷新页面就会正常显示中文
监控另外一台linux服务器(10.10.10.12) 本次使用的是centos6系统,选择对应的版本,centos7源码包也提供了
所需软件百度网盘
链接:https://pan.baidu.com/s/1wfgE3ISFsBddoO2JuMdRiA
提取码:ton9
#上传zabbix-agent的rpm包,进行安装
[[email protected] ~]$ yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
[[email protected] ~]$ service httpd start && chkconfig httpd on
[[email protected] ~]$ echo "1111111" >> /var/www/html/index.html
==================================================
#修改被监控端的配置文件
[[email protected] ~]$ vim /etc/zabbix/zabbix_agentd.conf
Server=10.10.10.11 #zabbix-server的ip
# ListenPort=10050 默认监听段口是tcp10050
ServerActive=10.10.10.11 #zabbix-server的ip
Hostname=10.10.10.12 #本机的ip地址,或者可解析的主机名
[[email protected] ~]$ service zabbix-agent start && chkconfig zabbix-agent on
然后在web页面添加一个主机,步骤和 4.2.4 章节
一致
如果服务器比较多,一台一台在web页面配置比较麻烦,接下来配置自动发现
规则,自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法
两台centos6服务器
10.10.10.13--------agent(被监控端)
10.10.10.14--------agent(被监控端)
两台agent都要执行以下初始化操作
#从别的主机复制zabbix-agent的rpm包,进行安装
[[email protected] ~]$ scp [email protected].10.10.12:/root/zabbix-agent-3.2.1-1.el6.x86_64.rpm /root
[[email protected] ~]$ yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
[[email protected] ~]$ service httpd start && chkconfig httpd on
[[email protected] ~]$ echo "1111111" >> /var/www/html/index.html
==================================================
#修改被监控端的配置文件
[[email protected] ~]$ vim /etc/zabbix/zabbix_agentd.conf
Server=10.10.10.11 #zabbix-server的ip
# ListenPort=10050 默认监听段口是tcp10050
ServerActive=10.10.10.11 #zabbix-server的ip
Hostname=10.10.10.13 #本机的ip地址,或者可解析的主机名
#Hostname=10.10.10.14 #另一台是14
[[email protected] ~]$ service zabbix-agent start && chkconfig zabbix-agent on
配置自动发现步骤
在web页面点击【配置】------> 【自动发现】----->【创建发现规则】添加一个自动发现规则,定时扫描一个网段的机器有没有在线,然后在 【配置】------> 【动作】----->【事件源】选择自动发现的动作,告诉他,一旦自动发现 发现了一台机器后,就添加到主机监控里
【配置】------> 【动作】----->【事件源】选择自动发现的动作,然后点击【创建动作】
接下来就会跳转动作配置页面
然后点击操作,添加操作细节
最后点击【添加】
在web页面点击【配置】------> 【自动发现】----->【创建发现规则】添加一个自动发现规则
接下来就会跳转自动发现规则配置页面
然后点击【监测中】------> 【自动发现】会发现两台主机已经被自动发现
把10.10.10.12服务从zabbix-web配置页面删掉,然后停了这台主机的httpd服务
使用之前10.10.10.12服务器操作
源码编译安装 Nginx 服务器
[[email protected] ~]$ service httpd stop
#上传nginx源码包
[[email protected] ~]$ tar -zxvf nginx-1.2.6.tar.gz && cd nginx-1.2.6
#安装相关依赖
[[email protected] ~]$ mount -t iso9660 /dev/cdrom /mnt/cdrom #使用了本地yum源
[[email protected] ~]$ yum -y install pcre pcre-devel zlib zlib-devel
[[email protected] ~]$ useradd -s /sbin/nologin -M nginx
[[email protected] ~]$ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[[email protected] ~]$ make && make install #编译安装
[[email protected] ~]$ echo "123" >> /usr/local/nginx/html/index.html
[[email protected] ~]$ /usr/local/nginx/sbin/nginx #启动nginx
开启健康检测功能
[[email protected] ~]$ vim /usr/local/nginx/conf/nginx.conf
...
server {
location / {
root html;
index index.html index.htm;
}
#添加如下内容
location /nginx-status {
#开启健康统计
stub_status on;
}
.......
}
.....
#检测配置文件
[[email protected] ~]$ /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
#重载
[[email protected] ~]$ kill -HUP $( cat /usr/local/nginx/logs/nginx.pid)
浏览器输入服务ip地址/nginx-status
[[email protected] ~]$ vim nginx-status.sh
#!/bin/bash
HOST="127.0.0.1"
PORT="80"
# 检测 nginx 进程是否存在
function ping {
/sbin/pidof nginx | wc -l
}
# 检测 nginx 性能
function active {
/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# 执行 function
$1
#添加执行权限
[[email protected] ~]$ chmod a+x nginx-status.sh
[[email protected] ~]$ bash nginx-status.sh active
[[email protected] ~]$ mv nginx-status.sh /etc/zabbix/zabbix_agentd.d/
#10.10.10.13执行操作
[[email protected] ~]$ while 2>1
do
curl 10.10.10.12
done
将自定义的 UserParameter 加入配置文件,然后重启 agentd
[[email protected] ~]$ vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1 #是否开启自定义脚本,改为1
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx-status.sh $1 #添加这一行
[[email protected] ~]$ service zabbix-agent restart
zabbix_get 获取数据 (10.10.10.11)
zabbix-server端操作
[[email protected] ~]$ yum -y install zabbix-get
[[email protected] ~]$ zabbix_get -s 10.10.10.12 -k 'nginx.status[requests]'
170580
[[email protected] ~]$ zabbix_get -s 10.10.10.12 -k 'nginx.status[ping]'
1
然后在web配置页面,点击【 配置 】-----> 【 模板 】------>【 导入 】
模板文件百度网盘
链接:https://pan.baidu.com/s/1QI21w149bcucJLfTU9onpA
提取码:jvpu
然后配置nginx主机监控
【配置】-------->【主机】--------->【创建主机】
然后添加模板
发现刚才添加的已经生效
web场景用于模拟客户端访问,检测服务器是否还正常
组合图把重要的参数放到一张图展示
创建web场景
【配置】-------->【主机】--------->【nginx服务器】
然后点击【应用集】
创建一个应用集
点击【添加】
http-code有了以后,点击【web场景】
创建web场景
选择【步骤】,点击【添加】
#nginx服务器添加一个测试页面10.10.10.12
[[email protected] ~]$ echo "test" >> /usr/local/nginx/html/test.html
会弹出web方案步骤页面
最后点击【场景】,点击下面的【添加】,场景构建完成
场景只会收集http-code,并不会报警,所以还要创建触发器
【配置】-------->【主机】--------->选择这个nginx服务器,然后点击【触发器】
点击【创建触发器】
会跳转到触发器配置页面
#删除测试页面 10.10.10.12
[[email protected] ~]$ rm -f /usr/local/nginx/html/test.html
[[email protected] ~]$ echo "test" >> /usr/local/nginx/html/test.html
等一会 会发现,有一条报警的信息
【检测中】------> 【聚合图形】------->【创建聚合图形】
会跳转到聚合图形配置页面
点击刚才创建的聚合图形
点击【编辑聚合图形】
点击【更改】
添加一个图形
点击+号,就会又多一列,然后点击更改
选择时钟,显示当前时间
依次类推,可以选择多个图形
点击这个小人,正在发送的消息,设置报警信息
登陆钉钉,创建一个群聊,最少两个人,点击群设置,点击群机器人,点击自定义,添加一个机器人,会有一个webhook,复制下来
添加机器人步骤
详细请看这篇文章
https://blog.csdn.net/qq_44895681/article/details/103125523
安全模式选择关键词
监控报警
服务器
告警
zabbix-server服务端操作
[[email protected] ~]$ vim tocken.sh
#!/bin/bash
to=$1 #给谁
subject=$2 #标题
text=$3 #内容
curl 'https://oapi.dingtalk.com/robot/send?access_token=758cefbfde6108910a29fad7e35edd9ff76255df5ac16871ad7cf03b2262a7fc' \ #改成自己钉钉的webhook
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": "'"$text"'"
},
"at":{
"atMobiles": [
"'"$1"'"
],
"isAtAll": false
}
}'
[[email protected] ~]$ chmod a+x tocken.sh
[[email protected] ~]$ chown zabbix.zabbix tocken.sh
[[email protected] ~]$ ./tocken.sh 1 2 告警
#由于前面的安全模式设置了内容,所以必须有告警内容
把tocken脚本放到/usr/lib/zabbix/alertscripts/目录下
[[email protected] ~]$ cd /usr/lib/zabbix/alertscripts/
[[email protected] ~]$ mv /root/tocken.sh .
1. 创建媒体类型
【配置】------> 【报警媒介类型】----->,然后点击【创建媒介类型】
2. 添加监控方式
监控方式添加参数
{
ALERT.SENDTO}
{
ALERT.SUBJECT}
{
ALERT.MESSAGE}
3. 创建报警动作
【配置】------> 【动作】----->【触发器】,然后点击【创建动作】
接下来就会跳转动作配置页面
4.错误报警信息参数
标题(默认接收人)改为:
故障{
TRIGGER.STATUS},服务器:{
HOSTNAME1}发生: {
TRIGGER.NAME}故障!
信息(默认信息)改为:
告警主机:{
HOSTNAME1}
告警时间:{
EVENT.DATE} {
EVENT.TIME}
告警等级:{
TRIGGER.SEVERITY}
告警信息:{
TRIGGER.NAME}
告警项目:{
TRIGGER.KEY1}
问题详情:{
ITEM.NAME}:{
ITEM.VALUE}
当前状态:{
TRIGGER.STATUS}:{
ITEM.VALUE1}
事件 ID:{
EVENT.ID}
点击操作,添加操作细节
5. 错误恢复报警信息设置
点击恢复操作,添加操作细节
标题(默认接收人)改为:
恢复{
TRIGGER.STATUS}, 服务器:{
HOSTNAME1}: {
TRIGGER.NAME}已恢复!
信息(默认信息)改为:
告警主机:{
HOSTNAME1}
告警时间:{
EVENT.DATE} {
EVENT.TIME}
告警等级:{
TRIGGER.SEVERITY}
告警信息: {
TRIGGER.NAME}
告警项目:{
TRIGGER.KEY1}
问题详情:{
ITEM.NAME}:{
ITEM.VALUE}
当前状态:{
TRIGGER.STATUS}:{
ITEM.VALUE1}
事件 ID:{
EVENT.ID}
操作:
默认标题:
服务器:{
HOST.NAME}发生: {
TRIGGER.NAME}故障!
消息内容:
告警主机:{
HOST.NAME}
告警地址:{
HOST.IP}
监控项目:{
ITEM.NAME}
监控取值:{
ITEM.LASTVALUE}
告警等级:{
TRIGGER.SEVERITY}
告警信息:{
TRIGGER.NAME}
告警时间:{
EVENT.DATE} {
EVENT.TIME}
事件ID:{
EVENT.ID}
当前状态:{
TRIGGER.STATUS}
==================================================================
恢复操作:
默认标题:
服务器:{
HOST.NAME}: {
TRIGGER.NAME}已恢复!
消息内容:
告警主机:{
HOST.NAME}
告警地址:{
HOST.IP}
监控项目:{
ITEM.NAME}
监控取值:{
ITEM.LASTVALUE}
告警等级:{
TRIGGER.SEVERITY}
告警信息:{
TRIGGER.NAME}
告警时间:{
EVENT.DATE} {
EVENT.TIME}
恢复时间:{
EVENT.RECOVERY.DATE} {
EVENT.RECOVERY.TIME}
持续时间:{
EVENT.AGE}
事件ID:{
EVENT.ID}
当前状态:{
TRIGGER.STATUS}
========================================================
更新操作:
默认标题:
服务器:{
HOST.NAME}: 报警确认
消息内容:
确认人:{
USER.FULLNAME}
时间:{
ACK.DATE} {
ACK.TIME}
确认信息如下:
"{ACK.MESSAGE}"
问题服务器IP:{
HOSTNAME1}
问题ID:{
EVENT.ID}
当前的问题是: {
TRIGGER.NAME}
6. 给用户绑定媒体
【管理】------>【用户】选择Admin
测试
断掉10.10.10.12(nginx服务)的网卡
等一会,会发现钉钉已经收到消息
博主后面补充了一篇博文,具体可参考博客:https://www.cnblogs.com/FHC1994/p/11724484.html-----------------------------------------------------------------------------------------------------------------------------------...
1.TwoSumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not us...
公司的开发环境没有联网,想要从一台崭新的mini centos7安装rabbitmq。用于后续的开发,由于对linux一点不懂,被这个依赖包的问题折磨完了。不过最终还是找到一个办法。centos下一些命令需要的rpm包可以在此网站下载。http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/比如gcc,autoconf等命令。但是这种适合单独下载某个指定的rpm。但是无法处理关联的依赖问题。所以最简单的还是通过yum这种方式去下载到指定
如图,如何求得直线 AB与直线 CD的交点P?以上内容摘自《算法艺术与信息学竞赛》。思路就是利用叉积求得点P分线段DC的比,然后利用高中学习的定比分点坐标公式求得分点P的坐标。看不懂的可以去复习下 定比分点 的知识。#include &lt;math.h&gt;#include &lt;stdio.h&gt;#include &lt;string.h&gt;...
从c++面向对象的发展史到面向对象是如何产生的、封装继承多态全面理解深入教学
aws cloud map 毫无疑问, Amazon Web Services在云中占有不可思议的优势。 该公司已经发布了如此多的产品并创建了许多惊人的工具,以至于市场通过向AWS奖励其在全球业务中所占比例惊人的高价来做出回应。 但这并不意味着AWS是该市唯一的游戏。 Google正在努力运行,并利用其用来构建主导搜索引擎的所有专业知识来创建云产品。 Google Cloud Platfor...
前几发生一件事情,就是通过nginx日志发现有一个域名恶意指向到了我的服务器,大家可以去查查域名恶意解析可能会造成的危害。由于我是用的nginx配置了一个反向代理,所以直接配置nginx就可以实现域名恶意解析的问题了。首先打开我们的nginx配置文件nginx.conf,然后加入如下配置server { listen 80 default_server; server_name...
题记:不付出代价,有些教训是买不到的。所以面对付出的代价,我们释然。症状一: 我一开始下载了“大白菜U盘启动制作工具”的安装程序,一键把U盘制成USB HDD启动模式后,我打开U盘,发现里面什么东西也没有。我一开始以为是“大白菜U盘启动制作工具”将U盘格式化后,只是把U盘制成如空白光盘般的具有启动作用的存储器。后来我就在网上疯狂地找PE系统,但还是事与愿违。我开始认为“大白菜U盘启动制作工具...
转载自:http://panda0411.com/2011/08/29/curve-fit-and-function-lsqcurvefitnlinfit/琢磨了好久matlab自带的曲线拟和工具箱, 发现这货只能解决从离散数据得到各种类型的拟和效果, 但是反之貌似没法实现, google一下有这两个函数可以用:lsqcurvefit和nlinfitlsqcurvefit(非线性最小二乘法)hel
总结运算符1.数学运算符:+(加)、-(减)、*(乘)、/(除)、%(取余,取模)、//(整除)、**(幂运算)+、-、*、/ - 和数学中的加减乘除的功能一摸一样print(4 + 29) # 33print(42 - 132) # -90print(5 / 2) # 2.5print(4 * 2) # 8a = 1 / 7 print(a * 7) # 1.0% - 求余数print(5 % 2) # 1print(9 % 3) # 0应用一:
PrepareStatement 也是接口,PrepareStatement extends Statement,PrepareStatement 本身没有 int[] executeBatch() throws SQLException 方法,而是继承了Statement的方法,且它们都是接口没有实际实现方法,但Statement接口对executeBatch()方法做了规范:将一批命令提交
2种方法:JDBC和JDBC-ODBC Bridge官方说明如下:http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/bridge.doc.htmlIf possible, use a Pure Java JDBC driver instead of the Bridge and an ODBC driver. This comple