1.安装LNMP环境

1.1 搭建Nginx

Nginx官网,下载软件建议到官网下载
http://nginx.org/

LNMP之Nginx服务器编译安装

yum install -y wget gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
cd /data/
yum install lrzsz -y
wget 'http://nginx.org/download/nginx-1.14.2.tar.gz'
tar -zxvf nginx-1.14.2.tar.gz
cd nginx-1.14.2
./configure --prefix=/data/nginx
make && make install

手动启动和关闭Nginx

环境变量:
cat >> /etc/profile << EOF
export PATH=$PATH:/opt/nginx/sbin/
EOF

source /etc/profle
检查Nginx配置: nginx -t
启动Nginx:nginx
关闭Nginx:nginx -s stop

验证Nginx安装是否成功

 查看进程
 查看监控端口
 nginx日志
 浏览器访问

使用systemctl管理Nginx,/usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/data/nginx/sbin/nginx
[Install]
WantedBy=multi-user.target

1.2 搭建PHP

Php官网
http://php.net/

php编译安装脚本

yum -y install epel-release
yum -y install  gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel openldap openldap-devel libmcrypt libmcrypt-devel

cd /usr/local/src/
wget 'http://hk1.php.net/distributions/php-5.6.40.tar.gz'
tar -zxf php-5.6.40.tar.gz
cd php-5.6.40
./configure --prefix=/data/php --with-config-file-path=/data/php/etc --enable-ctype --with-mysql=mysqlnd --with-mysqli=mysqlnd --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-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-fpm
make && make install
cp php.ini-production /data/php/etc/php.ini

php编译安装说明

--prefix指定php的安装目录
--with-config-file-path指定php的配置文件位置
--with-mysql、--with-mysqli让php可以操作mysql
--enable-fpm主要是nginx要来调用php语言得使用php-fpm

启动php-fpm

环境变量:
cat >> /etc/profile << EOF
export PATH=$PATH:/data/php/sbin/:/data/php/bin/
EOF
source /etc/profile
检查配置文件:php-fpm -t
使用默认配置文件:mv /data/php/etc/php-fpm.conf.default /data/php/etc/php-fpm.conf
查看php-fpm的listen配置  listen = 127.0.0.1:9000
修改时区:vim /data/php/etc/php.ini
date.timezone = "Asia/Shanghai"

启动:
php-fpm

验证php-fpm的启动

进程	
ps auxf|grep php-fpm
端口	
netstat -lntpu|grep php-fpm
日志	
tail -f /data/php/var/log/php-fpm.log

使用systemctl管理php-fpm,
cat > /usr/lib/systemd/system/php-fpm.service <<EOF

