Zabbix监控案例
Zabbix生产案例实战
1. 项目规划
主机分组:
交换机
Nginx
Tomcat
MySQL
监控对象识别:
1.使用SNMP监控交换机
2.使用IPMI监控服务器硬件
3.使用Agent监控服务器
4.使用JMX监控Java
5.监控MySQL
6.监控Web状态
7.监控Nginx状态
SNMP监控:
1.1 交换机上开启snmp。
config t
snmp-server community public ro
end
1.2 在zabbix上添加监控。
设置SNMP interfaces
1.3 关联监控模板
IPMI:
建议:使用自定义item,本地执行ipmitool命令来获取数据。
JMX:(使用Zabbix Java Gateway代理)
1. 安装yum install -y zabbix-java-gateway java-1.8.0
2. 配置vim /etc/zabbix/zabbix_java_gateway.conf
START_POLLERS=5 ---》可以设置大些,经验值
TIMEOUT=3 ---》基于网络质量来,要是网络稳定性差,可以设置大些。
3. 启动systemctl start zabbix-java-gateway.service
4. 查看端口、进程
5. [root@linux-node1 ~]# vim /etc/zabbix/zabbix_server.conf
JavaGateway=192.168.56.11 ---》设置Java Gateway地址
StartJavaPollers=5 ---》启动Java gateway的进程(zabbix-server去询问Java gateway的)
6. 重启zabbix server
JMX三种类型:1.无密码认证 2.用户名密码认证 3.ssl
安装tomcat:
[root@linux-node2 ~]# cd /usr/local/src
[root@linux-node2 src]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.0.36/bin/apache-tomcat-8.0.36.tar.gz
[root@linux-node2 src]# tar zxf apache-tomcat-8.0.36.tar.gz
[root@linux-node2 src]# mv apache-tomcat-8.0.36 /usr/local/
[root@linux-node2 src]# ln -s /usr/local/apache-tomcat-8.0.36/ /usr/local/tomcat
[root@linux-node2 src]# /usr/local/tomcat/bin/startup.sh
开启jmx远程监控:
[root@linux-node2 ~]# vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8888
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.56.12"
[root@linux-node2 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@linux-node2 ~]# /usr/local/tomcat/bin/startup.sh
手动检测监控状态:
[root@linux-node1 ~]# yum install -y zabbix-get
生产监控Nginx:
1.开启Nginx监控
2.编写脚本来进行数据采集。
3.设置用户自定义参数
4.重启zabbix-agent
5.添加item
6.创建图形
7.创建触发器
8.创建模板
1. 脚本--》zabbix_linux_plugin.sh:
2. 上传到/etc/zabbix/zabbix_agentd.d目录下
3. 修改agent配置Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@linux-node1 zabbix_agentd.d]# chmod +x zabbix_linux_plugin.sh
[root@linux-node1 zabbix_agentd.d]# ./zabbix_linux_plugin.sh
Usage: ./zabbix_linux_plugin.sh {tcp_status key|memcached_status key|redis_status key|nginx_status key}
Nginx监控状态配置:
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
测试:
[root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 active
1
配置文件:
[root@linux-node1 zabbix_agentd.d]# cat linux.conf
UserParameter=linux_status[*],/etc/zabbix/zabbix_agentd.d/zabbix_linux_plugin.sh "$1" "$2" "$3"
[root@linux-node1 zabbix_agentd.d]# systemctl restart zabbix-agent
[root@linux-node1 ~]# zabbix_get -s 192.168.56.11 -k linux_status[nginx_status,8080,active]
1
自定义告警脚本:
1.放在cd /usr/lib/zabbix/alertscripts
2.要支持三个参数 1.收件人 2.主题 3.内容
3.执行权限
4.Web界面添加
5.修改Actions
使用Percona监控插件监控MySQL:
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
参考文档:
https://www.percona.com/doc/percona-monitoring-plugins/1.1/zabbix/index.html#installation-instructions
安装:
yum install percona-zabbix-templates php php-mysql
1. php脚本(ss_get_mysql_status.php)用来数据采集
2. shell脚本(get_mysql_status_wrapper.sh) 调用这个php
3. zabbix配置文件(userparameter_percona_mysql.conf)
4. zabbix模板文件
创建zabbix监控专用用户。
Zabbix-Web监控:
问题:
1)监控主机多,性能跟不上,延迟大
2)多机房,防火墙因素
Zabbix能够轻松解决,但是nagios不太好解决的问题。
zabbix监控模式(针对Agent来说):
1)被动模式(默认)
2)主动模式 active
a. Queue里有大量延迟的item;
b. 当监控主机超过300+,建议使用主动模式。
主动模式配置:
StartAgents=0
ServerActive=192.168.56.11
Hostname=linux-node2.example.com
主动模式下是没有模板的,必须要手动创建主动模式下的模板。---》基于被动模式下的模版克隆后修改Items的TYPE,全部修改:从
zabbix agent修改为zabbix agent(active)。
Zabbix Proxy(分布式监控)(zabbix版本是3.0):
zabbix server ---》 zabbix proxy ---》 zabbix agent
zabbix_proxy代理机器部署在:192.168.56.12
安装zabbix_proxy和mariadb数据库:
yum -y install zabbix-proxy zabbix-proxy-mysql mariadb-server
systemctl start mariadb
创建数据库:
create database zabbix_proxy character set utf8;
grant all on zabbix_proxy.* to zabbix_proxy@'localhost' identified by 'zabbix_proxy';
开始导入数据:
cd /usr/share/doc/zabbix-proxy-mysql-3.0.3/
zcat schema.sql.gz |mysql -uzabbix_proxy -pzabbix_proxy
修改zabbix_proxy的配置文件:
/etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #代理主动模式
Server=192.168.56.11 #zabbix-server 的IP地址
Hostname=proxy-node1
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
启动服务:
systemctl start zabbix-proxy
查看端口:
netstat -tunlp |grep 10051 ##zabbix-proxy也是监听10051端口。
在zabbix-server机器192.168.56.11的dashboard上配置:
Administration---->Proxies--->点击create proxy--->
Proxy name : proxy-node1 ---->和配置文件中Hostname设置的一致
Proxy mode : Active
Hosts Proxy hosts: 要监控的主机
Description:描述
之后点击Add。
补充:其他主机要想通过zabbix_proxy代理去监控,可以
在---》configuration---》host---》勾选Monitored by proxy (zabbix_proxy)---最后点击添加。
新增加的监控主机配置文件中添加的zabbix-server IP是zabbix-proxy的IP地址。
对于zabbix_proxy监控的zabbix_agent主机,也分为主动监控和被动监控。
以上实验操作采用的方式是zabbix_proxy+zabbix-agent主动模式
--------------------------------------------------------------------------------------------------------------------------------
zabbix自动化监控
1)自动注册(基于zabbix-agent来说)
1.1 zabbix agent自动添加
2)主动发现(基于zabbix-server来说)
2.1 自动发现Discover
2.2 zabbix API
3)下面介绍zabbix agent的自动注册
修改zabbix-agent的配置文件/etc/zabbix/zabbix-agentd.conf
ServerActive=192.168.56.11
Hostname=linux-node2.example.com 主机名要唯一
HostMetadataItem=system.uname #写一个item(能够获取的监控项)
#HostMetadata= #手动写一个(HostMetadataItem和HostMetadata都配置,默认以HostMetadata)
开始zabbix-server的dashboard配置
Configuration--->Actions--->右侧栏(Auto registration)--->create action--->Action
Name : agent 自动注册
Conditions :
New conditon :
Host metadata like Linux
Operations :
action operations:
Operation type [Add host] 操作类型为添加主机及模板
点击Add
重启zabbix-agent服务
systemctl restart zabbix-agent
之后等待zabbix-server自动添加主机!!!!!!!!
4)zabbix server主动发现
注意:zabbix-agent客户端要是被动模式。
Configuration-->Discovery
Configuration-->时间来源Discovery-->create action
5)zabbix API:
参考文档:
zabbix官网 https://www.zabbix.com/documentation/3.0/
http://www.361way.com/zabbix-api/3577.html
zabbix-server端:
/usr/share/zabbix/api_jsonrpc.php
1、验证(都是在zabbix-server端操作)
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "pengjian",
"password": "pengjian1314"
},
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php |python -m json.tool
{
"id": 1,
"jsonrpc": "2.0",
"result": "bb316dde6872f71fa5ba51b558dc4833"
}
2、请求API,附带上SessionID(显示所有的主机)
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["hostid"]
},
"auth": "bb316dde6872f71fa5ba51b558dc4833",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php |python -m json.tool
输出:
{
"id": 1,
"jsonrpc": "2.0",
"result": [
{
"hostid": "10084"
},
{
"hostid": "10107"
}
]
}
或者:
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"auth": "bb316dde6872f71fa5ba51b558dc4833",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php |python -m json.tool
输出(显示主机和主机ID):
{
"id": 1,
"jsonrpc": "2.0",
"result": [
{
"host": "Zabbix server",
"hostid": "10084"
},
{
"host": "linux-node1.example.com",
"hostid": "10107"
}
]
}
显示所有的模板:
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend",
},
"auth": "bb316dde6872f71fa5ba51b558dc4833",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php |python -m json.tool
或者:
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend",
"filter": {
"host": [
"Template OS Linux",
"Template OS Windows"
]
}
},
"auth": "bb316dde6872f71fa5ba51b558dc4833",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php |python -m json.tool
可以执行python脚本
yum install python-pip
pip install requests ---》要是安装失败,可以执行如下方式安装:
pip install requests -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com
[root@linux-node1 ~]#python zabbix_auth.py ---》产生一个tocken。
1a2421a8f149fe46a7584fd60525fb3c
执行如下语句:
[root@linux-node1 ~]#curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server",
"interfaces": [
{
"type": 1, ---》agent
"main": 1,
"useip": 1,
"ip": "192.168.56.12",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "4"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "1a2421a8f149fe46a7584fd60525fb3c", ---》此处的tocken号是python脚本执行后产生的。
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php |python -m json.tool
之后查看zabbix web界面上就有192.168.56.12机器的监控了!!!!!!!!!
zabbix+CMDB(只要是在CMDB上添加机器,就会通过zabbix API加入到zabbix监控中;从CMDB删除也是一样道理)
zabbix是没有ha的,有HA的也就是后端的数据库备份,高可用。或者zabbix做个域名,当这台zabbix机器宕机,修改下DNS的A记录就可以了。
若数据库量比较大的话,可以对数据库做表分区。

浙公网安备 33010602011771号