zabbix部署
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
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部分乱码
-
zabbix字体的放置目录:
cd /data/nginx/html/zabbix/assets/fonts
-
下载微软雅黑字体
wget https://raw.githubusercontent.com/chenqing/ng-mini/master/font/msyh.ttf
-
上传微软雅黑字体
-
zabbix网页的字体配置修改
sed -i 's/DejaVuSans/simkai/g' /data/nginx/html/zabbix/include/defines.inc.php
-
默认是DejaVuSans字体,改成msyh微软雅黑字体
-
验证中文是否正常
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
- 感谢你赐予我前进的力量