Category Uncategorized

supervisor 管理 tomcat 常见问题

1.supervisorctl http://localhost:9001 refused connection 1.打开如下的配置: [inet_http_server] ; inet (TCP) server disabled by default port=0.0.0.0:9001 ; (ip_address:port specifier, *:port for all iface) username=user ; (default is no username (open server)) password=123 ; (default is no password (open server)) 1 2 3…

supervisor program配置实例

program 配置 上面我们已经把 supervisrod 运行起来了,现在可以添加我们要管理的进程的配置文件。可以把所有配置项都写到 supervisord.conf 文件里,但并不推荐这样做,而是通过 include 的方式把不同的程序(组)写到不同的配置文件里。 为了举例,我们新建一个目录 /etc/supervisor/ 用于存放这些配置文件,相应的,把 里 include 部分的的配置修改一下: [include] files = 假设有个用 Python 和 Flask 框架编写的用户中心系统,取名 usercenter,用 gunicorn () 做 web 服务器。项目代码位于 /home/leon/projects/usercenter,gunicorn 配置文件为gunicorn.py,WSGI callable 是 wsgi.py 里的 app 属性。所以直接在命令行启动的方式可能是这样的: cd /home/leon/projects/usercenter…

Linux运维人员共用root帐户权限审计

2016-11-02 运维部落 一、应用场景 在中小型企业,公司不同运维人员基本都是以root 账户进行服务器的登陆管理,缺少了账户权限审计制度。不出问题还好,出了问题,就很难找出源头。 这里介绍下,如何利用编译bash 使不同的客户端在使用root 登陆服务器使,记录各自的操作,并且可以在结合ELK 日志分析系统,来收集登陆操作日志 二、环境 服务器:centos 6.5、Development tools、使用密钥认证,SElinux 关闭。 客户端:生成密钥对,用于登录服务器 (2台) 三、搭建部署 服务器操作 : 192.168.30.72 1、下载编译bash [root@open1 ~]# wget [root@open1 ~]# tar xvf bash-4.1.tar.gz [root@open1 ~]# cd bash-4.1 2、 先修改下 config-top.c文件,大概94行、104行,由于c 语言中 注释是/**/ ,所以不要删除错了。修改如下: [root@open1…

zabbix_server的自动发现,实现批量添加主机,并链接到模板

一、需求 zabbix 服务器可以手动加入zabbix-agent客户端,对于少量的机器,这没有什么。但到了线上,我们有大量的服务器需要监控时,如果再一个个的手动加的话,工作量势必会增加很多。这时,zabbix-server 的Discovery 自动发现 功能便派上了用场。 二、条件 1.zabbix server 已经部署好,所需要加入的服务器zabbix-agent已经安装。 2.防火墙都开放端口,主要是10050、10051端口,或者关闭整个iptables 三、zabbix-agent客户端的设置 1.打开zabbix-agent.conf配置文件,只需要修改2处配置.大批量的修改,可以利用自动化部署工具、如saltstack、ansible等。我用的是saltstack推送文件的方式进行修改,在本实验环境中,我用的是国产的一个批量工具CheungSSH。 2.批量执行的命令 sed -i ‘s’ sed -i ‘s’ grep “Server” | grep -v ‘^#’ service zabbix-agent restart 上述命令完成后,要在zabbix-server上创建discover规则 四、zabbix-server 登陆web界面进行设置,创建规则,并自动加入,自动链接模板 1.Configuration–>Discovery–>Create discovery rule 下面是创建规则时的具体参数,来自官网:  …

tomcat 监控

主要监控JVM (1)JPS(快速获取Java的PID) 这个是jdk包里的 显示Java进程的 +l +v +m   (2)jstack 命令格式: 常用说明:   (3)jmap     现在列举生产中遇到的JVM的问题的处理流程(Java进程占用CPU特别的高) (1)首先使用jps来获取Java进程的PID (2)jstack pid >> java.txt 导出CPU占用高进程的线程栈 (3)top -H -p PID查看对应进程的那个线程占用CPU过高 (4)echo “obase=16;PID”|bc 将线程的PID转换成16进制 (5)在第二步导出的java.txt中查找转换成为16进制的线程PID,找到对应的线程栈,给开发看 (6)分析负载高的线程栈都是什么业务导致的,优化程序处理问题           我们现在来看一个工具jconsole 我们修改vim 加以下字段

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解 2016-10-28 马哥Linux运维 DK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足内存泄露线程死锁锁争用(Lock Contention)Java进程消耗CPU过高……这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用。 A、 jps(Java Virtual Machine Process Status Tool)          jps主要用来输出JVM中运行的进程状态信息。语法格式如下:jps [options] [hostid] 如果不指定hostid就默认为当前主机或服务器。    命令行参数选项说明如下:-q 不输出类名、Jar名和传入main方法的参数-m 输出传入main方法的参数-l 输出main类或Jar的全限名-v 输出传入JVM的参数 比如下面:root@ B、 jstack    jstack主要用来查看某个Java进程内的线程堆栈信息。语法格式如下:jstack [option] pidjstack [option] executable corejstack [option] [server-id@]remote-hostname-or-ip 命令行参数选项说明如下:-l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况-m mixed mode,不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法) jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。    第一步先找出Java进程ID,我部署在服务器上的Java应用名称为mrf-center:root@ubuntu:/# ps -ef | grep mrf-center | grep -v grep root     21711     1  1 14:47 pts 得到进程ID为21711,第二步找出该进程内最耗费CPU的线程,可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid,我这里用第三个,输出如下:    TIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为21742的线程,用printf “%x\n” 21742…

