Nginx+Tomcat实现负载均衡

如题所说,今天说一说如何使用Nginx和Tomcat实现反向代理及负载均衡。

1、Nginx是俄罗斯人开发的一种高性能的http反向代理服务器,Tomcat则是Apache基金会免费开源的一种web服务器,这两者结合即可实现web服务的反向代理和负载均衡。

2、那么,直接来看一看怎么实现吧:

1)、工具准备:nginx1.12.0、两个同版本的tomcat(我用的是tomcat8).

2)、分别修改两个tomcat的默认端口配置并启动好这两个tomcat,找到tomcat的server.xml文件,分别修改端口配置如下:
第一个tomcat如下配置端口:

<Server port="8005" shutdown="SHUTDOWN">
<Connector connectionTimeout="20000" port="8888" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

第二个tomcat如下配置端口:

<Server port="8006" shutdown="SHUTDOWN">
<Connector connectionTimeout="20000" port="9999" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443"/>

端口配置好以后,分别启动起来先放着。

3)、接下来就要配置nginx的反向代理和负载均衡了,下载地址:http://nginx.org/en/download.html,具体配置还是找到nginx的配置文件nginx.conf如下配置:

upstream server_lb {
    #以下标识启动的那两个tomcat,端口号对应,weight标识分配的权重
    server 127.0.0.1:8888 weight=10;
    server 127.0.0.1:9999 weight=5;
}

server {
    #监听nginx的默认端口号80
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        #这一句很重要,意思是当用户访问localhost上的80端口时转发到以上定义的两个tomcat
    proxy_pass http://server_lb;
        index  index.html index.htm;
    }
}

4)、接下来就是要启动nginx服务器了,直接双击nginx这个应用程序就可以启动了。

5)、然后访问:http://localhost:80,因为第一个tomcat配置的权重是第二个tomcat权重的2倍,所以每次访问都会是第一个tomcat优先被访问2次,第三次第二个tomcat才会被访问到。

注:本篇文章由ECode1024原创撰写,未经允许,不得修改转载,否则追究相关责任。
ECode1024,一个分享软件与编程知识的精简网站。

Centos 7 Java配置maven+jenkins+git(svn)+tomcat自动编译和部署(持续集成)

目的

在开发中,需要经常频繁的对测试服务器进行部署,而且在多人协同中开发经常遇到的问题就是别人更新了他的代码,而你去更新你的代码时并没有更新到别人的代码,导致测试环境的代码不是最新,当然这个问题也好解决,那就是每次更新的时候先获取版本控制器上面的代码,然后更新,当然每次这样操作都是耗时耗力的,如果是整个项目更新,一般项目至少3、40M上传到服务器也需要一定的时间,而部分更新,也需要找到指定的文件或者整个代码覆盖,然后重启服务器(Tomcat里面直接覆盖class虽然可以配置热加载,但是容易内存溢出),就我工作中的情况而言,是每次都需要先把代码上传到服务器-解压-找到Tomcat进程id(Linux)-kill线程-启动Tomcat,每次下来就需要最少几分钟时间,而且每天有可能多次部署,所以对整个工作效率是有一定影响的。正是因为以上种种,所以才有了本文,而本文最终的结果就是一旦代码上传到Git或者svn的时候,代码能自动部署到服务器上面去,这样我们就只需要吧正确的代码提交的版本控制器,就不用理会服务器的更新了。

jenkins部署

  • Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

  • Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:

    • 持续的软件版本发布/测试项目。

    • 监控外部调用执行的工作。

  • Jenkins能做的东西有很多,不过本文只介绍一个简单的自动编译打包部署,首先下载Jenkins,推荐下载war包, 下载地址: https://jenkins.io/download/

基础准备

配置jdk+tomcat: http://www.okay686.cn/628.html

关闭selinux 以及 firewall 服务。

本文是基于Centos 7,war环境部署的,把下载好的war文件直接放到Tomcat中,然后启动Tomcat,启动成功后访问tomcat的jenkins项目如:

war包下载: http://mirrors.jenkins.io/war-stable/latest/jenkins.war

http://192.168.96.129:8080/jenkins 会看到以下界面:

未分类

注意红色框中的红色文字,那个是初始密码的路径,直接根据路径找到initialAdminPassword文件并打开,把密码复制出来,输入到页面中点击continue按钮,进入下一步: ( /root/.jenkins/secrets/initialAdminPassword )

未分类

