【11.18】zabbix(末)、shell
5.24 zabbix 监控 tomcat
-
监控流程:
1、安装zabbix_java_gateway
2、配置zabbix_java_gateway配置文件和zabbix_server配置文件,指定监听端口,启动进程数
3、编辑Tomcat配置文件,开启JMX
4、添加host,指定JMX interface
5、链接TOMCAT模板 -
操作步骤:
1、在 zabbix-server 上安装 zabbix-java-gateway
[root@alexis-01 ~]# yum install -y zabbix-java-gateway
2、编辑 zabbix_java_gateway.conf
[root@alexis-01 ~]# vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_PORT=10052 //不打开也是默认 10052 端口
START_POLLERS=5 //进程数
3、编辑 /etc/zabbix/zabbix_server.conf
[root@alexis-01 ~]# vim /etc/zabbix/zabbix_server.conf
JavaGateway=127.0.0.1 //JavaGateway 所安装的主机 ip,我们这里是本机
JavaGatewayPort=10052 //java 的 port
StartJavaPollers=5
4、启动 zabbix-java-gateway
[root@alexis-01 ~]# systemctl start zabbix-java-gateway
5、重启 zabbix-server 服务
[root@alexis-01 ~]# systemctl restart zabbix-server
6、查看进程和端口
[root@alexis-01 ~]# ps aux|grep gateway
zabbix 8023 1.0 3.6 2267640 36624 ? Sl 20:28 0:00 java -server -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-4.0.9.jar -Dzabbix.pidFile=/var/run/zabbix/zabbix_java.pid -Dzabbix.listenPort=10052 -Dzabbix.startPollers=5 -Dsun.rmi.transport.tcp.responseTimeout=3000 com.zabbix.gateway.JavaGateway
root 8108 0.0 0.0 112728 988 pts/0 S+ 20:29 0:00 grep --color=auto gateway
[root@alexis-01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 7223/rpc.mountd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7156/sshd
tcp 0 0 0.0.0.0:36919 0.0.0.0:* LISTEN 7171/rpc.statd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7572/master
tcp 0 0 0.0.0.0:43225 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 7196/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 8049/zabbix_server
tcp6 0 0 :::41833 :::* LISTEN -
tcp6 0 0 :::3306 :::* LISTEN 7479/mysqld
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 7155/httpd
tcp6 0 0 :::20048 :::* LISTEN 7223/rpc.mountd
tcp6 0 0 :::22 :::* LISTEN 7156/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7572/master
tcp6 0 0 :::2049 :::* LISTEN -
tcp6 0 0 :::10050 :::* LISTEN 7196/zabbix_agentd
tcp6 0 0 :::10051 :::* LISTEN 8049/zabbix_server
tcp6 0 0 :::43939 :::* LISTEN 7171/rpc.statd
tcp6 0 0 :::10052 :::* LISTEN 8023/java
7、开启 JMX
1)编辑配置文件 /usr/local/tomcat/bin/catalina.sh
在 #!/bin/sh 下增加一段,如果是多个客户端的 JMX 需要设置不同的 ip 和 port
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.194.130
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
2)重启 tomcat
[root@alexis-01 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@alexis-01 ~]# /usr/local/tomcat/bin/startup.sh
3)查看 9999 端口是否启动
[root@alexis-01 ~]# netstat -lntp|grep 9999
tcp6 0 0 :::9999 :::* LISTEN 9832/java
8、zabbix web 端添加新 host
1)创建新主机,配置——主机——创建主机
2)更改主机配置:主机名称——群组——移除agent代理程序接口——添加JMX接口——127.0.0.1,端口 9999
3)链接模板:模板——Template App Apache Tomcat JMX——添加——添加
4)监测——最新数据——主机切换为arslinux-01_tomcat已经出数据了
5.25 zabbix 监控 mysql
1、授权用户
[root@alexis-01 ~]# mysql -uroot -parslinux
mysql> grant usage,process,replication client on*.* to 'mon'@'localhost' identified by '12345678';
Query OK, 0 rows affected (0.05 sec)
2、查看 /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 中 HOME 的位置
HOME=/var/lib/zabbix
3、创建目录 /var/lib/zabbix
[root@arslinux-01 ~]# mkdir /var/lib/zabbix
4、在目录下创建隐藏文件 .my.cnf,添加两段内容
[root@alexis-01 ~]# vim /var/lib/zabbix/.my.cnf
[mysql]
host=localhost
user=mon
password='12345678'
socket=/tmp/mysql.sock
[mysqladmin]
host=localhost
user=mon
password='12345678'
socket=/tmp/mysql.sock
5、重启 zabbix-agent 服务(如果没改 zabbix 配置文件无需重启)
[root@alexis-01 ~]# systemctl restart zabbix-agent
6、测试
[root@alexis-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.ping
sh: mysqladmin: 未找到命令
0
7、mysqladmin 的位置
[root@alexis-01 ~]# which mysqladmin
/usr/local/mysql/bin/mysqladmin
由于 PATH 的原因,可以给 mysqladmin 做个软连接到 /usr/bin/ 下
8、做软链接
[root@alexis-01 ~]# ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/
9、再次测试
[root@alexis-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.ping
1
10、测试下 mysql.version、mysql.size
[root@alexis-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.version
sh: mysql: 未找到命令
[root@alexis-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.size
bash: mysql: 未找到命令
[root@alexis-01 ~]# which mysql
/usr/local/mysql/bin/mysql
[root@alexis-01 ~]# ln -s /usr/local/mysql/bin/mysql /usr/bin/
[root@alexis-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.version
mysql Ver 14.14 Distrib 5.6.43, for linux-glibc2.12 (x86_64) using EditLine wrapper
[root@alexis-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.size
10240
11、添加主机和模板
1)配置——主机——创建主机——主机名称——群组——端口
2)模板——Template DB MySQL——添加
3)监测——最新数据——主机切换为 arslinux-01_mysql ,过段时间会出现新数据
4)主机可用性也显示 ZBX 可用
5.26 什么是 shell
- shell是一种脚本语言
- 可以使用逻辑判断、循环等语法
- 可以自定义函数
- shell是系统命令的集合
- shell脚本可以实现自动化运维,能大大增加我们的运维效率
5.27 shell 脚本结构和执行
-
开头需要加 #!/bin/bash,不加开头在本机上可以运行,换台机器就不一定能执行。在行首文件头处指定接下来要运行的命令是通过哪一个解释器进行操作的。
-
以#开头的行作为解释说明,脚本的名字以 .sh 结尾,用于区分这是一个 shell 脚本
-
执行方法有两种:
1、/bin/bash 实际上就是 /bin/sh
[root@alexis-01 ~]# ll /bin/sh
lrwxrwxrwx. 1 root root 4 11月 14 05:51 /bin/sh -> bash
[root@alexis-01 ~]# ll /bin/bash
-rwxr-xr-x. 1 root root 964608 11月 16 2019 /bin/bash
2、给文件执行权限,chmod a+x 1.sh 才可以 ./1.sh
[root@alexis-01 shell]# ./1.sh
-bash: ./1.sh: 权限不够
[root@alexis-01 shell]# chmod a+x 1.sh
[root@alexis-01 shell]# ./1.sh
123
22:43:46 up 2:39, 1 user, load average: 0.10, 0.09, 0.13
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.194.1 20:08 2.00s 2:44 0.00s /bin/bash ./1.sh
1.sh
3、如果没有权限,可以 /bin/bash 1.sh
[root@alexis-01 shell]# /bin/bash 1.sh
[root@alexis-01shell]# /bin/bash 1.sh
123
22:48:59 up 2:44, 1 user, load average: 0.01, 0.05, 0.11
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.194.1 20:08 3.00s 2:51 0.00s /bin/bash 1.sh
1.sh
查看脚本执行过程: bash -x 1.sh
查看脚本是否语法错误: bash -n 1.sh
5.28 date 命令
[root@alexis-01 ~]# date
2019年 11月 18日 星期一 21:32:51 CST
date +%Y-%m-%d, date +%y-%m-%d 年月日
[root@alexis-01 ~]# date +%Y-%m-%d
2019-11-18
[root@alexis-01 ~]# date +%y-%m-%d
19-11-18
[root@alexis-01 ~]# date +%Y //年
2019
[root@alexis-01 ~]# date +%M //分钟
14
[root@alexis-01 ~]# date +%D
11/18/19
[root@alexis-01 ~]# date +%F
2019-11-18
[root@alexis-01 ~]# date +%S //秒
09
[root@alexis-01 ~]# date +%s //时间戳,距离 1970.01.01.00:00:00 多少秒
1574084027
date +%H:%M:%S = date +%T 时间
[root@alexis-01 ~]# date +%H:%M:%S
21:34:04
[root@alexis-01 ~]# date +%T
21:34:17
[root@alexis-01 ~]# date +%h
11月
[root@alexis-01 ~]# date +%m
11
date +%s 时间戳
[root@alexis-01 ~]# date +%s
1574084103 //距离 1970.01.01.00:00:00 多少秒
date +%w, date +%W 星期
[root@alexis-01 ~]# date +%w //星期几
1
[root@alexis-01 ~]# date +%W //几年的第几周
46
cal 日历形式查看日期
[root@alexis-01 ~]# cal
十一月 2019
日 一 二 三 四 五 六
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 28 29 30
date -d “-1 day” 一天前
[root@alexis-01 ~]# date -d "-1 day"
2019年 11月 17日 星期日 21:35:53 CST
[root@alexis-01 ~]# date -d "-1 day" +%F
2019-11-17
date -d “+1day” 一天后
[root@alexis-01 ~]# date -d "+1 day" +%F
2019-11-19
date -d “-1 month” 一月前
[root@alexis-01 ~]# date -d "-1 month" +%F
2019-10-18
[root@alexis-01 ~]# date -d "-1 year" +%F
2018-11-18
[root@alexis-01 ~]# date -d "-1 week" +%F
2019-11-11
date -d “-1 min” 一分钟前
[root@alexis-01 ~]# date -d "-1 min" +%T
21:36:43
date -d @1504620492 根据时间戳换算成日期
[root@alexis-01 ~]# date -d @1504620492
2017年 09月 05日 星期二 22:08:12 CST
date +%s -d “2019-09-09 09:09:09” 把具体的日期换算成时间戳’
[root@alexis-01 ~]# date +%s -d "2019-09-09 09:09:09"
1567991349