[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/data/php/sbin/php-fpm
[Install]
WantedBy=multi-user.target
EOF

nginx的默认配置无法处理php程序/data/nginx/html/test.php

<?php echo "taobao zabbix"; ?>

nginx+php-fpm结合的配置

location / {
            root   html;
            index  index.html index.htm index.php;
        }
location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

1.3 搭建Mysql

官网:https://www.mysql.com/

Mysql编译安装脚本

yum install -y gcc gcc-c++ make tar openssl openssl-devel cmake ncurses ncurses-devel
useradd -s /sbin/nologin mysql
cd /usr/local/src
wget 'https://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.39.tar.gz'
tar -zxvf mysql-5.6.39.tar.gz
cd mysql-5.6.39
cmake -DCMAKE_INSTALL_PREFIX=/data/mysql -DMYSQL_DATADIR=/data/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0 -DWITH_SSL=yes -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1
make && make install
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld

编译选项说明

1. CMACK_INSTALL_PREFIX指定安装的目录
2. MYSQL_DATADIR指定Mysql的数据目录

mysql环境变量配置最末尾添加

cat >> /etc/profile << EOF
MYSQL_HOME=/data/mysql
PATH=$MYSQL_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
EOF
source /etc/profile

mysql的启动步骤

1. 更新配置
2. 数据库初始化
3. 启动数据库

更新mysql配置/etc/my.cnf

[mysqld]
bind-address=0.0.0.0
port=3306
datadir=/data/mysql/data
user=mysql
skip-name-resolve
long_query_time=2
slow_query_log_file=/data/mysql/mysql-slow.log
expire_logs_days=2
innodb-file-per-table=1
innodb_flush_log_at_trx_commit = 2
log_warnings = 1
max_allowed_packet      = 512M
connect_timeout = 60
net_read_timeout = 120
default-time_zone = '+8:00'
 
[mysqld_safe]
log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid

mysql数据库初始化

mkdir -pv /data/mysql/data/
chown -R mysql:mysql  /data/mysql
chmod -R 755 /data/mysql
yum install -y perl-Module-Install
/data/mysql/scripts/mysql_install_db --basedir=/data/mysql --user=mysql  --datadir=/data/mysql/data/

使用systemctl管理mysqld,/usr/lib/systemd/system/mysqld.service

[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/mysqld start
[Install]
WantedBy=multi-user.target

启动mysql服务器

systemctl start mysqld
或者
mysqld_safe &

验证Mysql是否启动

查看进程	ps auxf|grep mysqld
查看监听	netstat -lntpu|grep mysqld
查看日志	

mysql的安全方式

mysql能限制ip访问、访问需要用户名密码、mysql权限还能再细分
默认让127.0.0.1访问,用户名root,不需要密码
mysql -uroot -h 127.0.0.1 -A

mysql加密码

mysqladmin -h 127.0.0.1 -u root password 'zabbixpwd'
mysql -h 127.0.0.1 -uroot -pzabbixpwd -A

mysql授权某ip登录

GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.255.62.%' IDENTIFIED BY 'zabbixpwd' WITH GRANT OPTION;
flush privileges;

网络登录mysql

mysql -h 192.168.237.49 -uroot -pzabbixpwd -A

1.4 ZABBIX4.0 服务端的编译安装

zabbix的部署原理

1.      zabbix server需要把监控数据入sql数据库,所以得Mysql环境
2.      zabbix的web是基于php开发的,所以得LNMP环境
3.      部署zabbix server和zabbix web

zabbix的官网
https://www.zabbix.com/

Zabbix Server编译安装

yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel 
useradd -s /sbin/nologin zabbix
cd /usr/local/src/
##wget 'https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz'
wget https://cdn.zabbix.com/zabbix/sources/stable/4.0/zabbix-4.0.23.tar.gz
tar -zxvf zabbix-4.0.3.tar.gz
cd zabbix-4.0.3
./configure --prefix=/data/zabbix --enable-server --enable-agent --with-mysql=/data/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2
make  && make install

选项说明

4.      --prefix指定安装目录
5.      --enable-server安装zabbix server
6.      --enable-agent安装zabbix agent
7.      --with-mysql用mysql来存储

zabbix server的安装验证

环境变量设置:
cat >> /etc/profile << EOF
export PATH=$PATH:/data/zabbix/sbin/:/data/zabbix/bin/
EOF
source /etc/profile
查看版本:
zabbix_server --version

zabbix server的启动

8.      需要到mysql里做数据库初始化
9.      配置zabbix server,最主要是配置连接mysql的用户名和密码
10.     启动zabbix server

Mysql数据库初始化(sql在二进制包内)
mysql -h 127.0.0.1 -uroot -pzabbixpwd -A

create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbixpwd';
flush privileges;
set names utf8;
use zabbix;
source /opt/zabbix-4.0.23/database/mysql/schema.sql;
source /opt/zabbix-4.0.23/database/mysql/data.sql;
source /opt/zabbix-4.0.23/database/mysql/images.sql;

zabbix server的配置
echo “” > /data/zabbix/etc/zabbix_server.conf
cat >> /data/zabbix/etc/zabbix_server.conf << EOF

LogFile=/data/zabbix/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpwd
DBPort=3306
ListenPort=10051
Timeout=30
AlertScriptsPath=/data/zabbix/alertscripts
ExternalScripts=/data/zabbix/externalscripts
LogSlowQueries=3000
EOF

启动zabbix server

useradd zabbix
chown zabbix:zabbix -R /data/zabbix/

ll /data/mysql/lib/|grep libmysqlclient.so.18
echo "/data/mysql/lib" >>/etc/ld.so.conf

zabbix_server

验证

11.   进程	
ps auxf|grep zabbix
12.   端口	
netstat -lntpu|grep zabbix
13.   日志	
tail -f /data/zabbix/zabbix_server.log

Zabbix Web的安装

mkdir /data/nginx/html/zabbix
cp -a /opt/zabbix-4.0.23/frontends/php/* /data/nginx/html/zabbix/
chmod 755 -R /data/nginx/html/zabbix/

访问zabbix web,需要做一些初始化配置
http://192.168.237.49/zabbix/

zabbix web需要php做配置优化 vim /data/php/etc/php.ini

post_max_size = 32M
max_execution_time = 350
max_input_time = 350
date.timezone = Asia/Shanghai
always_populate_raw_post_data = -1
systemctl restart php-fpm

登录zabbix

20.   默认用户名和密码:Admin  zabbix
21.   禁用Zabbix server主机的监控
22.   禁用guest用户
23.   更改Admin的密码,改成自己的密码(XVzb#v4!vy4H$iY!)

最后一步下载zabbix.conf.php到/usr/local/nginx/html/zabbix/conf/

zabbix网页默认使用英文

1.      如果英文熟悉的话建议直接用英文
2.      把Admin用户改成中文的

zabbix默认的字段问题

3.      中文会有部分乱码的情况
4.      监测 -> 图形里的监控图形会有乱码的产生

解决zabbix部分乱码

  1.  zabbix字体的放置目录:
    
cd /data/nginx/html/zabbix/assets/fonts
  1.  下载微软雅黑字体
    
wget https://raw.githubusercontent.com/chenqing/ng-mini/master/font/msyh.ttf
  1.  上传微软雅黑字体
    
  2.  zabbix网页的字体配置修改
    
sed   -i    's/DejaVuSans/simkai/g'   /data/nginx/html/zabbix/include/defines.inc.php
  1.  默认是DejaVuSans字体,改成msyh微软雅黑字体
    
  2. 验证中文是否正常
    

Zabbix Agent编译安装 【Centos7】

[TOC]

1安装

yum install -y gcc gcc-c++ make pcre-devel pcre* libevent-devel

useradd -s /sbin/nologin zabbix
cd /opt
wget https://cdn.zabbix.com/zabbix/sources/stable/4.0/zabbix-4.0.23.tar.gz
tar -xf zabbix-4.0.23.tar.gz
cd zabbix-4.0.23
./configure --prefix=/usr/local/zabbix --enable-agent
make && make install
chown zabbix:zabbix -R /usr/local/zabbix/
cp -a /etc/profile /etc/profile_bakcp
echo 'export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/'>> /etc/profile
source /etc/profile

2 zabbix agent 主动模式配置(可选)

echo "" > /usr/local/zabbix/etc/zabbix_agentd.conf
cat > /usr/local/zabbix/etc/zabbix_agentd.conf << EOF
PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/zabbix_agentd.log
Hostname=本机公网ip
Server=服务端IP
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
EOF

3 zabbix agent 被动模式配置(可选)

echo "" > /usr/local/zabbix/etc/zabbix_agentd.conf
cat > /usr/local/zabbix/etc/zabbix_agentd.conf << EOF
PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/zabbix_agentd.log
Hostname=本机内网ip
#被动模式,zabbix server的ip
Server=ip
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
EOF

4 zabbix agent启动

/usr/local/zabbix/sbin/zabbix_agentd

5 验证zabbix agent有没有成功启动

11.   进程	ps auxf|grep zabbix_agentd
12.   端口	netstat -lntpu|grep zabbix_agentd
13.   日志	tail -f /usr/local/zabbix/zabbix_agentd.log

6 zabbix agentd重启

pkill zabbix_agentd
zabbix_agentd

Ubuntu16.04 安装客户端:

apt-get方式:

sudo apt-get install zabbix-agent

编辑配置文件

sudo nano /etc/zabbix/zabbix_agentd.conf
ctrl+O然后回车保存

启动

sudo /etc/init.d/zabbix-agent restart
或
sudo service zabbix-agent restart

=================================================================

源码安装:

sudo apt-get update 
sudo apt-get install libpcre3 libpcre3-dev 
你可能还需要安装
sudo apt-get install openssl libssl-dev
useradd -s /sbin/nologin zabbix
cd /usr/local/src/
wget 'https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz'
tar -zxvf zabbix-4.0.3.tar.gz
cd zabbix-4.0.3
./configure --prefix=/usr/local/zabbix --enable-agent
make && make install
chown zabbix:zabbix -R /usr/local/zabbix/

配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf

PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/zabbix_agentd.log
Hostname=ganggu-prod-qianbao
Server=3.113.215.41
ServerActive=3.113.215.41
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf

启动

/usr/local/zabbix/sbin/zabbix_agentd

zabbix添加钉钉告警

[TOC]

1 钉钉机器人创建

登录钉钉客户端,创建一个群,把需要收到报警信息的人员都拉到这个群内.然后点击群右上角的"群机器人"->“添加机器人”->“自定义”,记录该机器人的webhook值!

2 查找脚本目录

find / -name alertscripts

3 添加钉钉脚本(自行替换webhook=钉钉链接)

cat > /data/zabbix/share/zabbix/alertscripts/dingding.py << EOF
#!/usr/bin/env python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="钉钉链接"
user=sys.argv[1]
text=sys.argv[3]
data={
    "msgtype": "text",
    "text": {
        "content": text
    },
    "at": {
        "atMobiles": [
            user
        ],
        "isAtAll": False
    }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/local/zabbix/logs/dingding.log"):
    f=open("/data/zabbix/dingding.log","a+")
else:
    f=open("/data/zabbix/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
    f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
    f.close()
else:
    f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "发送失败" + "\n" + str(text))
    f.close()
EOF

4创建日志文件

touch /data/zabbix/dingding.log
chown zabbix.zabbix /data/zabbix/share/zabbix/alertscripts/dingding.py
chmod 755 /data/zabbix/share/zabbix/alertscripts/dingding.py
chown zabbix.zabbix /data/zabbix/dingding.log

5手动测试脚本发信是否正常:

这个条文档记录的测试信息,忽略

 /data/zabbix/share/zabbix/alertscripts/dingding.py test 手机号 "这个条测试信息,忽略"

6 注意:该脚本要求至少python2.6.6版本,且具有requests模块.否则会报错:

Traceback (most recent call last):
  File "./dingding.py", line 4, in <module>
    import requests,json,sys,os,datetime
ImportError: No module named requests

7 解决办法:

yum install python-pip
pip -v
pip install requests

重新执行

 /data/zabbix/share/zabbix/alertscripts/dingding.py test 手机号 "这个条测试信息,忽略"

8 zabbix-web页面配置报警媒介类型:配置—> 报警媒介类型,脚本参数如下:

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

9 配置动作 配置—>动作—>创建动作,把微信告警或者邮件告警的“操作”和恢复操作内容拷贝过来即可。

10 最后配置用户配置—>用户—> 报警媒介,把钉钉加进来即可。

zabbix-proxy代理模式

yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel
useradd -s /sbin/nologin zabbix
yum -y install mariadb mariadb-server mariadb-devel

1 安装mariadb数据库

#yum安装
yum -y install mariadb mariadb-server mariadb-devel

#启动服务
systemctl start mariadb

#设置为开机启动
systemctl enbale mariadb

#设置mariadb root密码
mysqladmin -uroot password zabbix

#创建zabbix_proxy数据库(中文编码格式)
MariaDB [(none)]> create database zabbix_proxy character set utf8;

#创建用户并授予zabbix_proxy数据库的所有权限
MariaDB [(none)]> grant all on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';

#刷新权限
MariaDB [(none)]> flush privileges;

#导入数据
use zabbix_proxy;
source /opt/zabbix-4.0.23/database/mysql/schema.sql;

https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm

2 安装proxy (自己安装mysql 需要指定 --with-mysql=mysql_config)

cd /opt/software/
wget https://cdn.zabbix.com/zabbix/sources/stable/4.0/zabbix-4.0.23.tar.gz
tar -zxvf zabbix-4.0.23.tar.gz
cd zabbix-4.0.23
./configure  --prefix=/opt/zabbix-proxy --enable-agent --enable-proxy --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
make  && make install

3 修改proxy配置文件

echo “” > /opt/zabbix-proxy/etc/zabbix_proxy.conf

cat > /opt/zabbix-proxy/etc/zabbix_proxy.conf <<-'EOF'
LogFile=/opt/zabbix-proxy/zabbix_proxy.log    ###日志
ProxyMode=0  #设置zabbix-proxy模式 0为主动式,1为被动式
Server=xxx.xxx.xxx.xxx  #zabbix server的IP
ServerPort=10051                   #zabbix server端口 
Hostname=我写的本身公网IP               #本机hostname
DBHost=localhost                   #数据库主机名
DBName=zabbix_proxy                #数据库名称
DBUser=zabbix                      #数据库用户名
DBPassword=zabbix                  #数据库登陆密码
ProxyLocalBuffer=3
ProxyOfflineBuffer=24
HeartbeatFrequency=60    #心跳间隔检测时间,默认为60秒,范围为0-3600秒,被动模式不使用
ConfigFrequency=5    #间隔多久从zabbix server获取监控信息
DataSenderFrequency=5  #数据发送时间间隔,默认为1秒,被动模式不使用
StartPollers=10    #启动的线程数据,建议与客户端的数量保持一致
Timeout=30
LogSlowQueries=3000
EOF

4 配置环境变量

cat >> /etc/profile << EOF
export PATH=$PATH:/opt/zabbix-proxy/sbin/:/opt/zabbix-proxy/bin/
EOF
source /etc/profile
启动:
zabbix_proxy -c /opt/zabbix-proxy/etc/zabbix_proxy.conf
关闭:
pkill zabbix_proxy

5 zabbix—server端配置proxy代理

6 添加代理主机

添加异地局域网内要监控的主机和模板,和平常添加主机不一样的是,在图里面“由agent代理程序监测” 选择zabbix_proxy