Jenkins拥有很多插件,一般在开始我们并不清楚需要什么插件的时候,可以选择自定义安装,把所有基本的插件全部安装好,此页面第一个按钮是安装推荐插件,第二个是自己选择安装,这里我选择第二个按钮。

未分类

此界面是初始化安装插件的界面,先选择All插件,然后点击install

未分类

在这个界面需要多等一下,因为是在网上下载插件,而且是外国的网站,所以经常有下载失败的情况,最好打开V梯P子N,当所有插件安装完成后会有continue按钮出现,如果没有则刷新一下页面,当然也可能存在有插件安装失败,根据自己是否需要自行选择retry或continue,这里因为我的都已经安装完成了,所以进入到了下一个页面.

未分类

在此页面设置用户名和密码,记得点击save and finish按钮,如果选择了Continue as admin,会把用户名重置admin,然后密码也是你设置的密码,而是初始化文件中的密码,设置完成之后的页面.

未分类

点击Start using Jenkins 即可

未分类

Jenkins主界面

未分类

配置Jenkins

创建项目之前先要对Jenkins进行基本的配置,比如jdk的目录,git命令的目录和maven的目录等等

首先点击 系统管理

进入管理页面后如图:

未分类

点击 Global Tool Configuration 进入插件配置页面

配置jdk

(不晓得安装位置,好办,打开 vim /etc/profile 就可以找到!)

未分类

点击新增JDK按钮,会显示jdk配置form,如果电脑上已经安装了jdk则可以去掉自动安装,不过如果是用Tomcat运行的Jenkins那么是肯定已经安装了的,这里我们只需要配置好 jdk别名 和 JAVA_HOME 即可

配置git

未分类

需要将git的正确路径配置到Path to Git executable中。

配置maven

未分类

跟jdk相同,配置好名字和路径即可,当然也可以选择自动安装,不过还是推荐手动安装然后配置,配置好了之后点击save即可

当然还有现在很火的Gradle (有空写个教程,在此,我没有配置)

未分类

安装插件

由于新版默认没有将war部署到Tomcat的插件,所以需要手动安装,在系统管理中选择管理插件,再选择可选插件,搜索 Deploy to Container Plugin ,然后勾选点击直接安装

创建Jenkins任务

点击开始创建一个新任务进入任务创建页面:

未分类

先输入项目名字,然后选择构建一个maven项目,最后点击ok按钮

选择版本控制器

页面中找到源码管理模块,根据项目使用的版本控制器选择,如我们使用的git,则选择git

未分类

选择构建触发器

如果是git的话,可以直接通过GitLab(WebHooks)来实现触发,这样你每次提交到配置编译的分支就会git就会通知,不过目前我知道的是git.oschina.NET的钩子没有作用,当然如果不是git或者钩子没有作用的时候,可以用最简单的,定时查询。

未分类

这样是每10分钟查询一次,如果有更新就构建,具体Poll SCM的参数可以百度,那里更加详细

配置编译命令

编译命令我们可以直接配置最简单的命令编译:

未分类

选择Execute shell,在出来的界面中配置maven命令就行了,比如

mvn install

配置部署到Tomcat

点击新增构建后操作,选择 Deploy war/ear to a container ,然后配置 WAR/EAR files ,这个war的地址,一般都 target/xxx.war ,xxx是war的文件名。

然后点击Add Container,添加Tomcat服务器:

未分类

配置好Tomcat的管理员用户和密码以To及mcat的访问地址就ok了,这样只要你上传了代码,并且是配置编译的分支,一般过几分钟就会自动编译然后部署到Tomcat中了,当然最好还是用git,然后通过GitLab实现,这样不仅不用每隔几分钟查询一次,而且延迟很小!!

Zabbix(5)通过JMX监控Tomcat

Zabbix监控tomcat主要使用的是zabbix的zabbix-java-gateway。从Zabbix 2.0开始,内置了监控JMX的功能,叫做“Zabbix Java Gateway”,在Zabbix Server和Zabbix Proxy上启动名为“Zabbix Java Gateway”的进程,当需要获取JMX数据时,Zabbix Server会“问”JMX Gateway,然后JMX Gateway根据JMX管理API去查询需要的数据。在使用时,Java程序不需要在代码中新增任何东西,只需要在启动的时候加上一些JVM参数,使得它可以支持使用端口监控JMX。JMX的全称是Java Management Extensions,即Java管理扩展。Java程序会开放一些端口,用来获取运行状况。

一、安装jmx服务器

1、安装jdk

下载JDK: http://www.oracle.com/technetwork/java/archive-139210.html

