搭建zabbix监控系统

zabbix安装过程

(图片太多不好粘贴,本文省略,主要是以后自己查起来方便,偷个懒呢)

mysql

PHP

nginx

zabbix-server

zabbix-agent

安装zabbix之前需要准备基本环境,需要安装mysqlnginxphp,详细安装见一下链接

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的访问根目录,并将zabbixPHP文件拷贝到此目录

mkdir /data/zabbix/zabbix -p

cp /opt/zabbix-4.2.5/frontends/php/* /data/zabbix/zabbix/ -rp

3、配置关于zabbixnginx配置文件

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-serverIP地址

ServerActive=127.0.0.1#zabbix-serverIP:端口,在本机上不用加端口

Hostname=10.128.0.48#agent本机IP

10、启动zabbix-serverzabbix-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 "33[33minstall Succeed.33[0m" || echo -e "33[31minstall Failed.33[0m"

}

if [ -z $1 ]

then

    Server="10.148.0.99"  ###zabbix-serverIP地址,一定要记得改,不改的话在执行脚本的时候,需要带上zabbix-serverIP

else

    Server=$1

fi

#main

Check

Install $Server

如果需要批量安装zabbix-agent,可以执行以下脚本

ips="10.148.0.11   ##agentIP

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

在监控页面点击配置主机创建主机,如图

为主机设置组和模版

主机名称是agentIP地址

可见的名称填写容易记忆的别名,选择群组,便于管理,可以在现有的群组中选择,也可以新建群组。根据不同需求添加不同监控模版,一般选择Templat OS Linux

agent代理程序IP地址填写agentIP

设置之后点击添加

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}

消息内容:

报警主机: {HOST.NAME}

主机IP: {HOST.IP}

状态:{TRIGGER.STATUS}

报警时间: {EVENT.DATE} {EVENT.TIME}

报警等级: {TRIGGER.SEVERITY}

报警信息: {TRIGGER.NAME}

问题详情: {ITEM.NAME}:{ITEM.VALUE}

事件ID: {EVENT.ID}

设置恢复操作

标题:Resolved: {TRIGGER.NAME}

消息内容:

主机:{HOST.NAME}

地址:{HOST.IP}

状态:{TRIGGER.STATUS}

时间:{EVENT.DATE} {EVENT.RECOVERY.TIME}

级别: {TRIGGER.SEVERITY}

内容: {TRIGGER.NAME}:{ITEM.VALUE}

事件ID: {EVENT.ID}

操作(动作恢复操作都需要设置):选择发送用户群组、用户、发送方式,添加更新保存

原文地址:https://www.cnblogs.com/Christine-ting/p/11646912.html