tomcat 的安全规范

下面来说一下,日常工作当中我们需要注意的一些tomcat的安全规范:   一:telnet管理端口的保护 类别 配置内容及其说明 标准配置 备注 Telnet 管理端口的保护 (强制) (1)配置文件中的默认端口是8005管理端口,所以为了不容易攻击,最好端口改成其他的(大于1024,建议设区间为8000~8999) (2)改SHUTDOWN 指令为其他的字符串 <Server port=”=8517″ shutdown=”dangerous”>       二:AJP管理端口的保护: 类别 配置内容及其说明 标准配置 备注     AJP连接端口的保护   (1)修改默认的的ajp 8009端口为不易冲突的大于1024的端口。 (2)通过iptables规则限制ajp端口访问权限仅为线上的服务器     <Connector port=”8553 otocol=”AJP/1.3″ redirectPort=”8443″ /> 以上为建议配置,需根据生产需求修改,端口要求8000~8999之间,保护端口的目的在于防止线下的测试流量被mod_jk转发至线上tomcat服务器。 我们可用HTTP的方式,也可以选用AJP的方式。如果要是选用AJP的方式的话,就按照上面的方式修改…

Nginx反向代理的简单实现

1)nginx的反向代理:proxy_pass 2)nginx的负载均衡:upstream 下面是nginx的反向代理和负载均衡的实例: 负载机:A机器:103.110.186.8 后端机器1:B机器:192.168.1.102 后端机器2:C机器:192.168.1.103 需求: 1)访问A机器的8080端口,反向代理到B机器的8080端口;       访问A机器的8088端口,反向代理到C机器的8088端口;       访问 2)访问A机器的80端口,负载均衡到后端的两台机器B和C的80端口 操作记录: ————————————————————————————– 负载机:A机器上的操作记录: 1)编译安装nginx [root@opd ~]# yum install -y pcre* openssl* gcc gcc+ [root@opd ~]# cd /opt/src [root@src ~]# wget  [root@src ~]# tar…

proxy_pass反向代理配置中url后面加不加/的说明

在日常的web网站部署中,经常会用到nginx的proxy_pass反向代理,有一个配置需要弄清楚:配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走(这样配置在Nginx反向代理+负载均衡简单实现(http方式)也提到过)。 下面举个小实例说明下: centos7系统库中默认是没有nginx的rpm包的,所以我们自己需要先更新下rpm依赖库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 1)使用yum安装nginx需要包括Nginx的库,安装Nginx的库 [root@localhost ~]# rpm -Uvh   2)使用下面命令安装nginx [root@localhost ~]#…

Jenkins 实现.net项目一键部署

一、下载安装Jenkins  : 官网地址    安装没什么特殊的 常规安装即可。安装后默认占用8080端口。可通过浏览器访问。 二、配置: 首次访问,会提示安装插件,如果安装Jenkins的服务器可以联网,选择需要的安装即可。但如果不能联网,这里不能选择任何插件安装,否则会报错(后面会自己下载插件包通过上传的方式进行安装)。 然后就是注册一个管理员账号 即可登录进行配置了。 离线安装插件: 插件下载地址: 下载好对应的插件(一般最新版就行,注意插件的依赖关系,要下载整个依赖树的所有下游插件并从下往上安装,否则会出错,也可以根据出错提示依次下载缺少的插件)。 系统管理–>管理插件–>高级–>上传插件–>选择文件–>选择刚才下载的安装包(一次只能选择一个,一般为hpi格式),然后会自动进行安装。如果安装失败,一般是由于缺少依赖插件引起的  这时候点击查看详情 ,先安装缺少的依赖插件即可。 对于我们的部署.net项目 ,用到的主要插件有 MSBuild (编译.net项目),GitLab(从源码管理器上获取代码并编译),Publish Over FTP或FTP publisher(通过FTP把生成的项目文件传送到目标服务器,但是需要目标服务器的FTP支持,后面实际没有采用这种方式),PowerShell(停止\开启远程服务器服务、网站、拷贝文件等用途),   Copy Artifact Plugin(把其他Job工作区的文件拷贝到当前Job)。 除此之外  还有许多下游依赖插件 如git 等  就不一一列出。 三、部分插件的全局设置: 系统管理–>系统设置 中 这个插件是用FTP向远程服务器拷贝文件/文件夹用的 (需要远程服务器开启FTP服务),由于我后来使用的PowerShell 方式,所以这个方式暂时没有用到,后期备用吧。 四、项目配置: 其中 Credentials…