搭建zabbix前准备(zabbix服务器ip:192.168.1.191;客户端:192.168.1.105)
1).需要连接外网(一定要关防火墙)
2).需要更新yum源,纯净版的yum源需要更新,步骤如下:
更换yum源,将原有源删除或备份到别的目下下:
#cd /etc/yum.repos.d/
#wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
#vi CentOS6-Base-163.repo
编辑文件,把文件里面的$releasever全部替换为版本号:6(注意,不是6.5!)最后保存!
:%s/$releasever/6/g
清除原有缓存,重建缓存:
#yum clean all
#yum makecache
更新系统:
#yum update
- Zabix监控服务器搭建过程
- 客户端服务器为lnmp。
- zabix官方文档:
https://www.zabbix.com/documentation/2.4/manual/installation/install_from_packages
- 安装zabbix(安装过程需要虚拟机联网)
注意:zabbix-agent 部署在被监控机上面,zabbix-server 建议部署在另外一台主机上,zabbix-agent 会发送数据到zabbix-server 或者zabbix-server 主动索取数据,zabbix-server 将获取的数据存在mysql 数据库中(或者其他的数据库),web 从server上获取数据,然后显示给用户。
安装php:yum install -y php*
安装mysql mysql-server:yum install -y mysql mysql-server
安装http(或nginx)
安装zabbix’
[root@localhost iftop-0.17]# cd /tmp
[root@localhost tmp]# rpm -ivh zabbix-release-2.4-1.el6.noarch.rpm
[root@localhost tmp]# rpm -ql zabbix-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
/etc/yum.repos.d/zabbix.repo
/usr/share/doc/zabbix-release-2.4
/usr/share/doc/zabbix-release-2.4/GPL
[root@localhost tmp]# ll /etc/yum.repos.d/zabbix.repo
-rw-r--r--. 1 root root 401 9月 11 2014 /etc/yum.repos.d/zabbix.repo
安装过程中保留zabbix包:
[root@localhost tmp]# sed -i 's#keepcache=1#keepcache=0#g' /etc/yum.conf
[root@localhost tmp]# grep keepcache /etc/yum.conf
keepcache=0
2.1需先安装php、mysql、http(nginx)服务
yum -y install zabbix zabbix-server zabbix-server-mysql #<==ZABBIX SERVER相关
yum -y install zabbix-web zabbix-web-mysql #<==Apache、Php Web界面环境
yum -y install zabbix-agent #<== ZABBIX客户端
yum -y install mysql-server mysql #<==MySQL客户端与服务端
- 配置zabbix服务:
1)配置mysql
[root@linux-node1 tools]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
[root@linux-node1 tools]# vim /etc/my.cnf
在[mysqld](第26行)标签下增加如下三行后保存
[mysqld]
character-set-server = utf8
init-connect = 'SET NAMES utf8'
collation-server = utf8_general_ci
[root@linux-node1 tools]# /etc/init.d/mysqld start
2)初始化数据库环境
创建数据库
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
授权数据库
mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
导入表结构
[root@linux-node1 tools]# cd /usr/share/doc/zabbix-server-mysql-2.4.8/create
[root@linux-node1 create]# mysql -u zabbix -p zabbix < schema.sql
[root@linux-node1 create]# mysql -u zabbix -p zabbix < images.sql
[root@linux-node1 create]# mysql -u zabbix -p zabbix < data.sql
上面密码输入zabbix
[root@linux-node1 create]# mysqladmin -u root password 123456
3)设置apache时区
sed -i 's#\# php_value date.timezone Europe/Riga#php_value date.timezone Asia/Shanghai#g' /etc/httpd/conf.d/zabbix.conf(可用vim修改成php_value date.timezone Asia/Shanghai)
grep Shanghai /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
4)更改zabbix server配置
[root@linux-node1 ~]# cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak
[root@linux-node1 ~]# sed -i 's@# DBPassword=@DBPassword=zabbix@g' /etc/zabbix/zabbix_server.conf
[root@linux-node1 ~]# sed -i 's@# DBHost=localhost@DBHost=localhost@g' /etc/zabbix/zabbix_server.conf
vim /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
5)启动相关服务
[root@localhost create]# service mysqld restart
停止 mysqld: [确定]
[root@linux-node1 ~]# /etc/init.d/zabbix-server start
Starting Zabbix server: [确定]
[root@linux-node1 ~]# /etc/init.d/httpd start
正在启动 httpd: [确定]
[root@linux-node1 ~]# lsof -i:10051|wc -l
[root@linux-node1 ~]# lsof -i:80|wc -l
5).web监控界面安装:
以上创建了一个配置文件,然后如果写错就可以去配置文件修改。
登录Admin/zabbix,进入后改密码。
默认登陆用户及登陆密码为:Admin:zabbix
- 安装zibbix客户端(客户端安装)
rpm -ivh zabbix-release-2.4-1.el6.noarch.rpm
yum install zabbix-agent -y
vim /etc/zabbix/zabbix_agentd.conf
Server= 192.168.1.191 (服务端ip)
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server= 192.168.1.191 (服务端ip)
ServerActive=127.0.0.1
Hostname=Zabbix server
/etc/init.d/zabbix-agentd start
1).添加zabbix主机组和主机
添加组demo
创建组内主机
2).创建用户和组
组和用户必须添加,zabbix报警是针对用户和用户组的。
创建用户(不要急着存档)
报警媒介先不填,因为默认的媒介不好用,需要手动添加,一会添加。
(192.168.1.191/zabbix/popup_media.php?dstfrm=userForm)
添加完成,既可以使用新用户登录。
3)添加项目及触发器
1、客户端添加一个检查用户的key,格式为key,命令
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=login-user,uptime | awk -F ' ' '{print $4}'
/etc/init.d/zabbix-agent restart
2. 服务器主机通过zabbix-get检查
yum install zabbix-get -y
zabbix-get -s 客户主机 -k 命令
[root@linux-node1 ~]# zabbix_get -s 192.168.1.105 -k login-user
login-user 获取登录用户的列表
3、web界面添加
服务器主机界面选定主机,然后点击项目,点创建项目
4.添加触发器
此处点添加,然后选择主机
5.创建图形
6. 设置报警
7.服务器自定义报警类型
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts ##<<设置自定义脚本的路径
[root@linux-node1 alertscripts]# /etc/init.d/zabbix-server restart
之后写相应脚本login.sh
脚本要支持三个参数
$1:用户的介质,如邮箱,手机号等
$2:标题
$3:内容
[root@linux-node1 alertscripts]# cat login.sh
#!/bin/bash
MAIL_TITEL=$2
MAIL_CON=$3
echo "$MAIL_CON"|/bin/mail -s "$MAIL_TITEL" $1
echo "$1 $2 $3">>/tmp/login_zabbix.txt
8. 添加媒介类型
设置相应动作:
为用户配置示警媒介
8.简单自定义脚本模板
客户端:
[root@lb-node2 zabbix]# mkdir /etc/zabbix/zabbix_agentd.conf.d
[root@lb-node2 zabbix]# cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.d/zabbix-linux-plugin.conf
[root@lb-node2 zabbix]#创建/etc/zabbix/zabbix_linux_plugin.sh(内容在最最下面)
UserParameter=linux_status[*],/etc/zabbix/zabbix_linux_plugin.sh "$1" "$2" "$3" #写在/etc/zabbix/zabbix_agentd.conf中
服务器:zabbix_get -s 192.168.1.105 -p 10050 -k linux_status[tcp_status]
9.web监控
Web监控主要是和针对主机
4). 分布式监控、客户端主动模式
4.1客户端被动模式
修改客户端:
Vim /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=3
Server= 192.168.1.191 服务器ip
ServerActive=127.0.0.1
Hostname=Zabbix server
4.2客户端主动模式
客户端:# vim /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=0
ServerActive=192.168.1.191
Hostname=linux-node2.example.com
Include=/etc/zabbix/zabbix_agentd.d/
# /etc/init.d/zabbix-agent restart
(报错可能是文件中Include=/etc/zabbix/zabbix_agentd.d/
重复出现)
服务器端克隆模板,把模板里面的项目全选,批量更新,项目类型改为主动方式。
4.3zabbix分布式
客户端安装zabbix-proxy:
# yum install -y zabbix-proxy zabbix-proxy-mysql mysql-server
配置分布式
# rpm -ql zabbix-agent
/etc/init.d/zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
/usr/sbin/zabbix_agent
/usr/sbin/zabbix_agentd
/usr/share/doc/zabbix-agent-2.4.8
/usr/share/doc/zabbix-agent-2.4.8/userparameter_examples.conf
/usr/share/doc/zabbix-agent-2.4.8/zabbix_agent.conf
/usr/share/man/man8/zabbix_agentd.8.gz
[root@linux-node2 ~]# rpm -ql zabbix-proxy-mysql
/usr/sbin/zabbix_proxy_mysql
/usr/share/doc/zabbix-proxy-mysql-2.4.8
/usr/share/doc/zabbix-proxy-mysql-2.4.8/create
/usr/share/doc/zabbix-proxy-mysql-2.4.8/create/schema.sql
客户端数据库配置
# /etc/init.d/mysqld start
mysql -u root -p
mysql> create database zabbix_proxy character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
mysql> use zabbix_proxy
Database changed
mysql> source /usr/share/doc/zabbix-proxy-mysql-2.4.8/create/schema.sql;
Query OK, 0 rows affected (0.02 sec)
配置文件配置
# vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #0主动,1被动
Server=192.168.1.191 #主动模式设置服务器ip
Hostname=proxy-node1 #必须改
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
ExternalScripts=/usr/lib/zabbix/externalscripts
# /etc/init.d/zabbix-proxy start
Starting Zabbix proxy: [确定]
# lsof -i:10051
配置界面,管理-分布式(代理)-创建代理-
之后添加主机(选上代理即可,选客户端主机即可),要监控的机器/etc/zabbix/zabbix_agent.conf配置文件ip改成代理的ip(192.168.1.191),服务多重启几次,先stop再start
4.4自动化监控
客户端:zabbix-agent自动注册(使用proxy)
vim /etc/zabbix/zabbix_agentd.conf
HostMetadataItem=system.uname
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=0
ServerActive=192.168.1.191 #此时为代理的服务器ip
Hostname=linux-node2.example.com
Include=/etc/zabbix/zabbix_agentd.d/
组态-动作-事件源选择自动注册-创建动作:
4.5主机探索(不使用proxy,被动模式)
客户端:
vim /etc/zabbix/zabbix_agentd.conf
组态-探索--使用默认
之后创建动作,事件源选探索,其他同上。
5)使用zabbix-api
手册帮助:https://www.zabbix.com/documentation/2.4/manual/api/reference
服务器端编辑:# /usr/share/zabbix/api_jsonrpc.php
获取验证
# curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "123456"
},
"id": 1
}' http://192.168.1.191/zabbix/api_jsonrpc.php | python -mjson.tool
---------上面为输入--下面为输出-----
{
"id": 1,
"jsonrpc": "2.0",
"result": "6981d2f7663ac35b553ce7e4477f7f29"
}
-------
请求api,获取监控主机,带上SessionID
[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["hostid"]
},
"auth": "6981d2f7663ac35b553ce7e4477f7f29",
"id": 2
}' http://10.0.0.7/zabbix/api_jsonrpc.php | python -mjson.tool
------上面为输入,下面为输出----------
{
"id": 2,
"jsonrpc": "2.0",
"result": [
{
"hostid": "10084"
},
{
"hostid": "10115"
}
]
}
以下为添加主机实例:
创建主机,执行下面直接添加。
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "10.0.0.8",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
],
},
"auth": "9d670026e562405100a1a073231e7658",
"id": 1
}' http:// 192.168.6.134/zabbix/api_jsonrpc.php | python -mjson.tool
/etc/zabbix/zabbix_linux_plugin.sh内容:
# cat zabbix_linux_plugin.sh
#!/bin/bash
############################################################
# $Name: zabbix_linux_plugins.sh
# $Version: v1.0
# $Function: zabbix plugins
# $Create Date: 2014-08-10
# $Description: Monitor Linux Service Status
############################################################
tcp_status_fun(){
TCP_STAT=$1
ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' > /tmp/netstat.tmp
TCP_STAT_VALUE=$(grep "$TCP_STAT" /tmp/netstat.tmp | cut -d ' ' -f2)
if [ -z "$TCP_STAT_VALUE" ];then
TCP_STAT_VALUE=0
fi
echo $TCP_STAT_VALUE
}
main(){
case $1 in
tcp_status)
tcp_status_fun $2;
;;
*)
echo $"Usage: $0 {tcp_status key}"
esac
}
main $1 $2 $3