配置环境变量: http://islocal.cc/2017/09/27/JDK%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E9%85%8D%E7%BD%AE/

2、安装jmx服务

yum -y install zabbix-java-gateway

3、配置jmx服务

egrep -v '#|^$' /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5
TIMEOUT=3
systemctl start zabbix-java-gateway
systemctl enable zabbix-java-gateway

4、修改zabbix server配置

添加以下三行,这里配置的StartJavaPollers值要小于之前java_gateway中的START_POLLERS

tail -n 3 /etc/zabbix/zabbix_server.conf 
JavaGateway=127.0.0.1
JavaGatewayPort=10052     
StartJavaPollers=3

修改zabbix_server.conf后重启服务

systemctl restart zabbix-server

二、Tomcat配置修改

1、修改配置文件

Windows下tomcat在F:deployapache-tomcat-8.5.20-OUbincatalina.bat中set “CURRENT_DIR=%cd%”下添加以下内容

set CATALINA_OPTS=-Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

2、测试JMX

下载以下两个jar包放在tomcat lib目录下。

下载cmdline-jmxclient-0.10.3.jar

http://crawler.archive.org/cmdline-jmxclient/cmdline-jmxclient-0.10.3.jar

下载catalina-jmx-remote.jar

https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.77/bin/extras/catalina-jmx-remote.jar

F:apache-tomcat-7.0.70(zabbix)lib>java -jar cmdline-jmxclient-0.10.3.jar - 192.168.6.124:12345 java.lang:type=Memory NonHeapMemoryUsage
10/10/2017 16:31:57 +0800 org.archive.jmx.Client NonHeapMemoryUsage:
committed: 24838144
init: 12746752
max: 100663296
used: 24806392

三、在zabbix web页面中添加JMX端口

1、导入模板

zabbix自带的”Template App Generic Java JMX”和”Template App Apache Tomcat JMX”模板很多都获取不到数据,从网上找了个模板,监控项不多,但是都是很实用的。

未分类

未分类

2、添加JMX端口

jmx的端口一定要与在catalina.bat下配置的jmxremote.port一样

未分类

3、关联模板

未分类

4、查看图形

未分类

CentOS-7.0.中安装与配置Tomcat-7的方法

安装说明

  • 安装环境:CentOS-7.0.1406
  • 安装方式:源码安装
  • 软件:apache-tomcat-7.0.29.tar.gz
  • 下载地址:http://tomcat.apache.org/download-70.cgi

安装前提

系统必须已安装配置JDK6+

安装tomcat

将apache-tomcat-7.0.29.tar.gz文件上传到/usr/local中执行以下操作:

代码如下:

[root@linuxidc local]# cd /usr/local
[root@linuxidc local]# wget http://apache.fayea.com/apache-mirror/tomcat/tomcat-7/v7.0.57/bin/apache-tomcat-7.0.57.tar.gz
[root@linuxidc local]# tar -zxv -f apache-tomcat-7.0.29.tar.gz // 解压压缩包
[root@linuxidc local]# rm -rf apache-tomcat-7.0.29.tar.gz // 删除压缩包
[root@linuxidc local]# mv apache-tomcat-7.0.29 tomcat

启动Tomcat

执行以下操作:

代码如下:

[root@linuxidc ~]# /usr/local/tomcat/bin/startup.sh //启动tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.7.0/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

出现以上信息说明已成功启动。

防火墙开放8080端口

增加8080端口到防火墙配置中,执行以下操作:

[root@linuxidc ~]# vi + /etc/sysconfig/iptables
#增加以下代码
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

重启防火墙

[root@linuxidc java]# service iptables restart

检验Tomcat安装运行

通过以下地址查看tomcat是否运行正常:

http://192.168.15.231:8080/

看到tomcat系统界面,说明安装成功!

停止Tomcat

[root@linuxidc ~]#  /usr/local/tomcat/bin/shutdown.sh  //停止tomcat

zabbix自动发现监控tomcat健康页面

一、背景

公司系统平台有10几个tomcat服务,由于需要服务保持全年无间断服务,特在tomcat中嵌入专门的监控页面,在curl 专用页面返回值为200时,则认定服务正常运行,否则报警发送专门的监控运维的邮箱。

二、原理

正常的tomcat健康状态监控页面如下图

未分类

我们利用如下命令判断返回值是否为200

shell>/usr/bin/curl -o /dev/null -s --connect-timeout 5 -w '%{http_code}' http://10.0.0.107:9100/sms-app/health

