一、zabbix安装linux服务端
zabbix下载:
wget https://www.ttlsa.com/wp-content/uploads/2016/01/zabbix-3.0.0alpha6.tar.gz
wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.3/zabbix-2.2.3.tar.gz
zabbix修改字体:
http://www.tuicool.com/articles/JRVVniM
(一)安装nginx-1.6.3
1、安装nginx依赖包
mkdir -p /application
mkdir -p /home/oldboy/tools
yum install -y pcre pcre-devel gcc-c++ openssl openssl-devel
2、下载安装并启动nginx
yum -y remove httpd httpd-tools
useradd nginx -s /sbin/nologin -M
cd /home/oldboy/tools/
wget http://nginx.org/download/nginx-1.6.3.tar.gz
tar zxvf nginx-1.6.3.tar.gz
cd nginx-1.6.3
./configure --user=nginx --group=nginx --prefix=/application/nginx-1.6.3/ --with-http_stub_status_module --with-http_ssl_module
make && make install
ln -s /application/nginx-1.6.3 /application/nginx
/application/nginx/sbin/nginx -t
/application/nginx/sbin/nginx
netstat -npult |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4432/nginx
(二) mysql安装在其它服务器上
#线上真实服务器mysql配置文件参考
[root@jxq-c2-16-2 ~]# cat /etc/my.cnf
[mysqld]
datadir=/Data/mysql
#socket=/var/lib/mysql/mysql.sock
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
max_allowed_packet=300M
wait_timeout=2800000
interactive_timeout=2800000
max-connect-errors=100000
max-connections=5000
#这个参数主要作用是缓存innodb表的索引,数据,插入数据时的缓冲,内存的50%-80%
innodb_buffer_pool_size = 15000M
#innodb_additional_mem_pool_size = 16M
#innodb_log_buffer_size = 64M
#innodb_log_file_size = 256M
#Server接受的数据包大小,有时候大的插入和更新会受参数限制导致大数据写入或者更新失败
max_allowed_packet = 64M
#指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度
key_buffer_size = 5000M
table_open_cache = 256
sort_buffer_size = 1024K
net_buffer_length = 32K
read_buffer_size = 512K
read_rnd_buffer_size = 1024K
myisam_sort_buffer_size = 16M
slow_query_log=1
thread_cache_size=32
long_query_time=2
local-infile=0
log-bin=mysql-bin
binlog_format=mixed
server-id = 10
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
skip-character-set-client-handshake = 1
skip-name-resolve
#开启binlog日志
#log-bin=mysql-bin
#只保留7天bin-log日志
expire_logs_days = 7
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
(三) 安装PHP-5.5.26
1、安装php依赖包
yum -y install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
cd /home/oldboy/tools/
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv && make && make install
cd ../
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install libmcrypt-devel mhash mcrypt
2、安装php
wget http://mirrors.sohu.com/php/php-5.5.32.tar.gz
tar zxvf php-5.5.32.tar.gz
cd php-5.5.32
./configure \
--prefix=/application/php5.5.32 \
--with-mysql=mysqlnd \
--with-mysqli \
--with-gettext \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--enable-short-tags \
--enable-static \
--with-xsl \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-opcache=no \
--enable-ftp
make && make install
cp php.ini-production /application/php5.5.32/lib/php.ini
ln -s /application/php5.5.32/ /application/php
3、启动php
cd /application/php/etc/
cp php-fpm.conf.default php-fpm.conf
/application/php/sbin/php-fpm
netstat -npult |grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 8020/php-fpm
4、为 Nginx 添加虚拟主机并整合php
cd /application/nginx/conf/
mv nginx.conf nginx.conf.bak
egrep -v "#|^$" nginx.conf.bak > nginx.conf
sed -i '10i\ include extra/*.conf;' nginx.conf
mkdir extra
cd extra/
cat zabbix.conf
server {
listen 80;
server_name zabbix.etiantian.org;
location / {
root html/zabbix;
index index.php index.html index.htm;
}
location ~ .*\.(php|php5)?$ {
root html/zabbix;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
../../sbin/nginx -t
6、建立php测试页
<?php
phpinfo();
?>
7、建立mysql测试页
<?php
$link_id=mysql_connect('mysql-server-ip','user','password') or mysql_error();
if($link_id){
echo "mysql is ok!";
}
else{
echo mysql_error();
}
?>
8、重启nginx并访问php测试页
/application/nginx/sbin/nginx -s reload
http://zabbix.etiantian.org/phpinfo.php
http://zabbix.etiantian.org/mysql.php
至此LNMP搭建完成
(四)安装zabbix-3.0.0
1、安装zabbix依赖包
yum install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel libjpeg.x86_64 libpng.x86_64 freetype.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 freetype-devel.x86_64 net-snmp-devel mysql-devel –y
2、下载并解压zabbix
wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.3/zabbix-2.2.3.tar.gz
cd /home/oldboy/tools/
wget https://www.ttlsa.com/wp-content/uploads/2016/01/zabbix-3.0.0alpha6.tar.gz
tar zxvf zabbix-3.0.0alpha6.tar.gz
3、导入数据库
cd zabbix-3.0.0alpha6/database/mysql/
mysql> create database zabbix character set utf8;
mysql> grant all on zabbix.* to zabbix@'172.16.1.%' identified by 'zabbix';
mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
mysql> flush privileges;
[root@Oldboy ~]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@Oldboy ~]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@Oldboy ~]# mysql -uzabbix -pzabbix zabbix < data.sql
4、安装zabbix服务端
cd /home/oldboy/tools/zabbix-3.0.0alpha6
./configure --prefix= /application/zabbix3.0/ --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 && make && make install
5、修改zabbix配置文件
cd /application/zabbix3.0/etc/
cp -a zabbix_server.conf zabbix_server.conf.bak
vi zabbix_server.conf
DBHost=172.16.1.51 (mysql地址)
DBName=zabbix (数据库名称)
DBUser=zabbix (连接数据库用户名)
DBPassword=zabbix123 (数据库连接密码)
ListenIP=0.0.0.0 (监听地址)
Timeout=30 (server端获取agentd信息的等待时间)
LogFile=/application/zabbix3.0/log/zabbix_server.log
#下面一段表示可以使用root启动zabbix,禁用root启动,那么会用zabbix账户启动,需要提起创建zabbix
### Option: AllowRoot
# Allow the server to run as 'root'. If disabled and the server is started by 'root', the server
# will try to switch to user 'zabbix' instead. Has no effect if started under a regular user.
# 0 - do not allow #0表示禁用
# 1 - allow #1表示启动
#
# Mandatory: no
# Default:
# AllowRoot=0
6、启动zabbix-server
useradd zabbix -s /sbin/nologin -M
mkdir /application/zabbix3.0/log/zabbix_server.log
cd /application/
chown -R zabbix.zabbix zabbix3.0/
/application/zabbix3.0/sbin/zabbix_server
netstat -nputl |grep zabbix
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 12258/zabbix_server
7、修改php.ini
#php.ini文件的存放路径可以通过编写php.html去查看如果里面没有,就找到php.ini并放进去
cd /application/php/lib/
vi php.ini
date.timezone = Asia/Shanghai
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
:wq
killall php-fpm
/application/php/sbin/php-fpm
8、拷贝zabbix站点目录
cd /home/oldboy/tools/zabbix-3.0.0alpha6/frontends/
cp -a php/* /application/nginx/html/zabbix/
chown -R nginx.nginx /application/nginx/html/zabbix/
9、开启zabbix中文支持
#开启中文支持
cd /application/nginx/html/zabbix/include
vi locales.inc.php
'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => true], (false改为true)
#安装中文语言包并拷贝到zabbix的网站更目录下
yum -y --nogpgcheck install wqy-microhei-fonts
cd /application/nginx/html/zabbix/fonts/
mv DejaVuSans.ttf /tmp/
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc ./DejaVuSans.ttf
/application/nginx/sbin/nginx -t
/application/nginx/sbin/nginx -s reload
10、访问zabbix页面
安装完zabbix后,已经自带了两个用户Admin和Guests
超级管理员默认账号:Admin,密码:zabbix,这是一个超级管理员。
Guests用户,使用guest账号,密码为空,只能看到zabbix后台,没有具体内容。
二、zabbix安装linux客户端并配置web界面并配置邮件报警
1、zabbix_agent端下载zabbix安装包(客户端和服务端都使用同一个安装包)
yum安装zabbix https://www.cnblogs.com/jonnyan/p/9045870.html
cd /home/oldboy/tools/
wget https://www.ttlsa.com/wp-content/uploads/2016/01/zabbix-3.0.0alpha6.tar.gz(可以做2.0的客户端)
tar zxvf zabbix-3.0.0alpha6.tar.gz
cd zabbix-3.0.0alpha6
./configure --prefix=/usr/local/zabbix --enable-agent #这里只安装zabbix_agentd端
make && make install
1.1、centos7 yum 安装zabbix-agentd 3.4
rpm -Uvh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
rpm -Uvh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.5-1.el7.x86_64.rpm
rpm -qa |grep zabbix
systemctl start zabbix-agent
systemctl enable zabbix-agent
sed -i "s/Server=127.0.0.1/Server=118.26.137.68/" /etc/zabbix/zabbix_agentd.conf (默认被动模式)
sed -i "s/ServerActive=127.0.0.1/ServerActive=116.255.166.1/" /etc/zabbix/zabbix_agentd.conf (主动模式)
sed -i "s/Hostname=Zabbix server/Hostname=saas3-etcd2-shanghai/" /etc/zabbix/zabbix_agentd.conf (修改主机名)
2、zabbix_agnet端修改zabbix_agentd.conf(这里以被动模式为例)
(注意:主动模式和被动模式只在客户端修改与server端无关,当然server端的agentd最好使用被动模式)
cd /usr/local/zabbix/
cp -a zabbix_agentd.conf zabbix_agentd.conf.bak
vi zabbix_agentd.conf
Server=172.16.1.7 (被动模式等待服务端的连接,启动10050端口,也是默认模式)
#ServerActive=172.16.1.7 (主动模式向服务端提交数据,不启动端口)
Hostname=Oldboy (无论是主动还是被动模式,Hostname与server端图形界面添加的主机名必须一致)
#StartAgents=5 表示zabbix_agentd的子进程数,0表示开启主动模式 非0表示被动模式
Timeout=30 agentd在本地采集数据的等待超时时间
3、zabbix_agent端启动zabbix
useradd zabbix -s /sbin/nologin -M
chown -R zabbix.zabbix /usr/local/zabbix/
/usr/local/zabbix/sbin/zabbix_agentd
或者/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/
application]# netstat -npult |grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 10123/zabbix_agentd
4、zabbx_server端连接测试
/application/zabbix3.0/bin/zabbix_get -s 172.16.1.51 -p 10050 -k "system.cpu.load[all,avg1]"
0.080000
5、zabbix_server端添加被监控主机
6、zabbix_agent端自定义监控项(统计进程数的时候不要用netstat,需要使用ps)
自定义监控语法:
UserParameter=key, command
UserParameter:为关键字, 命令行或脚本 (zabbix_server端通过UserParameter获取key和command)
key: 表示用户自定义的一个名字,可以随便起,比如check_nginx_status
command:是我们要运行的命令或者脚本。
(1) 客户端添加监控项,命令加全路经(重启zabbix_agentd生效):
vi /application/zabbix.3.0.0/etc/zabbix_agentd.conf
UserParameter=login-user,/usr/bin/who|wc -l
#UserParameter=login-user,/home/shell/nginx.sh #这个地方也可以调用脚本
(2) 重启zabbix_agentd
killall zabbix_agentd
/application/zabbix.3.0.0/sbin/zabbix_agentd
(3) 服务端测试连接客户端自定义的监控项:
/application/zabbix3.0/bin/zabbix_get -s 172.16.1.51 -p 10050 -k login-user
2 # 返回2说明能获取客户端的数据
-s:被监控端ip
-p:被监控端zabbix-agent 端口
-k:被监控端定义的 key 值
7、zabbix_server-web端添加自定义监控项
8、zabbix_server端配置邮件报警(mail)
(1) zabbix_agent端配置邮件
postconf -e myhostname=mail.zabbix.example.cn
postconf -e myorigin=zabbix.example.cn
postconf -e mydomain=zabbix.example.cn
postconf -e mydestination=localhost
postconf -e mynetworks=127.0.0.0/8
配置完成会添加参数到/etc/postfix/main.cf下末行
(2) 修改本机hosts并启动postfix
[root@backup ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 mail.zabbix.example.cn zabbix.example.cn
[root@backup ~]# service postfix restart
(3) 测试邮件发送
echo 1234|mail -s 'test' xxxxxx@163.com
(4) web端配置邮件报警
1.先定义一个报警类型:邮件、脚本(短信)、其他
管理[Configuration]——示警媒介类型[Media types]——Email(添加发件人)
2.创建一个接受报警的用户组,并定义这个组里面的人接受哪种类型的报警
管理——用户——Admin——示警媒介——添加收件人
3.往用户组里添加用户(可以写多个以逗号隔开),并指定该组用户接受的报警类型为刚才定义的邮件报警
4.创建报警规则,当项目的触发器(Triggers)满足报警条件后,给哪个组的用户发送报警
组态——动作——定义报警内容
名称:邮件报警/短信报警 都行,随便写
默认接收人:这里其实是定义报警主题,可以不需要,只要写成{TRIGGER.NAME}就表示不需要主题
默认信息:就是发送的报警内容,这里使用zaibbx的自定义宏
Trigger: {TRIGGER.NAME}
Trigger status: {TRIGGER.STATUS}
Trigger severity: {TRIGGER.SEVERITY}
Trigger URL: {TRIGGER.URL}
Item values:
1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
Original event ID: {EVENT.ID}
恢复主旨:这里是恢复主题
恢复信息:这里是报警恢复的信息
Trigger: {TRIGGER.NAME}
Trigger status: {TRIGGER.STATUS}
Trigger severity: {TRIGGER.SEVERITY}
Trigger URL: {TRIGGER.URL}
Item values:
1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
2. {ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}): {ITEM.VALUE2}
3. {ITEM.NAME3} ({HOST.NAME3}:{ITEM.KEY3}): {ITEM.VALUE3}
Original event ID: {EVENT.ID}
5.指定报警时间间隔,报警次数
操作——新的