我这里的监控是使用zabbix,刚开始接触比较费劲,但慢慢的看文档边做边看就好多了,现在回头来看还是zabbix比较好,建议大家可以多看看。
现在来介绍一下zabbix的服务端与客户端的安装
一、服务端的安装(版本是2.0.6)
安装基本依赖包
yum install mysql-server mysql-devel libcurl-devel net-snmp-devel php php-gd php-xml php-mysql php-mbstring php-bcmath httpd
关于php与mysql的安装也可以选择源码编译的。
1、下载zabbix包,然后上传到tmp目录,并解压
tar zxvf zabbix-2.0.6.tar.gz
2、创建用户
groupadd zabbix useradd -g zabbix zabbix
3、创建数据库(使用mysql数据库)、用户与导入表
create database zabbix character set utf8 collate utf8_bin; grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix'; flush privileges; cd /tmp/zabbix-2.0.6/database/ mysql -uzabbix -pzabbix zabbix <mysql/schema.sql mysql -uzabbix -pzabbix zabbix <mysql/images.sql mysql -uzabbix -pzabbix zabbix <mysql/data.sql
4、编译安装
cd /tmp/zabbix-2.0.6 ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl make install
5、配置
cd /usr/local/zabbix/etc/
下面是是我的配置
grep -v '#' zabbix_server.conf|sed '/^$/d' LogFile=/tmp/zabbix_server.log DBName=zabbix DBUser=zabbix DBPassword=zabbix DBSocket=/var/lib/mysql/mysql.sock
6、启动
/usr/local/zabbix/sbin/zabbix_server ps -ef|grep zabbix zabbix 16835 1 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16836 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16837 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16838 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16839 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16840 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16841 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16842 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16843 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16844 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16845 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16846 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16847 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16848 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16849 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16850 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16854 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16855 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16856 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16860 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16861 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16862 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16865 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16866 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16868 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16871 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server zabbix 16873 16835 0 19:34 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server root 16883 3771 0 19:34 pts/1 00:00:00 grep zabbix
7、配置php
sed -i 's/^\(.*\)date.timezone =.*$/date.timezone = Asia\/Shanghai/g' /etc/php.ini sed -i 's/^\(.*\)post_max_size =.*$/post_max_size = 16M/g' /etc/php.ini sed -i 's/^\(.*\)max_execution_time =.*$/max_execution_time = 300/g' /etc/php.ini sed -i 's/^\(.*\)max_input_time =.*$/max_input_time = 300/g' /etc/php.ini
修改完成后别忘记重启php-fpm
8、复制web interface到www目录
mkdir /var/www/html/zabbix cd /tmp/zabbix-2.0.6/frontends/php/ cp -a . /var/www/html/zabbix/
确认好web服务器配置并开启,就输入http://ip/zabbix来进行web的安装
二、web里部署
在web里安装
选择next
1、查看哪个不ok就解决
我这个是全部ok,直接next
2、输入的数据库连接信息
3、测试连接数据库
如果test connection为ok就代表成功
4、输入你的zabbix服务信息
选择next
5、之前操作的汇总
没有问题,选择next
6、先下载这个文件,然后在传到服务器里,给与777权限,修改用户与组为zabbix
然后点击retry
7、没有问题了,选择finish
默认的账户为Admin,密码为zabbix,之后就进入zabbix界面了
二、客户端的安装
客户端分linux与windows,我分别介绍一下。
1、客户端为linux
#!/bin/bash LANG=C ###check adapter name zabbix_user='zabbix' zabbix_install_dir='/usr/local/zabbix' zabbix_agent_hostname=$(hostname) zabbix_server_port='10051' zabbix_agent_ip=$(/sbin/ifconfig|grep 'inet addr:'|grep -Ev '127.0.0.1' | cut -d: -f2 | awk '{if ($1~/^10.*/) {print $1} else {print $1}}'|head -n 1) zabbix_agent_header=$(/sbin/ifconfig|grep 'inet addr:'|grep -Ev '127.0.0.1' | cut -d: -f2 | awk '{if ($1~/^10.*/) {print $1} else {print $1}}'|head -n 1|cut -d . -f1) glibc_version=$(/usr/bin/ldd --version|awk 'NR==1{print $NF}'|cut -d . -f2) function server_agent { #check zabbix server ip if [[ $zabbix_agent_header -eq 10 ]] && [[ $(ping -c 2 10.10.10.8 >>/dev/null 2>&1;echo $?) -eq 0 ]];then zabbix_server_ip='10.10.10.8' else zabbix_server_ip='111.111.111.149' fi } function proxy_agent { #check zabbix server ip if [[ $zabbix_agent_header -eq 10 ]] && [[ $(ping -c 2 10.10.10.15 >>/dev/null 2>&1;echo $?) -eq 0 ]];then zabbix_server_ip='10.10.10.15' else zabbix_server_ip='222.222.222.82' fi } function base { # Check if user is root if [ $(id -u) != "0" ]; then echo -e "\033[1;31m Error: You must be root to run this script!\033[0m" exit 1 fi #check network ping -c 2 www.baidu.com >>/dev/null 2>&1 if [ $? -ne 0 ];then echo -e "\033[1;31m Error: The host can't connect to Inetnet!\033[0m" exit 1 fi #check wget software which wget >>/dev/null 2>&1 if [ $? -ne 0 ];then echo -e "\033[1;31m Error: The wget isn't install,now i will auto install one!\033[0m" if [ $(grep -i -c "ubuntu" /etc/issue) = 0 ];then yum install wget -y else apt-get install wget -y fi fi which wget >>/dev/null 2>&1 if [ $? -ne 0 ];then echo -e "\033[1;31m Error: The wget install fail,please manual install wget!\033[0m" exit 1 fi #create user for zabbix if [ $(grep -i -c "ubuntu" /etc/issue) = 1 ];then /usr/sbin/useradd $zabbix_user -M -s /usr/sbin/nologin else /usr/sbin/useradd $zabbix_user -M -s /sbin/nologin fi #create directory for install zabbix /bin/mkdir $zabbix_install_dir local_dir=$(pwd) #check system version system_version=$(uname -m) #check glibc version if [ $glibc_version -gt 5 ];then if [ $system_version == 'x86_64' ];then #download zabbix agent by system version x86_64 wget http://www.zabbix.com/downloads/2.0.6/zabbix_agents_2.0.6.linux2_6_23.amd64.tar.gz #unpack zabbix agent to /usr/loca/zabbix tar zxf zabbix_agents_2.0.6.linux2_6_23.amd64.tar.gz -C $zabbix_install_dir else #download zabbix agent by system version i686 wget http://www.zabbix.com/downloads/2.0.6/zabbix_agents_2.0.6.linux2_6_23.i386.tar.gz #unpack zabbix agent to /usr/loca/zabbix tar zxf zabbix_agents_2.0.6.linux2_6_23.i386.tar.gz -C $zabbix_install_dir fi else if [ $system_version == 'x86_64' ];then #download zabbix agent wget http://www.zabbix.com/downloads/2.0.3/zabbix_agents_2.0.3.linux2_6.amd64.tar.gz wget http://www.zabbix.com/downloads/2.0.6/zabbix_agents_2.0.6.linux2_6_23.amd64.tar.gz #unpack zabbix agent to /usr/loca/zabbix tar zxf zabbix_agents_2.0.6.linux2_6_23.amd64.tar.gz -C /tmp/ tar zxf zabbix_agents_2.0.3.linux2_6.amd64.tar.gz -C $zabbix_install_dir else #download zabbix agent by system version x86_64 wget http://www.zabbix.com/downloads/2.0.3/zabbix_agents_2.0.3.linux2_6.i386.tar.gz wget http://www.zabbix.com/downloads/2.0.6/zabbix_agents_2.0.6.linux2_6_23.i386.tar.gz #unpack zabbix agent to /usr/loca/zabbix tar zxf zabbix_agents_2.0.6.linux2_6_23.i386.tar.gz -C /tmp/ tar zxf zabbix_agents_2.0.3.linux2_6.i386.tar.gz -C $zabbix_install_dir fi mv /tmp/conf $zabbix_install_dir fi #mondiy zabbix agent conf cd $zabbix_install_dir/conf sed -i 's#Hostname=Zabbix server#Hostname='$zabbix_agent_hostname'#' zabbix_agentd.conf sed -i 's@# SourceIP=@SourceIP='$zabbix_agent_ip'@' zabbix_agentd.conf sed -i 's#Server=.*#Server='$zabbix_server_ip'#' zabbix_agentd.conf sed -i 's#ServerActive=.*#ServerActive='$zabbix_server_ip':'$zabbix_server_port'#' zabbix_agentd.conf #Disable requiretty sed -i 's/^Defaults.*.requiretty/#Defaults requiretty/' /etc/sudoers #add check_lvm.sh content cat >>$zabbix_install_dir/bin/check_lvm.sh <<EOF #!/bin/bash SIZE_1=102400 SIZE_2=1024 # Total lvm available total=\`/sbin/pvdisplay|grep 'PV Size'|gawk '{print \$3}'|head -n 1\` # Total lvm used used=\`/sbin/vgdisplay|grep 'Alloc PE / Size'|gawk '{print \$7}'|head -n 1\` # Calc total minus used free=\`/sbin/vgdisplay|grep 'Free PE / Size'|gawk '{print \$7}'|head -n 1\` free_2=\`/sbin/vgdisplay|grep 'Free PE / Size'|gawk '{print \$7,\$8}'|head -n 1\` free_3=\$(echo "\$free*\$SIZE_2*\$SIZE_2"|bc) FREESIZE_1=\$(echo "\$free*\$SIZE_1"|bc) FREESIZE_2=\$(echo "\$total*\$SIZE_2"|bc) percent=\$(echo "\$FREESIZE_1 / \$FREESIZE_2"|bc) case \$1 in lvm_total) echo \$total ;; lvm_used) echo \$used ;; lvm_free) echo \$free_3 ;; lvm_percent) echo \$percent ;; *) echo "Usage:\`basename \$0\` {lvm_total|lvm_used|lvm_free|lvm_percent}" ;; esac EOF #add UserParameter cat >>$zabbix_install_dir/conf/zabbix_agentd.conf<<EOF UserParameter=memcached_stats[*],(echo stats; sleep 0.1) | telnet 127.0.0.1 \$1 2>&1 | awk '/STAT \$2 / {print \$NF}' UserParameter=mysql[*],mysql -h 127.0.0.1 -P 3306 -uzabbix -pzabbix -e "show global status"|grep "\<\$1\>"|cut -f2 UserParameter=redis_stats[*],redis-cli -h $zabbix_agent_ip -p \$1 info|grep \$2|cut -d : -f2 UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep \$1 | head -1 | awk '{print \$\$4}' UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep \$1 | head -1 | awk '{print \$\$7}' UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep \$1 | head -1 | awk '{print \$\$8}' UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep \$1 | head -1 | awk '{print \$\$11}' UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep \$1 | head -1 | awk '{print \$\$12}' UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep \$1 | head -1 | awk '{print \$\$13}' UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep \$1 | head -1 | awk '{print \$\$6}' UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep \$1 | head -1 | awk '{print \$\$10}' UserParameter=MongoDB.Status[*],/bin/echo "db.serverStatus().\$1" | /usr/bin/mongo admin | grep "\$2"|awk -F: '{print \$\$2}'|awk -F, '{print \$\$1}' UserParameter=check_service_number[*],ps aux|grep "\$1"|grep -v grep|wc -l UserParameter=check_lvm[*],/usr/bin/sudo $zabbix_install_dir/bin/check_lvm.sh \$1 EOF #check check_lvm.sh in the /etc/sudoer cmd=$(grep check_lvm /etc/sudoers|wc -l) if [ $cmd -eq 0 ];then echo "zabbix ALL=NOPASSWD:$zabbix_install_dir/bin/check_lvm.sh" >>/etc/sudoers fi #grant 755 to check_lvm.sh chmod 755 $zabbix_install_dir/bin/check_lvm.sh #mondiy zabbix install dir user chown -R $zabbix_user:$zabbix_user $zabbix_install_dir #start zabbix agent server $zabbix_install_dir/sbin/zabbix_agentd -c $zabbix_install_dir/conf/zabbix_agentd.conf #insert boot start to start zabbix agent server check_rc=$(grep -c "$zabbix_install_dir/sbin/zabbix_agentd -c $zabbix_install_dir/conf/zabbix_agentd.conf" /etc/rc.local) if [ $check_rc -eq 0 ];then echo "$zabbix_install_dir/sbin/zabbix_agentd -c $zabbix_install_dir/conf/zabbix_agentd.conf">>/etc/rc.local fi #delete rubbish rm -rf $local_dir/zabbix_agents_2.0.3.linux2_6.amd64.tar.gz rm -rf $local_dir/zabbix_agents_2.0.6.linux2_6_23.amd64.tar.gz rm -rf /tmp/bin rm -rf /tmp/sbin rm -rf $local_dir/$(basename $0) #check zabbix agent status if [ $(ps -ef|grep zabbix_agentd|grep -v grep|wc -l) -gt 0 ];then echo -e "\033[1;32mZabbix agent is start!\033[0m" exit 0 else echo -e "\033[1;31mZabbix agent is stop!please check!\033[0m" exit 1 fi } case $1 in install_server_agent) server_agent base ;; install_proxy_agent) proxy_agent base ;; *) echo "Usage:`basename $0` {install_server_agent|install_proxy_agent}" ;; esac
其中10.10.10.8为server端口的内网ip,111.111.111.149为server端的ip,这个是server-client直连模式
10.10.10.15为使用proxy模式的proxy内网ip,222.222.222.82为proxy模式proxy的外网ip
注意:如果在redhat或centos系统,请使用shinstall_zabbix_agent.sh module,如果是debian或者ubuntu的话,请使用bash install_zabbix_agent.sh module。
比如你想安装agent直接连接server模式,如果是在centos系统,可以使用shinstall_zabbix_agent.sh install_server_agent,如果在ubuntu里安装可以使用bashinstall_zabbix_agent.sh install_server_agent
同时注意,如果你公司有内网dns并且能在所有zabbix的agent与server里使用的话,那么Hostname填写主机名+域名,如果没有dns,那么就使用ip。
介绍:
本脚本除了能自动化的安装zabbixagent还能实现以下功能:
1、检测当前执行脚本的用户是否为root,如果不为root就退出并提示(此安装脚本需要进行添加监控用户、修改安装目录权限等);
2、现在不需要选择网卡名称,可以自动检测出客户端的ip;
3、可以针对客户端的ip来选择zabbix服务端的ip是走内网监控的还是走外网的ip监控;
4、此脚本均能在centos、redhat、ubuntu系统上运行;
5、此脚本能自动识别本机的glibc版本,如果低于或等于2.5版本,则自动安装zabbixagent的2.03版本(此版本的zabbix agent不要求glibc版本),如果高于2.5版本就安装最新的2.04版本(此版本要求你的glibc大于2.5,如果小于的话就报glibc错误,一般centos6以上都是2.12,而ubuntu server 12.04都是2.15版本)
6、根据不同的系统,在安装zabbix用户的时候,选择不同是nologin方式;
7、增加智能判断/etc/rc.local是否有开机启动zabbix服务;
8、增加智能删除下载的安装包文件;
9、增加代理安装agent,可以选择安装server-agent模式与proxy-agent模式。
10、增加了外网连接检测,如果无法上网则停止运行脚本。
11、增加检测wget软件是否安装,没有安装会按照不同的系统使用不同的方式安装;
12、增加所有监控模板里所有服务监控的用户自定义的UserParameter到zabbix_agentd.conf里;
13、增加监控lvm参数;
14、增加选择32位系统与64位系统来下载不同的软件安装包。
下面介绍客户端为windows的脚本
@echo off Set zabbix_server_ip=10.10.13.8 Set zabbix_server_port=10051 for /f "tokens=2 delims=:" %%b in ('ipconfig^|find /i "ip"^|find /i "ipv4"^|find /i "10"') do set fsip=%%b Set fsip=%fsip: =% echo Creating zabbix dir mkdir c:\zabbix mkdir c:\zabbix\conf mkdir c:\zabbix\bin mkdir c:\zabbix\log echo Copying config copy /y zabbix\conf\zabbix_agentd.win.conf C:\zabbix\conf\ echo Modiy config echo LogFile=c:\zabbix\log\zabbix_agentd.log >> C:\zabbix\conf\zabbix_agentd.win.conf echo SourceIP=%fsip% >> C:\zabbix\conf\zabbix_agentd.win.conf echo Server=%zabbix_server_ip% >> C:\zabbix\conf\zabbix_agentd.win.conf echo ServerActive=%zabbix_server_ip%:%zabbix_server_port% >> C:\zabbix\conf\zabbix_agentd.win.conf echo Hostname=%COMPUTERNAME% >> C:\zabbix\conf\zabbix_agentd.win.conf echo Copy start file if exist %windir%\SysWOW64 (set system_bit=64) else set system_bit=32 if %system_bit% EQU 32 copy /y zabbix\bin\win32 C:\zabbix\bin\ if %system_bit% EQU 64 copy /y zabbix\bin\win64 C:\zabbix\bin\ echo install zabbix service C:\zabbix\bin\zabbix_agentd.exe -i -c C:\zabbix\conf\zabbix_agentd.win.conf echo start zabbix service net start "Zabbix Agent" echo set zabbix service auto sc config "Zabbix Agent" start= auto echo open firewall for zabbix netsh firewall set allowedprogram C:\zabbix\bin\zabbix_agentd.exe zabbix ENABLE
使用dos命令+bat脚本,其中10.10.13.8为server端的内网ip,采用server-client直连模式
安装的话,直接双击脚本就可以(请注意,想使用windows安装的话,使用附件里的zabbix_agent_install.rar,然后解压后双击脚本就可以安装)。
目前已经在windows 2008与2012系统上都成功运行
目前客户端为linux与windows的自动安装脚本都给大家,但请使用的时候,根据自己的需求修改下。