倘若返回值不为200,则断定服务异常,报警

三、具体自动发现操作部署如下

1、首先定义需要监控自动发现的tomcat的URL

如下内容

cat >/etc/zabbix/WEB.txt <<EOF
10.0.0.107:9000/sms-admin/health
10.0.0.107:9100/sms-app/health
10.0.0.107:9090/auditServer/health
10.0.0.107:7711/pushControl/health
10.0.0.107:7700/sendService/health
10.0.0.107:6003/pa/health
10.0.0.107:8513/sms/health
10.0.0.107:7712/pushControl/health
10.0.0.107:7725/reply-server/health
10.0.0.107:2222/mdnServer/health
EOF

2、监控脚本如下所示

cat >/etc/zabbix/scripts/web_site_code_status.sh <<EOF
#!/bin/bash 
# function:monitor tcp connect status from zabbix 

source /etc/bashrc >/dev/null 2>&1
source /etc/profile  >/dev/null 2>&1
#/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1/ 

web_site_discovery () {
WEB_SITE=($(cat  /etc/zabbix/WEB.txt|grep -v "^#"))
        printf '{n'
        printf 't"data":[n'
for((i=0;i<${#WEB_SITE[@]};++i))
{
num=$(echo $((${#WEB_SITE[@]}-1)))
        if [ "$i" != ${num} ];
                then
        printf "tt{ n"
        printf "ttt"{#SITENAME}":"${WEB_SITE[$i]}"},n"
                else
                        printf  "tt{ n"
                        printf  "ttt"{#SITENAME}":"${WEB_SITE[$num]}"}]}n"
        fi
}
}

web_site_code () {
/usr/bin/curl -o /dev/null -s --connect-timeout 5 -w '%{http_code}' $1
}

case "$1" in
web_site_discovery)
web_site_discovery
;;
web_site_code)
web_site_code $2
;;
*)

echo "Usage:$0 {web_site_discovery|web_site_code [URL]}" 
;;
esac
EOF

3、增加zabbix配置文件监控项目

root@DL-test2:zabbix# grep '^[a-Z]' zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.113
ServerActive=10.0.0.113
Hostname=DL-test2
Include=/etc/zabbix/zabbix_agentd.d/*.conf  #此项打开
cat >/etc/zabbix/zabbix_agentd.d/web_site_discovery.conf <<EOF
UserParameter=web.site.discovery,/bin/bash /etc/zabbix/scripts/web_site_code_status.sh web_site_discovery  
UserParameter=web.site.code[*],/bin/bash /etc/zabbix/scripts/web_site_code_status.sh web_site_code $1
EOF
#/bin/bash 此项必须要加上,不然有可能找不到命令,导致脚本命令无法被zabbix-agent调用

4、增加自动发现模板

模板详见附件
直接在模板里导入附件模板
启动zabbix-agent
会在被监控主机的触发器中发现我们需要监控的tomcat

未分类

停止6003端口的服务,我们会发现如下图所示报警

未分类

然后启动6003服务后,服务监控正常。

至此自动发现tomcat服务状态,部署完毕。

一分钟开启Tomcat https支持

1、修改配置文件

打开tomcat/conf/server.xml配置文件,把下面这段配置注释取消掉, keystorePass为证书密钥需要手动添加,创建证书时指定的。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
              maxThreads="150"
              SSLEnabled="true"
              scheme="https"
              secure="true"
              clientAuth="false"
              sslProtocol="TLS"
              keystorePass="123456" />

2、创建证书

使用jdk工具类里面的 keytool命令来生成证书,按照提示输入相应的信息。

C:>keytool -genkey -alias https -keyalg RSA
输入密钥库口令:
您的名字与姓氏是什么?
 [Unknown]:  test
您的组织单位名称是什么?
 [Unknown]:  test
您的组织名称是什么?
 [Unknown]:  test
您所在的城市或区域名称是什么?
 [Unknown]:  test
您所在的省/市/自治区名称是什么?
 [Unknown]:  test
该单位的双字母国家/地区代码是什么?
 [Unknown]:  test
CN=test, OU=test, O=test, L=test, ST=test, C=test是否正确?
 [否]:  y
输入 <https> 的密钥口令
       (如果和密钥库口令相同, 按回车):
再次输入新口令:

这里的密钥口令就是配置文件中的 keystorePass配置。

3、访问https

通过 https://localhost:8443/your-project就能访问https项目。

这种方式只适合本地开启https测试,线上环境需要购买商业授权的证书,不过原理都是一样的。

Linux 一台服务器部署多个tomcat

linux系统下安装两个或多个tomcat

编辑环境变量:vi /etc/profile

加入以下代码(tomcat路径要配置自己实际的tomcat安装目录)

##########first tomcat###########

CATALINA_BASE=/usr/local/tomcat
CATALINA_HOME=/usr/local/tomcat
TOMCAT_HOME=/usr/local/tomcat
export CATALINA_BASE CATALINA_HOME TOMCAT_HOME

##########first tomcat############

##########second tomcat##########

CATALINA_2_BASE=/usr/local/tomcat_2
CATALINA_2_HOME=/usr/local/tomcat_2
TOMCAT_2_HOME=/usr/local/tomcat_2
export CATALINA_2_BASE CATALINA_2_HOME TOMCAT_2_HOME

##########second tomcat##########

保存退出。
再输入:source /etc/profile
才能生效。

第一个tomcat,保持解压后的原状不用修改,

来到第二个tomcat的bin目录下
打开catalina.sh ,找到下面红字,

# OS specific support.  $var _must_ be set to either true or false.

在下面增加如下代码

export CATALINA_BASE=$CATALINA_2_BASE
export CATALINA_HOME=$CATALINA_2_HOME

来到第二个tomcat的conf目录下
打开server.xml更改端口:
修改server.xml配置和第一个不同的启动、关闭监听端口。
修改后示例如下:
 

 <Server port="9005" shutdown="SHUTDOWN">                  端口:8005->9005
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector port="9080" maxHttpHeaderSize="8192"        端口:8080->9080
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
     enableLookups="false" redirectPort="8443" acceptCount="100"
     connectionTimeout="20000" disableUploadTimeout="true" />
<!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="9009"                                  端口:8009->9009
     enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

分别进入两个tomcat的bin目录,启动tomcat–./startup.sh
http://localhost:8080http://localhost:9080然后访问 和 都可以看到熟悉的tomcat欢迎界面。

apache二级域名80端口通过代理映射到Tomcat8080端口

apache域名解析设置

第一步:打开apache2/conf/httpd.conf 文件

找到:

#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
# mod_proxy_ajp.so

将前面的#号注释去掉。

第二步:打开apache2/conf/extra/httpd-vhosts.conf文件

添加虚拟主机:

<VirtualHost *:80>
    ServerName api.lanshiqin.com
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass / ajp://127.0.0.1:8009/
</VirtualHost>

注:ServerName的值为域名,访问该域名apache将会将请求通过代理ajp解析到tomcat的8080端口。

如果域名为自定义为了开发方便,需要在本地hosts文件中添加对应的ip为127.0.0.1。

Tomcat manager无法访问

百度类似文档一大堆,能用的不多。

问题截图

访问tomcat manager页面时提示403拒绝

未分类

解决方法

1、修改权限

[root@192-168-10-51 tomcat]# vim webapps/manager/META-INF/context.xml

将下图中的两行使用屏蔽

未分类

2、配置用户

[root@192-168-10-51 tomcat]# vim conf/tomcat-users.xml

在最后一行之前,加入

<user username="tomcat" password="123com" roles="manager-gui,manager-jmx,manager-script,manager-status"/>

用户名,密码,角色(权限)

未分类

重启tomcat

未分类

测试

未分类

未分类

未分类

实现zabbix对tomcat的监控

what-zabbix

优点:

  • 开源,无软件成本投入
  • Server 对设备性能要求低
  • 支持设备多,自带多种监控模板
  • 支持分布式集中管理,有自动发现功能,可以实现自动化监控
  • 开放式接口,扩展性强,插件编写容易
  • 当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动从server 端去下载需要监控的 item 然后取数据上传到 server 端。这种方式对服务器的负载比较小。
  • Api 的支持,方便与其他系统结合

缺点:

  • 需在被监控主机上安装 agent,所有数据都存在数据库里,产生的数据很大,瓶颈主要在数据库。

how-zabbix

Zabbix 通过 C/S 模式采集数据,通过 B/S 模式在 web 端展示和配置。
被监控端:主机通过安装 agent 方式采集数据,网络设备通过 SNMP 方式采集数据
Server 端:通过收集 SNMP 和 agent 发送的数据,写入数据库(MySQL,ORACLE 等),
再通过 php+apache 在 web 前端展示

未分类

how-to-zabbix-Tomcat

首先我们需要了解一下zabbix和Tomcat的对应关系

  • zabbix_server开启java poller
  • zabbx_java开启JavaGateway,端口为10052
  • Tomcat JMX开启2222提供性能数据。

数据获取:java pollerJavaGateway:10052Tomcat:2222.

配置过程

server1(server):

首先先把zabbix搭建起来.

yum install zabbix-server-2.4.5-1.el6.x86_64.rpm zabbix-server-mysql-2.4.5-1.el6.x86_64.rpm zabbix-web-2.4.5-1.el6.noarch.rpm zabbix-web-mysql-2.4.5-1.el6.noarch.rpm zabbix-2.4.5-1.el6.x86_64.rpm php-bcmath-5.3.3-26.el6.x86_64.rpm php-mbstring-5.3.3-26.el6.x86_64.rpm  iksemel-1.4-2.el6.x86_64.rpm fping-2.4b2-16.el6.x86_64.rpm -y

在装zabbix之前确保服务器已经搭建lamp环境…..

安装zabbix后会自动在/etc/httpd/conf.d 中出现zabbix的配置文件

[root@server1 conf.d]# ls
php.conf  README  welcome.conf  zabbix.conf

创建存储zabbix的数据库,用户

mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create  user  zabbix@localhost identified by "miao";
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.00 sec)

或者这样创建用户

[root@server1 zabbix]# pwd
/etc/zabbix
[root@server1 zabbix]# vim .my.cnf

[mysql]
host = localhost
user = zabbix
password = miao
socket = /var/lib/mysql/mysql.sock
[mysqladmin]
host = localhost
user = zabbix
password = miao
socket = /var/lib/mysql/mysql.sock

往zabbix数据库导入数据(注意schema必须先导入)

[root@server1 ~]# cd /usr/share/doc/zabbix-server-mysql-2.4.5/create/
[root@server1 create]# mysql zabbix <schema.sql
[root@server1 create]# mysql zabbix <images.sql
[root@server1 create]# mysql zabbix <data.sql

配置服务端文件

vim /etc/zabbix/zabbix_server.conf

 72  DBHost=localhost
 82  DBName=zabbix
 98  DBUser=zabbix
106  DBPassword=miao

配置服务端agent文件(因为我用的是rpm包,所以必须配置)

vim /etc/zabbix/zabbix_agentd.conf

Hostname=server1.lalala.com
ServerActive=127.0.0.1
Server=127.0.0.1

设置php时区,两台主机必须一致,否则出错

vim /etc/php.ini

date.timezone = Asia/Shanghai

启动zabbix

未分类

自动注册设备时,需要的配置

未分类

zabix配置完毕,下面是监控tomcat的配置

vim /etc/zabbix/zabbix_server.conf 激活zabbix的JavaGateway模块

589 JavaGateway=127.0.0.1
590 JavaGatewayPort=10052    
591 StartJavaPollers=5

vim zabbix_java_gateway.conf

589 JavaGateway=127.0.0.1
590 JavaGatewayPort=10052
591 StartJavaPollers=5
[root@server1 zabbix]# /etc/init.d/zabbix-agent restart
[root@server1 zabbix]# /etc/init.d/zabbix-server restart
[root@server1 zabbix]#/etc/init.d/zabbix-java-gateway start

可以看到zabbix-java-gateway正常启动(10052)

未分类

server2(client):

yum install zabbix-agent-2.4.5-1.el6.x86_64.rpm zabbix-2.4.5-1.el6.x86_64.rpm -y

vim /etc/zabbix/zabbix_agentd.conf

 85 Server=172.25.88.1
126 ServerActive=172.25.88.1
135  Hostname=server2.lalala.com

zabbix-agent配置完毕,下面是监控tomcat的配置

yum install java-1.6.0-openjdk.x86_64 -y tar zxf apache-tomcat-7.0.37.tar.gz

vim /root/apache-tomcat-7.0.37/bin/catalina.sh

CATALINA_OPTS="-Dcom.sun.management.jmxremote
  -Dcom.sun.management.jmxremote.port=2222
  -Dcom.sun.management.jmxremote.ssl=false
  -Dcom.sun.management.jmxremote.authenticate=false"

设置server2 基于JVM(tomcat)的IP和端口

未分类

别忘了添加JMX的模板!

未分类

开启tomcat,并查看日志,tomcat正常启动…..

未分类

查看端口2222,java poller也正常启动

未分类

最后发现JVM的小绿灯也亮起来啦,而且有图像,成功!!!!

未分类

未分类