搭建zabbix监控系统
zabbix安装过程
(图片太多不好粘贴,本文省略,主要是以后自己查起来方便,偷个懒呢)
mysql
PHP
nginx
zabbix-server
zabbix-agent
安装zabbix之前需要准备基本环境,需要安装mysql、nginx、php,详细安装见一下链接
mysql安装:https://www.cnblogs.com/Christine-ting/p/10697708.html
nginx安装:https://www.cnblogs.com/Christine-ting/p/10697726.html
PHP安装:https://www.cnblogs.com/Christine-ting/p/11328071.html
安装mysql:
https://www.cnblogs.com/Christine-ting/p/10697708.html
创建zabbix数据库,和用户,并执行导入zabbix数据文件
1、进入数据库,创建用户
create database zabbix character set utf8;
GRANT all privileges ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix..321com';
flush privileges;
2、导入数据文件
use zabbix;
source /opt/zabbix-4.2.5/database/mysql/schema.sql;
source /opt/zabbix-4.2.5/database/mysql/images.sql;
source /opt/zabbix-4.2.5/database/mysql/data.sql;
安装PHP:
https://www.cnblogs.com/Christine-ting/p/11328071.html
修改监听方式为端口监听
安装nginx:
https://www.cnblogs.com/Christine-ting/p/10697726.html
1、安装
2、创建zabbix的访问根目录,并将zabbix的PHP文件拷贝到此目录
mkdir /data/zabbix/zabbix -p
cp /opt/zabbix-4.2.5/frontends/php/* /data/zabbix/zabbix/ -rp
3、配置关于zabbix的nginx配置文件
zabbix.conf
server
{
listen 80;
index index.html index.htm index.php;
root /data/zabbix;
location ~ ^(.+.php)(.*)$ {
fastcgi_split_path_info ^(.+.php)(.*)$;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass /tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location /nginx_status
{
stub_status on;access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
access_log /opt/logs/zabbixaccess.log;
}
3、
安装zabbix:
1、下载安装包,上传到opt目录下,下载地址:https://www.zabbix.com/download_sources
2、解压安装包:cd /opt && tar -zcvf zabbix-4.2.5.tar.gz
3、创建用户:
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System"zabbix
4、为zabbix创建家目录
mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix
5、安装依赖包:yum install mysql-devel net-snmp-devel curl curl-devel libevent-devel
6、执行编译,编译完成后会在/usr/lib/zabbix/下生成文件目录
cd zabbix-4.2.5 && ./configure --prefix=/usr/lib/zabbix/ --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
make install
7、为zabbix相关命令创建软连接
ln -s /usr/lib/zabbix/sbin/zabbix_server /usr/bin/#zabbixserver启动命令
ln -s /usr/lib/zabbix/sbin/zabbix_agentd /usr/bin/#zabbixagent启动命令
ln -s /usr/lib/zabbix/bin/zabbix_get /usr/bin/ #获取agent状态的命令
8、编辑zabbix_server.conf文件,修改一下字段
vim /usr/lib/zabbix/etc/zabbix_server.conf
ListenPort=10051#server监听的端口
LogFile=/tmp/zabbix_server.log
DBHost=localhost#数据库的IP
DBName=zabbix#数据库名字
DBUser=zabbix#数据库用户名
DBPassword=zabbix..321com#数据库用户密码
DBSocket=/tmp/mysql.sock#数据库的sock文件位置
DBPort=3306#数据库端口
ListenIP=0.0.0.0server监听的IP范围
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts#server执行脚本的位置,如微信报警脚本等
LogSlowQueries=3000
9、修改zabbix_agentd.conf文件,修改以下字段
LogFile=/tmp/zabbix_agentd.log
Server=127.0.0.1#zabbix-server的IP地址
ServerActive=127.0.0.1#zabbix-server的IP:端口,在本机上不用加端口
Hostname=10.128.0.48#agent本机IP
10、启动zabbix-server和zabbix-agent进程
在浏览器中打开zabbix
1、打开浏览器http://ip/zabbix,如下图,点击下一步
2、检查前期要求,后面都是OK状态,如果存在不满足的选项,需要想办法解决掉
3、配置mysql连接,需要填写数据库地址、端口、库名、用户名、密码等
4、填写zabbix-server的地址、端口和server名字,填写完成之后会自动创建zabbix-server的相关配置文件并写库
5、初始化zabbix完成后,会提示登录,如下图,如果直接登录,是以guest的身份登录,我们要点击Go to dashboard,之后会出现登录界面,默认用户是Admin,密码是zabbix
6、登录完成后会进入到主页面,如下图,我们首先要设置zabbix的语言环境、修改管理员的默认密码、禁止guest用户登录,点击右上角的人形按钮
7、点击Admin设置语言环境和修改密码,修改,也可以新建管理用户
8、修改密码或者新建用户之后,退出重新登录,如下图
9、安装被监控主机agent
为被监控主机安装zabbix-agent,最好与zabbix版本一致
在被监控主机执行以下脚本
function Check (){
Agentd=/usr/local/zabbix/sbin/zabbix_agentd
if test -e $Agentd && "$Agentd" -V2 | grep 4.2 > /dev/null
then
echo "Zabbix_agentd 4.2 has been already installed. Exit" && exit
else
test -f zabbix_agentd_install.sh && rm -f zabbix_agentd_install.sh
test -f /usr/local/zabbix/sbin/zabbix_agentd && rm -rf /usr/local/zabbix/sbin/zabbix_agentd
test -f /etc/init.d/zabbix_agentd && rm -f /etc/init.d/zabbix_agentd
fi
}
#配置相关
function Config(){
Server=$1
IP="`ifconfig | grep -o 'inet [0-9.]*' | grep -o '[0-9.]*$' | grep -e '^192\.' -e '^10\.' -e '^172\.'`" #内网IP获取
#IP="`curl ip.6655.com/ip.aspx`" #公网IP获取
mkdir -p /usr/local/zabbix/sbin/
mkdir -p /usr/local/zabbix/etc/
mkdir -p /var/log/zabbix/ && touch /var/log/zabbix/zabbix_agentd.log
chown zabbix:zabbix /var/log/zabbix/zabbix_agentd.log && chmod 755 /var/log/zabbix/zabbix_agentd.log
cd /usr/local/zabbix/sbin/
cat > /usr/local/zabbix/etc/zabbix_agentd.conf <<EOF
Server=${Server}
Hostname=${IP}
ServerActive=${Server}:10051
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=10
BufferSize=1024
EOF
}
function Install(){
yum install -y gcc pcre*
wget http://35.198.217.74:8088/09/mc/drum/zabbix-4.2.3.tar.gz
tar zxvf zabbix-4.2.3.tar.gz && cd zabbix-4.2.3
./configure --prefix=/usr/local/zabbix --enable-agent && make && make install
echo 'zabbix-agent 10050/tcp # Zabbix Agent'>>/etc/services
echo 'zabbix-agent 10050/udp # Zabbix Agent'>>/etc/services
cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#g" /etc/init.d/zabbix_agentd
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on
chmod +x /etc/init.d/zabbix_agentd
chmod +x /usr/local/zabbix/sbin/zabbix_agentd
groupadd zabbix
useradd -g zabbix zabbix -s /bin/false
Config $1
service zabbix_agentd start && chkconfig zabbix_agentd on
rm -rf ~/zabbix-4.2.0 && rm -rf ~/zabbix-4.2.0.tar.gz
echo ---------------------Result---------------------------------
netstat -ntlp | grep zabbix_agentd && echo -e "\033[33minstall Succeed.\033[0m" || echo -e "\033[31minstall Failed.\033[0m"
}
if [ -z $1 ]
then
Server="10.148.0.99" ###zabbix-server的IP地址,一定要记得改,不改的话在执行脚本的时候,需要带上zabbix-server的IP
else
Server=$1
fi
#main
Check
Install $Server
如果需要批量安装zabbix-agent,可以执行以下脚本
ips="10.148.0.11 ##agent的IP
10.148.0.12
10.148.0.13
10.148.0.14
10.148.0.15
"
for i in $ips
do
echo $i
scp addagent.sh $i:/home/apple && echo $i scp successed! ##将安装agent的脚本拷贝到主机
ssh $i "sudo sh /home/apple/addagent.sh" ##远程执行脚本
#ssh $i "ps -ef | grep zabbix | grep -v grep" ##安装完成后可以检查是否安装成功
echo
done
10、添加被监控主机agent
在监控页面点击“配置”、“主机”、“创建主机”,如图
为主机设置组和模版
主机名称是agent的IP地址
可见的名称填写容易记忆的别名,选择群组,便于管理,可以在现有的群组中选择,也可以新建群组。根据不同需求添加不同监控模版,一般选择Templat OS Linux
agent代理程序IP地址填写agent的IP
设置之后点击添加
11、自定义监控模版
主要针对监控特定的程序,当程序异常可以发出报警
创建模版,填上模版名称,群组可以根据自己需要选择,也可以在创建模版之前自己创建群组。
点击监控项,再自定义监控项
编辑监控键值,我这里是定义监控端口,当检测到端口不通会发出报警,之后更新保存,之后在主机监控中就可以选择这个模版对服务器进行监控
12、添加微信报警
在管理中选择报警媒介类型,选择创建媒体类型
自定义微信报警,制定脚本名称,这个脚本应该存放在zabbix-server上指定的路径,该路径在zabbix-server文件中有配置:AlertScriptsPath=/usr/lib/zabbix/alertscripts,该微信脚本weixin.sh内容如下(之前需要申请企业微信账号):
#SCRIPT_NAME: weixin.sh
#DESCRIPTION: send message from weixin for zabbix monitor
#!/bin/bash
CropID='wwe1f9cb0XXXXXXd4df' # 我的企业的CorpID
Secret='NR2h-W3tZd2TOHXXXXXZ-QSjz2RzVk9_jTC0ikpeg4' # 创建应用时的Secret
#获取access_token
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
function body () {
local int AppId=1000002 #应用的id
local UserId=$1 #发送的用户位于$1字符串
local PartyId=1 # 通讯录中部门的ID
local Meg=$(echo "$@" | cut -d" " -f3-)
echo """{
\"touser\" : \"$UserId\",
\"toparty\" : \"$PartyId\",
\"msgtype\" : \"text\",
\"agentid\" : \"$AppId\",
\"text\" : {
\"content\" : \"$Meg\"}
}"""
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
配置好微信报警脚本后还需要设置“动作”,才会将微信报警关联起来。
新建动作
设置操作
标题:{TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容:
\n报警主机: {HOST.NAME}\n
主机IP: {HOST.IP}\n
状态:{TRIGGER.STATUS}\n
报警时间: {EVENT.DATE} {EVENT.TIME}\n
报警等级: {TRIGGER.SEVERITY}\n
报警信息: {TRIGGER.NAME}\n
问题详情: {ITEM.NAME}:{ITEM.VALUE}\n
事件ID: {EVENT.ID}\n
设置恢复操作
标题:Resolved: {TRIGGER.NAME}
消息内容:
\n主机:{HOST.NAME}\n
地址:{HOST.IP}\n
状态:{TRIGGER.STATUS}\n
时间:{EVENT.DATE} {EVENT.RECOVERY.TIME}\n
级别: {TRIGGER.SEVERITY}\n
内容: {TRIGGER.NAME}:{ITEM.VALUE}\n
事件ID: {EVENT.ID}\n
操作(“动作”和“恢复操作”都需要设置):选择发送用户群组、用户、发送方式,添加更新保存