Zabbix
zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
Zabbix安装部署
系统环境:
Server1:172.25.24.1 redhat 7.3
Server2:172.25.24.2 redhat 6.5
Server3:172.25.24.3 redhat 6.5
关闭selinux和iptables
安装zabbix rpm包仓库和zabbix-server-mysql和zabbix-web-mysql
安装时报错需要两个php依赖
yum list php #查看本机php版本
yum install -y zabbix-server-mysql-3.4.6-1.el7.x86_64.rpm zabbix-web-3.4.6-1.el7.noarch.rpm zabbix-web-mysql-3.4.6-1.el7.noarch.rpm fping-3.10-1.el7.x86_64.rpm iksemel-1.4-2.el7.centos.x86_64.rpm php-bcmath.x86_64 0:5.4.16-42.el7 php-mbstring.x86_64 0:5.4.16-42.el7
自行下载依赖包后继续安装
安装mariadb-server并启动,安全初始化登陆mysql创建zabbix数据库及授权
yum install -y mariadb-server
systemctl start mariadb.service
mysql_secure_installation
mysql -p
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by '123';
将数据导入数据库
cd /usr/share/doc/zabbix-server-mysql-3.4.6/
zcat create.sql.gz | mysql -u zabbix -p zabbix #需要输入授权用户密码
登陆数据库查看
use zabiix
show tables
修改配置文件
vim /etc/zabbix/zabbix_server.conf
修改时区
vim /etc/httpd/conf.d/zabbix.conf
开启zabbix-server,httpd,zabbix-agent
systemctl start zabbix-server.service
systemctl start httpd.service
systemctl start zabbix-agent.service
浏览器访问172.25.24.1/zabbix
逐步安装
此处密码为数据库zabbix授权用户密码
名字随意
登陆用户是Admin 密码是 zabbix
点击右上角Admin图标修改密码也可以设置语言为中文
至此zabbix安装完成
在配置 -> 主机中点击 Zabbix server的已停用启用主机
刷新页面看见可用性ZBX变绿即可
将zabbix-agent添加到zabbix web中监控
在server2上安装zabbix-agent
rpm -ivh zabbix-agent-3.4.6-1.el6.x86_64.rpm
修改配置文件
vim /etc/zabbix/zabbix_agentd.conf
指定zabbix_server端
ServerActive主动提交监控数据时使用
zabbix-agent标识,这里填agent主机名,需要在server1添加本地解析
完成后启动zabbix-agent
/etc/init.d/zabbix-agent start
在服务器端(zabbix web )添加主机节点
通过创建主机方式添加
点击配置—>主机—>创建主机
主机名称:必须要和agent中的HostName中一样,否则会出错
agent代理程序的接口填写zabbix-agent的ip
模版–选择–“Template OS Linux” 添加; 添加agent添加到zabbix监控中,默认是被动模式
完成后点击配置—>主机查看,如图等待server2 ZBX变绿即添加成功
通过自动发现方式添加
删除刚才创建的主机server2
点击配置—>动作–>事件源选择自动发现—>启用Auto discovery. Linux servers.
点击Auto discovery. Linux servers. 的已停用 启用
在 配置–>自动发现中点击Local network 进行修改
修改ip范围
在监测中–>仪表板–>自动发现状态栏 查看
Local network 的上 状态为1 表示成功
通过自动注册方式添加
删除刚才添加的主机server2
禁用动作Auto discovery. Linux servers.
禁用自动发现规则
点击配置—>动作–>事件源选择自动注册–>创建动作
在动作中添加新的触发条件
在操作中选择 添加主机,添加到主机群组,与模板关联
完成后点击添加
然后在server2上重启zabbix-agent
完成后在配置—>主机中查看,如图server2自动注册并且刷新页面 ZBX变绿即添加成功
通过API方式添加
禁用主动注册动作
在server1上创建zabbix-api脚本
vim zabbix-api.sh #用户登陆并获取身份验证令牌
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}
' http://172.25.24.1/zabbix/api_jsonrpc.php | python -m json.tool
chmod +x zabbix-api.sh
./zabbix-api.sh
vim zabbix-api.sh #获取hostid
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"id": 1,
"auth": "b6c96d8cc0ee1e8de645489514bf50a1" #从上一个脚本输出结果result得来
}
' http://172.25.24.1/zabbix/api_jsonrpc.php | python -m json.tool
./zabbix-api.sh
vim zabbix-api.sh #删除server2主机,若是没有创建server2主机则不用删除
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10256"
],
"id": 1,
"auth": "b6c96d8cc0ee1e8de645489514bf50a1"
}
' http://172.25.24.1/zabbix/api_jsonrpc.php | python -m json.tool
./zabbix-api.sh
vim zabbix-api.sh #创建server2主机
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server2",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.24.2",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"id": 1,
"auth": "b6c96d8cc0ee1e8de645489514bf50a1"
}
' http://172.25.24.1/zabbix/api_jsonrpc.php | python -m json.tool
./zabbix-api.sh
上面配置文件中
groupid可在zabbix监控页面 配置–>主机群组–>点击Linux servers 查看
此时页面网址最后面就是groupid
templateid在zabbix监控页面 配置–>模板–>点击Template OS Linux 查看
此时页面网址最后面就是templateid
完成后在配置—>主机中查看,如图server2自动注册并且刷新页面 ZBX变绿即添加成功
添加监控项
监控nginx
Server1
vim zabbix-api.sh #创建server3主机
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server3",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.24.3",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"id": 1,
"auth": "b6c96d8cc0ee1e8de645489514bf50a1"
}
' http://172.25.24.1/zabbix/api_jsonrpc.php | python -m json.tool
./zabbix-api.sh
安装zabbix-get
rpm -ivh zabbix-get-3.4.6-1.el7.x86_64.rpm
Server3
安装zabbix-agent
rpm -ivh zabbix-agent-3.4.6-1.el6.x86_64.rpm
vim /etc/zabbix/zabbix_agentd.conf #同server2 指定server和serveractive以及hostname
/etc/init.d/zabbix-agent start
编译安装nginx
yum install -y gcc pcre-devel zlib-devel #编译所需依赖包
tar zxf nginx-1.14.0.tar.gz
./configure --prefix=/usr/local/nginx --with-http_stub_status_module
make && make install
vim /usr/local/nginx/conf/nginx.conf
在server中添加
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
ln -s /usr/local/nginx/sbin/nginx /sbin/ #为方便调用,建立软连接
nginx -t #检查是否有语法错误
nginx #启动nginx
cp /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
UserParameter=nginx.accepts,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'
UserParameter=nginx.handled,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $2}'
UserParameter=nginx.requests,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $3}'
nginx -s reload
/etc/init.d/zabbix-agent restart
Server1
zabbix_get -s 172.25.24.3 -p 10050 -k "nginx.active" #查看
在zabbix监控页面 配置–>主机中点击server3–>点击监控项
点击右上角添加监控项 nginx.active,nginx.accepts,nginx.handled,nginx.requests
选择监控项中的图形
点击右上角创建图形,添加刚才建的四个监控项
为方便观察结果图形类别可以选则爆发的
点击预览查看
使用自带模板添加mysql到监控
Server1
mkdir /var/lib/zabbix
vim /var/lib/zabbix/.my.cnf
[mysql]
host = localhost
user = zabbix
password = 123
socket = /var/lib/mysql/mysql.sock
[mysqladmin]
host = localhost
user = zabbix
password = 123
socket = /var/lib/mysql/mysql.sock
systemctl restart zabbix-agent.service
在监控页面 配置–>主机中点击Zabbix server
在模板中添加数据库模板
然后图形中会多两个图形
MySQL bandwidth 数据库带宽
MySQL operations 数据库操作
点击MySQL operations 在预览中查看
percona模板监控mysql
由于系统自带mysql监控模板的监控项太少,所以我们采用percona模板监控mysql
在监控页面 配置–>主机–>Zabbix server–>模板–> 取消链接并清理 Template DB MySQL --> 点击更新
Server1
rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
cd /var/lib/zabbix/percona/templates
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
systemctl restart zabbix-agent.service
mysql_secure_installation
cd /var/lib/zabbix/percona/scripts
vim ss_get_mysql_stats.php.cnf
<?php
$mysql_user = 'root';
$mysql_pass = '123';
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ig #测试
cd /tmp/
cat localhost-mysql_cacti_stats.txt
chown zabbix.zabbix localhost-mysql_cacti_stats.txt #需要修改权限,或者删除此文件
在监控页面 配置–>模板–>右上角–>导入
在 配置–>主机–>Zabbix server -->模板–>添加Template Percona MySQL Server模板–>更新
此时会发现监控项多了一百多个
添加onealert警告
物理机
iptables -t nat -nL
iptables -t nat POSTROUTING -s 172.25.24.0/24 -j MASQUERADE
tar zxf oneitsm_zabbix_release-1.2.0.tar.gz -C /usr/lib/zabbix/alertscripts/
yum install -y net-tools
route add default gw 172.25.24.250 #虚拟机要可以上网
vim /etc/resolv.conf
nameserver 114.114.114.114
ping www.baidu.com #测试
cd /usr/lib/zabbix/alertscripts/oneitsm/bin
./install.sh e4090e90-f256-4b4f-6a87-d2d4b97080e6
Zabbix管理地址: http://172.25.24.1/zabbix
Zabbix管理员账号: Admin
Zabbix管理员密码: zabbix
此时警报服务已安装完成
为了避免干扰
在 监控页面 管理–>报警媒介类型–>禁用掉Email,Jabber,SMS
测试:
停掉server2的zabbix-agent