精华内容
下载资源
问答
  • Zabbix监控

    2014-07-01 23:13:51
    由于本人工作职责的一部分,需要用Zabbix监控,所以在此贴一下Zabbix监控。 实在

    由于本人工作职责的一部分,需要用Zabbix监控,所以在此贴一下Zabbix监控。

    实在觉得Zabbix监控做的太牛掰,先打Tag,周末再来补全

    展开全文
  • zabbix监控

    2019-12-16 10:31:26
    监控服务概述 1、实时查看服务状态 ...1)zabbix实现监控 2)nagios(监控报警功能较强大)+cacti(网络流量报警) 3)小米监控 如何搭建监控平台 ###通过多个维度进行描述 1、网络模型OSI七层模型分析 2、网...

    监控服务概述

    1、实时查看服务状态
    2、可以发送报警信息(邮件报警、短信报警、电话报警、微信报警、值班(大屏幕)报警)
    3、可以进行数据分析(潜在风险、对业务部门给出数据建议)

    实现监控的方式:

    1)zabbix实现监控
    2)nagios(监控报警功能较强大)+cacti(网络流量报警)
    3)小米监控
    image.png

    如何搭建监控平台

    ###通过多个维度进行描述

    1、网络模型OSI七层模型分析
    2、网站安全、性能、业务等角度进行分析

    ####监控维度说明:

    1)硬件监控:需要规划好硬件设备(服务器、路由器、交换机、防火墙)
    2)系统监控:CPU、内存、磁盘、网络、进程、TCP连接状态
    3)服务监控:nginx、php、tomcat、redis、memcache、mysql
    4)网站监控:请求时间、响应时间、加载时间(定一个规范化时间用来衡量网站是否合格)
    5)日志监控:及早发现日志运行异常 ELK(收集、存储、分析、展示)日志易
    6)安全监控:Firewalld WAF(Nginx+Lua)安全宝、牛顿云、安全狗
    7)网络监控:smokeping 监控宝、站长工具、奇云测、多机房
    8)业务监控:活动时产生的流量、带来的价值

    系统基础监控命令

    B{3UTDY895(M.png

    zabbix监控服务部署

    ###zabbix服务端部署

    ####第一个里程: 下载安装zabbix yum 源文件

    LTS long time support

    1. aliyun zabbix yum 源
    2. 清华源
    rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
    
    rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm -- 老版本
    

    第二个里程: 下载安装zabbix服务端相关软件

    LAMP架构中 httpd + PHP + mariadb
    zabbix服务程序软件: zabbix-server-mysql
    zabbix服务web软件: zabbix-web-mysql httpd php
    数据库服务软件: mariadb-server
    yum install -y zabbix-server-mysql zabbix-web-mysql httpd php mariadb-server

    第三个里程: 软件配置

    vim /etc/zabbix/zabbix_server.conf
    
    126 DBPassword=zabbix
    
    vim /etc/httpd/conf.d/zabbix.conf
    
    21 php_value date.timezone Asia/Shanghai
    

    第四个里程: 编写配置数据库服务

    systemctl start mariadb.service
    
    systemctl status mariadb.service
    
    创建zabbix数据库--zabbix
    
    create database zabbix character set utf8 collate utf8_bin;
    
    创建数据库管理用户
    
    grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
    
    在zabbix数据库中导入相应的表信息
    
    zcat /usr/share/doc/zabbix-server-mysql-4.0.0/create.sql.gz|mysql -uzabbix -pzabbix zabbix
    

    第五个里程: 启动zabbix程序相关服务

    数据库服务 zabbix服务 httpd服务

    systemctl start zabbix-server.service httpd mariadb.service
    
    systemctl enable zabbix-server.service httpd mariadb.service
    

    说明: 至此zabbix-server命令行操作结束

    第六个里程: 登录zabbix服务端web界面, 进行初始化配置

    http://10.0.0.71/zabbix/setup.php
    
    10051 zabbix-server 服务端端口号
    
    10050 zabbix-agent 客户端端口号
    
    /etc/zabbix/web/zabbix.conf.php -- 记录web页面初始化信息
    

    第七个里程: 登录zabbix服务web页面

    用户名Admin 密码zabbix
    
    zabbix客户端部署
    

    实现zabbix监控主机方法:

    clipboard.png
    image.png

    image.png

    image.png

    ####异常问题总结:无法实现zabbix监控

    1)服务端没有指定配置好监控的主机
    2)客户端没有安装好软件或者启动好服务
    如果客户端已经安装过旧版监控软件,使用新版软件时需要卸载(否则新版无法安装)
    客户端配置文件需要编写正确

    ####监控原理图:
    image.png

    ###如何设置自定义监控项

    需求: 监控内存使用率情况,低于20%就报警

    第一个历程: 利用命令获取监控信息

    free -m|awk 'NR==2{print int($7/$2*100)}'
    

    第二个历程: 编写zabbix-agent程序配置文件

    UserParameter --- 定义监控的命令信息
    
    [root@web01 yum.repos.d]# cd /etc/zabbix/zabbix_agentd.d/
    
    [root@web01 zabbix_agentd.d]# vim mem.conf
    
    UserParameter=mem.use,free -m|awk 'NR==2{print int($7/$2*100)}'
    

    第三个历程: 调取监控的数据信息

    利用命令进行调取监控信息
    
    yum install -y zabbix-get --- 安装收集信息的命令(zabbix-server端进行安装)
    
    zabbix_get -s 172.16.1.7 -k mem.use
    

    利用监控服务调取监控信息

    1. 创建监控项
      [配置]–选择要监控的主机–[监控项]–创建监控项
      [监测]–[最新数据]–查看监控的数据信息

    第四个历程: 进行监控报警

    [配置]–选择要监控的主机–[触发器]–创建触发器

    image.png
    image.png
    image.png
    image.png
    image.png

    实现邮件告警

    需求:当系统超过5个用户登录,发送邮件告警

    image.png

    需求: 当系统超过5个用户登陆,发送邮件告警

    第一个历程: 利用命令获取监控信息

    w|awk 'NR==1{print $6}'
    

    第二个历程: 编写zabbix-agent程序配置文件

    UserParameter --- 定义监控的命令信息
    
    [root@web01 yum.repos.d]# cd /etc/zabbix/zabbix_agentd.d/
    
    [root@web01 zabbix_agentd.d]# vim login.conf
    
    UserParameter=login.user,w|awk 'NR==1{print $6}'
    
    systemctl restart zabbix-agent.service
    

    第三个历程: 调取监控的数据信息

    利用命令进行调取监控信息
    
    yum install -y zabbix-get --- 安装收集信息的命令(zabbix-server端进行安装)
    
    zabbix_get -s 172.16.1.7 -k login.user
    
    利用监控服务调取监控信息
    
    1) 创建监控项
    
    [配置]--选择要监控的主机--[监控项]--创建监控项
    
    [监测]--[最新数据]--查看监控的数据信息
    

    第四个历程: 进行监控报警

    [配置]--选择要监控的主机--[触发器]--创建触发器
    

    第五个历程: 发送邮件告警

    [配置]--[动作]--将动作条目信息开启
    
    定义发件人信息
    
    [管理]--[报警媒介类型]--[创建新的报警媒介]
    
    定义接收人信息
    
    [小人头]--[报警媒介]
    

    添加微信报警

    编写微信报警脚本

    [root@zabbix-server /usr/lib/zabbix/alertscripts]# vim weixin.py 
    token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
    req=requests.get(token_url)
    accesstoken=req.json()['access_token']
    
    #发送消息
    msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
    
    touser=sys.argv[1]
    subject=sys.argv[2]
    #toparty='3|4|5|6'
    message=sys.argv[2] + "\n\n" +sys.argv[3]
    
    params={
            "touser": touser,
    #       "toparty": toparty,
            "msgtype": "text",
            "agentid": agentid,
            "text": {
                    "content": message
            },
            "safe":0
    }
    
    req=requests.post(msgsend_url, data=json.dumps(params))
    
    logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
    
    

    这里调用的是企业微信的的接口,需要申请企业微信才可以用.脚本下载地址链接:https://pan.baidu.com/s/1X8WqJ7BUsnwWT2A-UOYYOA
    提取码:a5o7

    将脚本放到 /usr/lib/zabbix/alertscripts 目录下

    可以在/etc/zabbix/zabbix-server.conf文件下找到脚本的路径,用到的命令是

    [root@zabbix-server /usr/lib/zabbix/alertscripts]# egrep -v '^$|#' /etc/zabbix/zabbix_server.conf |grep scripts
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    
    

    添加执行权限

    [root@zabbix-server /usr/lib/zabbix/alertscripts]# chmod +x weixin.py 
    [root@zabbix-server /usr/lib/zabbix/alertscripts]# ll
    total 4
    -rwxr-xr-x 1 root root 1344 Jul  9 10:55 weixin.py
    
    

    尝试发送微信消息

    [root@m01 ~]# python weixin.py 
    Traceback (most recent call last):
      File "weixin.py", line 7, in <module>
        import requests
    ImportError: No module named requests
    
    

    我这里是找了一台新的机器测试发送的,不用在意路径。尝试运行脚本却提示缺少requests库

    安装缺少的库

    [root@m01 ~]# yum install -y python2-pip
    [root@m01 ~]# pip install   requests
    
    

    再次尝试发送

    [root@m01 ~]# python weixin.py  GeBangfeng  '微信报警' '第一次检查测试微信发送'
    
    

    image

    zabbix-web上面添加发送者

    image.png

    image

    {ALERT.SENDTO}, {ALERT.SUBJECT} and {ALERT.MESSAGE}, 这是三个变量分别代表,收件人标题,主机名。不能乱循序

    添加微信报警接收者

    image.png

    image

    触发报警,就可以收到了

    image

    监控一台服务器主机

    10.0.0.7 zabbix-agent

    a:安装zabbix-agent
    rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.24-1.el7.x86_64.rpm
    b:配置zabbix-agent
    vim /etc/zabbix/zabbix_agentd.conf
    95行:Server=10.0.0.71
    c:启动zabbix-agent
    systemctl start zabbix-agent.service 
    systemctl enable zabbix-agent.service
    d:再zabbix-web上面添加监控主机
    

    添加自定义监控项

    查看已经存在的监控项

    image.png

    image.png

    image.png

    这里就是zabbix自带的一些监控项,图中圈起来的就是一些键值(key).键值就是zabbix用于监控的类式余脚本的东西。我们可以尝试取下键的值。

    安装zabbix-get

    yum install -y zabbix-get
    
    

    image

    尝试取值

    [root@zabbix-server /etc/zabbix/zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -p 10050 -k system.hostname
    zabbix-server
    
    

    安装之后命令是zabbix_get ,参数-s 为要取值的ip -p 为端口 -k为要取的值
    这些值都是zabbix-agent来取的。

    取出用户连接数

    [root@m01 ~]# who
    root     pts/0        2019-07-09 22:09 (10.0.0.1)
    root     pts/6        2019-07-09 14:44 (10.0.0.1)
    [root@m01 ~]# who|wc -l
    2
    
    

    设置自定义key

    格式为:UserParameter=, 。因为zabbix-agend 是用来取值的,所以把自定义key放到它的配置文件里

    [root@m01 ~]# grep '^User' /etc/zabbix/zabbix_agentd.conf
    UserParameter=tps,iostat|awk '/^sda/{print $2}'
    UserParameter=ssh_user,who|wc -l
    [root@ m01/etc/zabbix]# systemctl restart zabbix-agent.service 
    
    

    修改了配置文件记得重启

    zabbix-get测试取值。

    [root@zabbix-server ~]# zabbix_get -s 10.0.0.61 -k ssh_user
    2
    
    

    命令行测试没问题,去web界面添加自定义监控

    添加自定义监控

    zabbix自带的监控项满足不了我们需求

    image.png

    image

    image.png

    添加自定义触发器

    image.png

    image.png

    image

    image

    image.png

    image

    触发监控

    多开几个窗口

    image

    [root@m01 ~]# who
    root     pts/0        2019-07-09 22:09 (10.0.0.1)
    root     pts/1        2019-07-09 22:33 (10.0.0.1)
    root     pts/2        2019-07-09 22:34 (10.0.0.1)
    root     pts/6        2019-07-09 14:44 (10.0.0.1)
    [root@m01 ~]# who|wc -l
    4
    
    

    image.png

    自定义触发器的时候选择的大于4个就报警。

    zabbix自定义图形

    zabbix图形文字的乱码问题

    image.png

    这是因为我们web界面现在设置的是中文,而zabbix用的默认是英文的字符集,所以中文乱码了。

    找到zabbix的站点目录

    [root@zabbix-server ~]# vim /etc/httpd/conf.d/zabbix.conf 
    Alias /zabbix Alias /zabbix /usr/share/zabbix
    [root@zabbix-server ~]# cd /usr/share/zabbix
    [root@zabbix-server /usr/share/zabbix]# cd assets/fonts/
    [root@zabbix-server /usr/share/zabbix/assets/fonts]# ls
    graphfont.ttf
    
    

    找到字体后替换他即可,在windows C:\Windows\Fonts 目录下有大量的字体。

    image

    自定义图像(利用grafana软件)

    查看已经存在的图形

    image.png

    image.png

    自定义图像

    image.png

    image.png

    image.png

    zabbix上面的图形比较难看,一般使用grafana 出图 grafana官网,因为是国外的网站下载比较慢,所以我们也可以去清华源下载,清华源

    安装granfana

    [root@zabbix-server ~]# ls
    anaconda-ks.cfg  grafana-5.4.2-1.x86_64.rpm
    [root@zabbix-server ~]# rpm -ivh grafana-5.4.2-1.x86_64.rpm 
    warning: grafana-5.4.2-1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 24098cb6: NOKEY
    error: Failed dependencies:
        fontconfig is needed by grafana-5.4.2-1.x86_64
        urw-fonts is needed by grafana-5.4.2-1.x86_64
    [root@zabbix-server ~]# yum localinstall grafana-5.4.2-1.x86_64.rpm
    
    

    很多时候我们直接装rpm包装不上,这是因为他依赖太多包导致的,我们可以使用yum解决依赖

    启动granfana

    [root@zabbix-server ~]# systemctl start grafana-server
    [root@zabbix-server ~]# systemctl enable grafana-server
    Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.
    [root@zabbix-server ~]# netstat -lntup|grep 3000
    tcp6       0      0 :::3000                 :::*                    LISTEN      9735/grafana-server 
    
    

    这样就可以去浏览器访问了。默认3000端口

    image.png

    image.png

    安装zabbix插件

    image.png

    granfana默认不支持zabbix ,所以我们需要安装插件。官方参考文档

    grafana-cli plugins list-remote  #列出所有插件
    [root@zabbix-server ~]# grafana-cli plugins list-remote|grep zabbix
    id: alexanderzobnin-zabbix-app version: 3.10.2
    [root@zabbix-server ~]# grafana-cli plugins install alexanderzobnin-zabbix-app #安装zabbix 插件
    [root@zabbix-server ~]# service grafana-server restart
    Restarting grafana-server (via systemctl):                 [  OK  ]
    
    

    image.png

    简单配置

    image.png

    image.png

    image.png

    image.png

    image.png

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-92c2b4lZ-1576224396251)(https://upload-images.jianshu.io/upload_images/16953283-f89c425322573c44.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

    image.png

    image.png

    image.png

    zabbix web监测

    什么是cookie 和session

    cookie:指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据 存放在客户端
    session: 是服务器记录用户登录信息的,用户登录网址后会生成一个 session id ,存放在服务器内,使整个用户会话中一直存在下去

    curl 命令模拟登录网站

    安装apache 方便查看登录模拟过程

    [root@web01 ~]# yum install -y httpd
    [root@web01 ~]# systemctl start httpd
    
    

    访问网站,生成sessid

    [root@web01 ~]# cd /var/www/html/
    [root@web01 /var/www/html]# curl -b cookil -c cookil http://10.0.0.71/zabbix/ >index.html
    [root@web01 /var/www/html]# cat cookil   ##可以看到有了一个sessid
    # Netscape HTTP Cookie File
    # http://curl.haxx.se/docs/http-cookies.html
    # This file was generated by libcurl! Edit at your own risk.
    
    #HttpOnly_10.0.0.71 FALSE   /zabbix/    FALSE   0   PHPSESSID   sqivdr4jpfn6c2bohre1ipfs33
    
    

    image.png

    浏览器真实登录一次查看post请求发送的数据,

    image.png

    故意把密码输错。可以看到登陆的时候就是发送的请求数据为:name=Admin&password=zabbi&autologin=1&enter=Sign+in
    修改密码为正常的,命令行去模拟登录

    curl 模拟数据请求

    [root@web01 /var/www/html]# curl -L -b cookil -c cookil -d 'name=Admin&password=zabbix&autologinin' 'http://10.0.0.71/zabbix/' >loging.html
    
    

    image.png

    验证登录

    正常情况下我们登录一个网站后的一个页面,没有登录的时候是访问不了的,我们取一个登录后的页面访问下如果可以访问说明登录成功

    [root@web01 /var/www/html]# curl -b cookil -c cookil http://10.0.0.71/zabbix/hosts.php?ddreset=1 >host.html
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 19336    0 19336    0     0  59009      0 --:--:-- --:--:-- --:--:-- 59131
    
    

    image.png

    这样就说明登录成功了

    web 监测

    image.png

    image.png

    image.png

    image.png

    image

    image

    image.png

    image.png

    自定义触发器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JN0UOldQ-1576224396260)(https://upload-images.jianshu.io/upload_images/16953283-b89be5fe48354d6e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

    ZABBIX模板的使用

    模板的好处

    模板利用快速可以添加监控点的项
    模板可以分享

    文章中用到的模板网盘连接
    链接:https
    ://pan.baidu.com/s/1PPjiK1kEbSOiT9WquERVTQ提取码:0yw8

    ZABBIX模板的使用思路

    1)开启监控页面
    2)导入模板
    3)上传配置文件到ZABBIX剂目录下,上传脚本到指定目录
    4)ZABBIX-得到取值测试
    5)链接模板

    根据tcp的11种状态

    命令行测试命令

    [root@web01 /etc/zabbix/zabbix_agentd.d]# netstat -ant|grep -c 'LISTEN'
    7
    
    

    对于循环生成配置文件

    [root@web01 /etc/zabbix/zabbix_agentd.d]# cat a.txt 
    LISTEN
    SYN-SENT
    SYN-RECEIVED
    ESTABLISHED
    FIN-WAIT-1
    FIN-WAIT-2
    CLOSE-WAIT
    CLOSING
    LAST-ACK
    TIME-WAIT
    CLOSED
    [root@web01 /etc/zabbix/zabbix_agentd.d]# for n in `cat a.txt`; do echo "UserParameter=$n,netstat -antp|grep -c '$n'" >>tcp.conf; done
    [root@web01 /etc/zabbix/zabbix_agentd.d]# cat tcp.conf 
    UserParameter=LISTEN,netstat -antp|grep -c 'LISTEN'
    UserParameter=SYN-SENT,netstat -antp|grep -c 'SYN-SENT'
    UserParameter=SYN-RECEIVED,netstat -antp|grep -c 'SYN-RECEIVED'
    UserParameter=ESTABLISHED,netstat -antp|grep -c 'ESTABLISHED'
    UserParameter=FIN-WAIT-1,netstat -antp|grep -c 'FIN-WAIT-1'
    UserParameter=FIN-WAIT-2,netstat -antp|grep -c 'FIN-WAIT-2'
    UserParameter=CLOSE-WAIT,netstat -antp|grep -c 'CLOSE-WAIT'
    UserParameter=CLOSING,netstat -antp|grep -c 'CLOSING'
    UserParameter=LAST-ACK,netstat -antp|grep -c 'LAST-ACK'
    UserParameter=TIME-WAIT,netstat -antp|grep -c 'TIME-WAIT'
    UserParameter=CLOSED,netstat -antp|grep -c 'CLOSED
    
    

    重启ZABBIX

     systemctl restart zabbix-agent.service 
    
    

    zabbix_get取值测试

    [root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k LISTEN
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    7
    
    

    这里的故障是自定义的key中加入了-p参数,-p只有root可以使用

    去掉-p之后测试成功

    [root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k LISTEN
    7
    
    

    zabbix的Web界面创建模板

    nginx的模板

    nginx的模板主要用于监控的nginx的状态

    开启监控页面

    [root@web01 ~]# vim /etc/nginx/conf.d/www.conf
    server {
        listen       80;
        server_name  localhost;
            root   /app/www;
        location / {
            index index.php index.html index.htm;
        }
        location  /nginx_status {
        stub_status;
           allow 127.0.0.1;
           allow 10.0.0.1;
           deny all;
    }       
           location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000; 
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    
    }
    [root@web01 ~]# systemctl restart nginx
    [root@web01 ~]# curl 10.0.0.7/nginx_status
    Active connections: 1 
    server accepts handled requests
     1 1 1 
    Reading: 0 Writing: 1 Waiting: 0 
    
    

    导入模板

    image.png

    image.png

    image

    image.png

    image.png

    上传脚本到特定目录

    [root@web01 ~]# ls
    anaconda-ks.cfg  nginx.zip
    [root@web01 ~]# unzip nginx.zip 
    Archive:  nginx.zip
      inflating: nginx/nginx.conf        
      inflating: nginx/nginx_monitor.sh  
      inflating: nginx/zbx_nginx_template.xml  
    [root@web01 ~]# cd nginx/
    [root@web01 ~/nginx]# ls
    nginx.conf  nginx_monitor.sh  zbx_nginx_template.xml
    [root@web01 ~/nginx]# mkdir -p  /server/scripts/
    [root@web01 ~/nginx]# mv nginx_monitor.sh /server/scripts/
    [root@web01 ~/nginx]# cd /server/scripts/
    [root@web01 /server/scripts]# ls
    nginx_monitor.sh
    [root@web01 /server/scripts]# chmod +x nginx_monitor.sh 
    [root@web01 /server/scripts]# ll
    total 4
    -rwxr-xr-x 1 root root 1231 Jul 10 09:38 nginx_monitor.sh
    
    

    上传nginx key的配置文件到指定目录

    [root@web01 ~/nginx]# mv nginx.conf /etc/zabbix/zabbix_agentd.d/
    [root@web01 ~/nginx]# cd /etc/zabbix/zabbix_agentd.d/
    [root@web01 /etc/zabbix/zabbix_agentd.d]# ls
    a.txt  cookil  nginx.conf  tcp.conf  userparameter_mysql.conf
    [root@web01 /etc/zabbix/zabbix_agentd.d]# cat nginx.conf 
    UserParameter=nginx_status[*],/bin/bash /server/scripts/nginx_monitor.sh $1
    [root@web01 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent.service 
    
    

    zabbix_get测试取值

    [root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k nginx_status[accepts]
    <body>
    
    

    发现执行键取不到值,尝试去直接执行脚本

    [root@web01 /server/scripts]# sh nginx_monitor.sh accepts
    <body>
    
    

    通过查看脚本得知。查看状态的网址不对,修改为正确后测试

    [root@web01 /server/scripts]# sh  nginx_monitor.sh accepts
    10
    
    

    执行脚本可以取到值了,尝试去执行关键

    [root@zabbix-server /server/scripts]# zabbix_get -s 10.0.0.7 -k nginx_status[accepts]
    rm: cannot remove ‘/tmp/nginx_status.txt’: Operation not permitted
    10
    
    

    这时候出现报错,原因是执行zabbix_get取值是以zabbix身份去执行,刚才执行脚本是以root身份执行了,root执行时创建的一个文件zabbix用户删除不掉。自己删除这个文件解决

    [root@web01 /server/scripts]# rm -rf /tmp/nginx_status.txt
    
    

    删除后测试成功

    [root@zabbix-server /server/scripts]# zabbix_get -s 10.0.0.7 -k nginx_status[accepts]
    11
    
    

    连接模板、检查取值状态

    PHP模板

    开启PHP监控页面

    [root@web01 ~]# vim /etc/php-fpm.d/www.conf 
    ;pm.status_path = /status
    修改为
    pm.status_path = /php_status
    [root@web01 ~]# vim /etc/nginx/conf.d/www.conf
    server {
        listen       80;
        server_name  localhost;
            root   /app/www;
        location / {
            index index.php index.html index.htm;
        }
        location  /nginx_status {
        stub_status;
    }
        location /php_status {
             fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
    
    }
    }
    [root@web01 ~]# systemctl restart php-fpm
    [root@web01 ~]# systemctl restart nginx
    [root@web01 ~]# curl 10.0.0.7/php_status
    pool:                 www
    process manager:      dynamic
    start time:           14/Jul/2019:12:45:53 +0800
    start since:          258
    accepted conn:        2
    listen queue:         0
    max listen queue:     0
    listen queue len:     128
    idle processes:       4
    active processes:     1
    total processes:      5
    max active processes: 1
    max children reached: 0
    slow requests:        0
    
    

    上传模板

    image.png

    上传脚本和配置文件

    [root@web01 /server/scripts]# ls
    fpm.sh            nginx_monitor.sh  
    [root@web01 /server/scripts]# chmod +x fpm.sh 
    [root@web01 /server/scripts]# cd /etc/zabbix/zabbix_agentd.d/
    [root@web01 /etc/zabbix/zabbix_agentd.d]# vim fpm.conf 
    UserParameter=php-fpm[*],/server/scripts/fpm.sh "$1" "$2"
    [root@web01 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent.service 
    
    

    zabbix_get取值测试

    [root@zabbix-server /server/scripts]# zabbix_get -s 10.0.0.7 -k php-fpm["total processes",10.0.0.7/php_status]
    5
    
    

    修改模板的宏,模板中的变量

    image.png

    连接模板检查数据

    image.png

    Discuz论坛开启redis加速

    安装Redis的

    [root@web01 /etc/zabbix/zabbix_agentd.d]# yum install -y redis
    [root@web01 /etc/zabbix/zabbix_agentd.d]# systemctl start redis
    [root@web01 /etc/zabbix/zabbix_agentd.d]# systemctl enable redis
    Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
    
    [root@web01 /etc/zabbix/zabbix_agentd.d]# yum list |grep php|grep redis
    php-nrk-Predis.noarch                   1.0.4-1.el7                    epel     
    php-pecl-redis.x86_64                   2.2.8-1.el7                    epel     
    php-phpiredis.x86_64                    1.0.0-2.el7                    epel     
    [root@web01 /etc/zabbix/zabbix_agentd.d]# yum install -y php-pecl-redis
    systemctl restart php-fpm
    
    

    image.png

    开启Redis的加速

    [root@web01 ~]# cd /app/www/
    [root@web01 /app/www]# vim config/config_global.php
    $_config['memory']['redis']['server'] = '127.0.0.1';
    
    

    配置上的Redis的地址

    image.png

    redis模板

    监控页面默认开启的,不用开了

    上传模板

    image.png

    上传配置文件和脚本

    [root@web01 /server/scripts]# ls
    fpm.sh  nginx_monitor.sh  redis.sh
    [root@web01 /server/scripts]# chmod +x redis.sh 
    [root@web01 /server/scripts]# ls
    fpm.sh  nginx_monitor.sh  redis.sh
    [root@web01 /server/scripts]# cd /etc/zabbix/zabbix_agentd.d/
    [root@web01 /etc/zabbix/zabbix_agentd.d]# ls
    a.txt  cookil  fpm.conf  nginx.conf  redis.conf  tcp.conf  userparameter_mysql.conf
    [root@web01 /etc/zabbix/zabbix_agentd.d]# vim redis.conf 
    UserParameter=redis.discovery,/servers/cripts/redis.sh localhost list_key_space_db
    UserParameter=redis[*],/server/scripts/redis.sh $1 $2 $3
    [root@web01 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent.service 
    
    

    测试取值

    [root@zabbix-server /server/scripts]# zabbix_get -s 10.0.0.7 -k redis[127.0.0.1,redis_git_sha1,none]
    00000000
    
    

    检查自定义宏

    image.png

    连接模板,检查最新数据

    image.png

    pv-uv-ip监控手段

    搭建matomo(piwik)–安装完成会提示需要将js代码放置到网站服务器的web相应界面中

    yum install -y php-fpm nginx mariadb-serer
    

    配置文件,放置代码,启动服务
    页面安装,js代码放置到discuz网站–全局–站点信息–网站第三方统计代码
    wordpress网站可以直接下载piwik插件,设置piwik的服务器url,以及wordpress的api填写到TOKEN令牌
    AWstates软件
    第三方统计(腾讯统计)

    zabbix页面监控模拟登录

    cookie 存储在浏览器
    session 存储在服务器
    用户第一次访问网站,会分配一个session_id,并将cookie存储在浏览器,将session存储在服务器;之后用户即可使用session_id重新访问页面;
    登陆成功会在cookie中会新增token(令牌),下次用户登录即可不用输入密码登录

    使用curl模拟用户登录

    systemctl stop nginx
    yum install -y httpd
    systemctl start httpd
    进入apache默认站点目录/var/www/html
    [root@welkin html]# curl --help|grep cookie
     -b, --cookie STRING/FILE  String or file to read cookies from (H)
     -c, --cookie-jar FILE  Write cookies to this file after operation (H)
     -j, --junk-session-cookies Ignore session cookies read from file (H)
    
    
    [root@welkin html]# curl -b cookie -c cookie http://10.0.0.71/zabbix/index.php				--模拟访问(会在当前目录生成cookie文件)
    [root@welkin html]# curl -b cookie -c cookie http://10.0.0.71/zabbix/index.php >index.html		将访问信息输出到html文件      
    浏览器访问10.0.0.72/index.html--显示登录页面
    

    image.png

    由于缺少文件,导致页面缺失信息
    恢复页面布局步骤:
    clipboard.png

    创建目录

    [root@welkin html]# mkdir assets/10am2h0/styles   -p
    将10.0.0.71的文件下载到10.0.72
    [root@welkin html]# wget -O assets/10am2h0/styles/blue-theme.css  http://10.0.0.71/zabbix/assets/10am2h0/styles/blue-theme.css
    

    在10.0.0.71上登录,错误登录以免跳转,取得原始信息
    clipboard.png

    10.0.0.72再次访问(使用正确密码)

    [root@welkin html]# curl -L -X POST -d "name=Admin&password=zabbix&autologin=1&enter=%E7%99%BB%E5%BD%95" [http://10.0.0.71/zabbix/index.php](http://10.0.0.71/zabbix/index.php) >login.html
    
    -L 收取跳转信息
    
    -X 指定请求方法
    
    [root@welkin html]# curl -b cookie -c cookie -L -X POST -d "name=Admin&password=zabbix&autologin=1&enter=Sign+in" http://10.0.0.71/zabbix/index.php > login.html
    

    浏览器访问10.0.0.72/index.html–显示登录页面
    测试其他页面

    [root@welkin html]# curl -b cookie -c cookie -L "http://10.0.0.71/zabbix/report2.php?ddreset=1" > test.html
    

    由此,批量创建监控项,获取到页面数据,批量创建.

    discuz测试登录
    关闭验证码验证–[管理中心]–[防灌水]–[验证设置]

    [root@welkin html]# curl -b cookie -c cookie http://10.0.0.7/forum.php >index.html
    

    错误登录,取得原始数据
    clipboard.png
    添加的为POST地址

    [root@welkin html]# curl -b cookie -c cookie -L  -X POST  -d  "fastloginfield=username&username=admin&password=123456&quickforward=yes&handlekey=ls"  "http://10.0.0.7/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1" > login.html 
    

    zabbix页面监控

    [配置]–[web监控]
    image.png

    clipboard.png
    clipboard.png
    clipboard.png
    clipboard.png

    解决zabbix页面字体无法显示问题

    [root@zabbix-server fonts]# cd /usr/share/zabbix/assets/fonts
    上传字体
    [root@zabbix-server fonts]# mv STXINWEI.TTF graphfont.ttf
    

    percona监控mysql

    官网下载的插件默认的版本不支持当前的zabbix导入
    clipboard.png

    [root@zabbix-server ~]# cd /var/lib/zabbix/percona/
    [root@zabbix-server percona]# ll
    total 0
    drwxr-xr-x 2 root root 70 Jun  4 17:27 scripts
    drwxr-xr-x 2 root root 79 Jun  4 16:43 templates
    [root@zabbix-server percona]# tree 
    .
    ├── scripts
    │?? ├── get_mysql_stats_wrapper.sh
    │?? └── ss_get_mysql_stats.php
    └── templates
        └── zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
    

    clipboard.png

    查看配置文件执行的脚本
    clipboard.png
    clipboard.png
    提示数据库密码错误
    clipboard.png
    修改数据库用户名密码
    clipboard.png
    脚本设置缓存小于300删除以下文件,但执行角色为zabbix,可手动删除或授权
    clipboard.png

    zabbix升级

    配置zabbix清华源3.0源

    [root@welkin html]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
    [root@welkin ~]# rpm -ivh zabbix-release-3.0-1.el7.noarch.rpm(替换源文件为清华源)
    [root@welkin ~]# yum install -y zabbix-server-mysql zabbix-web-mysql httpd mariadb-serer
    [root@welkin ~]# systemc start mariadb
    [root@welkin ~]# systemc enable mariadb
    [root@welkin ~]# mysql_secure_installation
    

    创建zabbix数据库–zabbix

    MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
    

    创建数据库管理用户

    MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
    

    导入zabbix表结构和初始数据以及模块

    ...
    /usr/share/doc/zabbix-server-mysql-3.0.28/create.sql.gz
    [root@welkin ~]# zcat /usr/share/doc/zabbix-server-mysql-*/create.sql.gz |mysql -uzabbix -pzabbix zabbix
    

    软件配置

    [root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
    DBPassword=zabbix
    [root@zabbix-server ~]# vim /etc/httpd/conf.d/zabbix.conf
    php_value date.timezone Asia/Shanghai
    
    [root@welkin ~]# systemctl start httpd
    [root@welkin ~]# systemctl enable httpd
    [root@welkin yum.repos.d]# systemctl start zabbix-server.service 
    [root@welkin yum.repos.d]# systemctl enable zabbix-server.service 
    

    升级

    [root@welkin yum.repos.d]# mysqldump -uroot -B  zabbix >/tmp/zabbix.sql
    [root@welkin yum.repos.d]# rpm -e zabbix-release
    [root@welkin tmp]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm    
    [root@welkin ~]#  systemctl stop zabbix-server.service
    [root@welkin yum.repos.d]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
    [root@welkin yum.repos.d]# yum clean all            +++++
    [root@welkin yum.repos.d]# chown -R apache.apache /usr/share/zabbix/
    
    [root@welkin ~]# cat /var/log/zabbix/zabbix_server.log
    

    snmp监控window和Linux

    snmp简单网络管理协议:用以监控网络设备,将每一个指标使用一个oid进行区别分类,oid集成为MIB库(分公有,私有),目前分v1,v2c,v3版本,端口默认为udp的163端口
    例如: .1.3.6.1.2.1.1.1.0 获取系统基本信息 SysDesc GET
    服务端:10.0.0.72
    客户端10.0.0.71

    服务端安装

    配置community(安全配置项,默认为public)和监控项目

    [root@welkin ~]# vim /etc/snmp/snmpd.conf 
    #       sec.name  source          community
    com2sec notConfigUser  default       welkin
    ...
    # Make at least  snmpwalk -v 1 localhost -c public system fast again.
    #       name           incl/excl     subtree         mask(optional)
    view    systemview    included   .1
    view    systemview    included   .1.3.6.1.2.1.1
    view    systemview    included   .1.3.6.1.2.1.25.1.1
    

    客户端安装

    [root@zabbix-server ~]# yum install -y net-snmp-utils
    客户端从服务端取值
    [root@zabbix-server ~]# snmpwalk -c welkin  -v2c 10.0.0.72 [oid]
    

    zabbix链接模板
    [配置]–[主机]
    主机名称
    设置群组(snmp)
    使用snmp接口(默认为agent代理)–配置客户端地址
    [模板]–(搜索linux)[Template OS Linux SNMPv2]
    修改[宏]–[继承模板的宏]为之前修改的自定义community–welkin
    clipboard.png
    将自动发现规则设置10s,系统会自动添加更多的监控项

    zabbix-agent主动模式

    [模板]–[选择模板全克隆(更改名称,后缀active区分)]–[批量更新]–[类型(zabbix-server端主动式)]
    由于默认的模式是服务端主动取采集客户端数据,采集数据间隔至少一秒,浪费时间,所以设置客户端主动提供数据给服务端
    修改客户端配置文件
    Serve=10.0.0.71
    ServerActive=10.0.0.71
    Hostname=piwik ---------必须和页面设置的一致(服务器主机名建议修改一致)
    (web界面创建的主机存储在数据库,客户端索取任务清单,zabbix获会从数据库取得监控主机名称和任务)

    无zabbix-agent客户端的监控(zabbix-sender)–渣渣功能

    客户端安装zabbix-sender
    zabbix页面设置–监控项–设置监控项类型(zabbix采集器)
    客户端使用命令:zabbix_sender -z 10.0.0.71(服务器) -s pwiki(客户端) -k test -o 脚本采集数据

    先执行脚本拿到结果,采集时直接发送结果。
    效率高,麻烦(每一个监控项都需要手动写脚本取值)!

    zabbix自动发现和自动注册

    自动发现

    配置自动发现规则和自动发现动作
    [配置]–[自动发现]–[修改IP范围等自动发现规则]–[启用]
    [配置]–[动作]–[事件源修改为自动发现]–[配置动作和操作(其中操作需要添加主机,其他监控项注意需要配置文件,按需配置)]
    查看[监测]–[自动发现] /[配置]–[主机] 查看发现是否生效

    自动注册

    配置zabbix-agent
    Server=10.0.0.71
    ServerActive=10.0.0.71
    Hostname=piwik --配置页面设置主机名
    HostMetadata=web --配置元数据
    配置主动注册的动作
    [配置]–[动作]–[事件源-自动注册]
    image.png

    image.png

    zabbix分布式监控proxy

    10.0.0.71 zabbix服务端
    10.0.0.72 zabbix代理端(开启内网网卡)
    10.0.0.7 zabbix内网代理端(ip更改为172.16.1.7)
    安装zabbix-proxy代理zabbix-server,在一个局域网收集数据,没有web界面,没有数据分析

    安装zabbix-proxy

    yum install zabbix-proxy-mysql -y
    yum install mariadb-server -y
    systemctl start mariadb
    systemctl enable mariadb
    mysql_secure_installation
    create database zabbix_proxy character set utf8 collate utf8_bin;
    grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';
    rpm -ql zabbix-proxy-mysql
    zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql -uzabbix -pzabbix zabbix_proxy
    

    配置zabbix-proxy

    vim /etc/zabbix/zabbix_proxy.conf
    Server=10.0.0.71
    Hostname=sh-proxy
    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
    

    代理主机名称一致:hostnamectl set-hostname sh-proxy

    systemctl start zabbix-proxy.service 
    systemctl enable zabbix-proxy.service
    

    zabbix界面添加代理–管理–agent代理程序–创建代理–[sh-proxy]–重启代理查看效果
    10.0.0.72 zabbix代理端(开启内网网卡)
    cp eth0 eth1(修改ip地址为172.16.1.72,网卡设备名称eth1,删除网关)–>ifup eth110.0.0.7 zabbix内网代理端(ip更改为172.16.1.7)
    更改为LAN区段,设置ip为172.16.1.7

    安装zabbix-agent软件,修改配置文件

    Server=172.16.1.72
    ServerActive=172.16.1.72
    Hostname=sh-web01
    systemctl start zabbix-agent
    

    zabbix页面创建主机

    [创建主机]–[名称,IP地址,选择agent代理程序监测sh-proxy]–
    [配置]–[动作]–[名称,新的触发条件(agent代理程序=sh-proxy)]
    重启代理–systemctl restart zabbix-proxy.service
    数据获取原理:在zabbix-web(zabbix-server)上创建主机–>zabbix-proxy(重启或默认1h读取监控主机)–>获取zabbix-agent监控项

    zabbix监控jvm原理(tomcat resin )

    配置jdk虚拟机和环境变量配置文件

    Java Development Kit-----java开发环境(oracle官网下载或者选择openjdk linux开源)

    [root@web02 tools]# ll
    total 206220
    -rw-r--r-- 1 root root   9128610 Oct  5  2015 apache-tomcat-8.0.27.tar.gz
    -rw-r--r-- 1 root root 181238643 Oct  5  2015 jdk-8u60-linux-x64.tar.gz
    -rw-r--r-- 1 root root  20797013 Mar  3  2017 jpress-web-newest.war
    [root@web02 tools]# mkdir /application/
    [root@web02 tools]# tar xf jdk-8u60-linux-x64.tar.gz 
    [root@web02 tools]# mv jdk1.8.0_60/ /application/
    [root@web02 tools]# ln -s /application/jdk1.8.0_60/ /application/jdk
    [root@web02 tools]# ll /application/
    total 0
    lrwxrwxrwx 1 root root  25 Mar 20 09:15 jdk -> /application/jdk1.8.0_60/
    drwxr-xr-x 8   10  143 255 Aug  5  2015 jdk1.8.0_60
    [root@web02 tools]# 
    

    配置jdk使用的环境变量

    [root@web02 tools]# cat >>/etc/profile <<'EOF'
    export JAVA_HOME=/application/jdk
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
    
    [root@web02 tools]# source /etc/profile
    [root@web02 tools]# java -version   --查看java环境版本
    

    部署tomcat(apache软件)

    [root@web02 tools]# tar  xf  apache-tomcat-8.0.27.tar.gz 
    [root@web02 tools]# mv apache-tomcat-8.0.27 /application/tomcat-8.0.27 
    [root@web02 tools]# ln -s   /application/tomcat-8.0.27/ /application/tomcat
    [root@web02 tools]# ll /application/tomcat
    

    配置环境变量

    [root@web02 tools]# vim /etc/profile
    export TOMCAT_HOME=/application/tomcat
    [root@web02 ~]# source /etc/profile
    yum install mariadb-server mariadb -y
    systemctl start mariadb.service 
    systemctl enable mariadb.service
    mysql_secure_installation
    

    数据库服务器创建数据库并授权用户

    create database jpress DEFAULT CHARACTER SET utf8;
    grant all on jpress.* to jpress@localhost identified by '123456';
    

    开启tomcat

    [root@web02 conf.d]# /application/tomcat/bin/startup.sh
    

    关闭tomcat

    [root@web02 conf.d]# /application/tomcat/bin/shutdown.sh
    

    验证tomcat服务开启

    [root@web02 conf.d]# ss -lntup |grep java
    tcp    LISTEN     0      1      ::ffff:127.0.0.1:8005                 :::*                   users:(("java",pid=2165,fd=66))
    tcp    LISTEN     0      100      :::8009                 :::*                   users:(("java",pid=2165,fd=51))
    tcp    LISTEN     0      100      :::8080                 :::*    
    

    上传war包到站点目录

    mv jpress-web-newest.war /application/tomcat/webapps/jpress.war
    

    页面访问

    http://10.0.0.72:8080/jpress/

    新增的jar包放置(上传后需重启)

    /application/tomcat/webapps/jpress/WEB-INF
    

    默认的java项目并不支持监控,需要修改配置文件,开启jmx

    vim /application/tomcat/bin/catalina.sh 
    # -----------------------------------------------------------------------------
    CATALINA_OPTS="$CATALINA_OPTS
    -Dcom.sun.management.jmxremote				开启jmx
    -Djava.rmi.server.hostname=10.0.0.72                    	修改为本机地址
    -Dcom.sun.management.jmxremote.port=12345	远程端口
    -Dcom.sun.management.jmxremote.ssl=false		ssl认证
    -Dcom.sun.management.jmxremote.authenticate=false"		账号密码认证
    # OS specific support.  $var _must_ be set to either true or false.
    生效需重启(检查12345端口)
    

    性能调优格式

    #JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
    JAVA_OPTS="$JAVA_OPTS -server -Xms256m -Xmx256m -Xss256k -XX:PermSize=192m -XX:MaxPermSize=192m -XX:+UseParallelOldGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/aaa/dump -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/usr/aaa/dump/heap_trace.txt -XX:NewSize=64m -XX:MaxNewSize=64m"
    
    # ----- Execute The Requested Command -----------------------------------------
    mkdir /usr/aaa/dump/ && touch /usr/aaa/dump/heap_trace.tx
    

    windows查看

    C:\Program Files\Java\jdk1.8.0_31\bin
    执行jconsole.exe
    使用远程连接 ip地址:12345
    桌面查看详情

    zabbix监控服务器页面配置

    安装zabbix-java-gateway(相当于代理的作用,可以在zabbix-server和其他主机上安装均可,从而获得java项目主机的监控信息(需开启12345端口)),代理地址填写在zabbix-server配置文件中,通过zabbix-java-gateway的配置文件监控

    [root@zabbix-server ~]# yum install -y zabbix-java-gateway
    [root@zabbix-server ~]# vim /etc/zabbix/zabbix_java_gateway.conf
    START_POLLERS=5       配置启动的收集进程
    [root@zabbix-server ~]# systemctl start zabbix-java-gateway.service 
    [root@zabbix-server ~]# systemctl enable zabbix-java-gateway.service
    配置zabbix-server文件,识别java-gateway地址
    [root@zabbix-server ~]#vim /etc/zabbix/zabbix_server.conf
    JavaGateway=127.0.0.1
    JavaGatewayPort=10052
    

    zabbix-web页面设置

    zabbix-web页面设置
    [配置]–[主机]–[创建主机(主机名称,群组,JMX接口)]–[模板]–[Template App Generic Java JMX] 默认的tomcat模板只支持tomcat 6版本
    clipboard.png

    zabbix低级自动发现(LLD)之mysql多实例

    创建多实例环境

    <meta charset="utf-8">
    
    [https://www.qstack.com.cn/archives/108.html](https://www.qstack.com.cn/archives/108.html)
    
    cp /etc/my.cnf /etc/my3307.cnf
    
    vim /etc/my3307.cnf
    
    cp /etc/my3307.cnf /etc/my3308.cnf
    
    vim /etc/my3308.cnf
    
    mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf
    
    mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf
    
    ls /data/
    
    ls /data/3307
    
    ls /data/3308
    
    mysqld_safe --defaults-file=/etc/my3307.cnf &
    
    mysqld_safe --defaults-file=/etc/my3308.cnf &
    

    取得端口

    netstat -lntup|awk -F "[ :]+" '/mysqld/{print $5}'
    

    编辑脚本

    [root@zabbix-server ~]# cat /server/scripts/mysql_discovery.sh 
    #!/bin/bash
    #mysql low-level discovery
    res=`netstat -lntup|awk -F "[ :]+" '/mysqld/{print $5}'`
    port=($res)
    printf '{'
    printf '"data":['
    for key in ${!port[@]}
    do
    if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
    printf '{'
    printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"},"
    else [[ "${key}" -eq "((${#port[@]}-1))" ]]
    printf '{'
    printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}"
    fi
    done
    printf ']'
    printf '}\n'
    

    配置zabbix-agent文件

    [root@zabbix-server ~]# cat /etc/zabbix/zabbix_agentd.d/mysql_discovery.conf 
    UserParameter=mysql_discovery,/bin/bash /server/scripts/mysql_discovery.sh
    
    [root@zabbix-server ~]# which netstat 
    /usr/bin/netstat
    [root@zabbix-server ~]# chmod u+s /usr/bin/netstat
    [root@zabbix-server ~]# chmod u+x /server/scripts/mysql_discovery.sh
    

    测试查看

    [root@zabbix-server zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -k mysql_discovery
    {"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}
    

    页面配置

    [配置]–[主机]–[创建发现规则]
    image.png

    [配置]–[主机]–[创建发现规则]创建后,添加[监控项原型]
    image.png

    clipboard.png

    在[配置]–[主机]–[监控项,筛选应用集,(选择非模板监控项)]----查看是否生效,查看最新数据进一步确认
    clipboard.png
    补充:进一步监控数据库的开启时间和打开文件数

    [root@zabbix-server ~]# cat /etc/zabbix/zabbix_agentd.d/mysql_discovery.conf 
    UserParameter=mysql_discovery,/bin/bash /server/scripts/mysql_discovery.sh
    UserParameter=mysql_alive[*],mysqladmin -uroot -h 127.0.0.1 -P $1 ping  2>/dev/null |grep -c alive
    UserParameter=my_mysql[*],mysql -uroot -h 127.0.0.1 -P $1  -e 'show status;'|awk '$$1 ~ /^'$2'$/{print $$2}
    

    配置自动发现的监控原型

    运行时间
    image.png

    打开文件数
    image.png

    zabbix性能优化

    1)针对mysql,zabbix应用写多读少,可将mariadb5.5(innodb引擎)升级mysql5.7 (tokuda引擎)
    2)去掉无用监控项,増加监控项的取值间隔,减少历史数据保存周期
    3)把被动模式修改为主动模式,增加 zabbix- proxy
    4)针对于 zabbix- server进程调优,谁忙,就加大它的进程数量

    查看[监控]–[最新数据]–[Zabbix-Server主机的zabbix-server应用集]–[Utilization of discoverer data collector processes, in %]查看使用率;若过大则调整zabbix-server配置文件启动的进程(默认为1)
    # StartDiscoverers=1
    查看数据采集进程繁忙度图形,修改相应的监控项
    clipboard.png
    # StartPollers=5
    # StartIPMIPollers=0
    # StartPollersUnreachable=1
    StartJavaPollers=5
    查看数据内部进程繁忙度图形,修改相应的监控项
    clipboard.png
    以上,都可以修改zabbix-server配置文件
    5)针对于 zabbix- server缓存调优,谁的剩余内存少,就加大它的缓存值
    查看数据缓存进程繁忙度图形,修改相应的监控项
    image.png

    clipboard.png

    VMwareCacheSize=8M—修改zabbix-server配置文件
    判断zabbix遇到性能瓶颈
    [管理]–[队列]
    image.png

    队列中的数据为未写入zabbix数据库的或未采集到的监控数据,大量堆积会影响查看效果
    6)针对 zabbix历史数据和趋勢图的表,进行周期性分表

    zabbix api(application interface)

    zabbix api(application interface)
    针对zabbix进行二次开发,公司 运维管理平台(把zabbix集成到自己的运维平台)
    获取token:

    curl -X POST -H 'Content-Type:application/json-rpc' -d '
    {
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            "user": "Admin",
            "password": "zabbix"
        },
        "id": 1,
        "auth": null
    }'  http://10.0.0.71/zabbix/api_jsonrpc.php
    
    
    token='a75358fc2120badb9faa104acb3e5cf0'
    
    for IP in `echo 10.0.0.{1..200}`;do curl -X POST -H 'Content-Type:application/json-rpc' -d '
    {
        "jsonrpc": "2.0",
        "method": "host.create",
        "params": {
            "host": "'$IP'",
            "interfaces": [
                {
                    "type": 1,
                    "main": 1,
                    "useip": 1,
                    "ip": "'$IP'",
                    "dns": "",
                    "port": "10050"
                }
            ],
            "groups": [
                {
                    "groupid": "19"
                }
            ],
            "templates": [
                {
                    "templateid": "10001"
                },
                {
                    "templateid": "10264"
                }
            ]
        },
        "auth": "'$token'",
        "id": 1
    }'  http://10.0.0.71/zabbix/api_jsonrpc.php;done
    

    添加一台监控主机,手动添加,自动发现,自动注册,调用添加主机api

    zabbix-agent(取值)主动和被动的区别

    主动:主动向zabbix-server汇报,53个监控,请求1次
    被动:等待zabbix-server索要,53个监控,请求53次
    采集时执行脚本,等待脚本执行完成,拿到结果,发送结果
    增加主动模式模板,基于被动模式模板全克隆,批量更新监控项的类型,为主机链接新模板

    无zabbix-agent客户端的监控(zabbix-sender)

    zabbix-sender,10
    先执行脚本拿到结果,采集时直接发送结果。
    效率高,麻烦(每一个监控项都需要手动写脚本取值)!

    zabbix性能优化

    db性能调优 写多读少(存储过程,分表)
    zabbix-server参数调休
    Cache 优化
    进程数 优化

    zabbix 高可用

    zabbix监控范围:
    硬件监控:温度,电压,功率,风扇(ipmi-tool仅对物理机有效)
    系统监控:cpu,内存,硬盘,网络,进程,安全(自带的linux模板)
    应用的监控:nginx,php-fpm,mysql,nfs,redis(应用本身开启监控页)
    业务的监控:业务是否能访问,每日成单量,流水(DBA)
    clipboard.png
    clipboard.png

    piwik-Web统计软件

    软件版本要求

    PHP 7.x版本,因为它比以前的PHP版本更高效,速度更快
    .MySQL 5.7+或MariaDB作为数据库
    .Web服务器,如Apache,Nginx,IIS等。

    安装piwik

    安装nginx的

    [root@web ~]# yum install -y nginx
    [root@web ~]# vim /etc/nginx/conf.d/www.conf 
    server {
        listen       80;
        server_name  localhost;
        root   /app/www;
        location / {
        index  index.php index.html index.htm;
        }
    
         location ~* \.(php|php5)$ {
          fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
           include        fastcgi_params;
       }
    
    }   
    [root@web ~]# gzip /etc/nginx/conf.d/default.conf
    
    

    安装PHP

    [root@web ~]# ls
    anaconda-ks.cfg                         php71w-gd-7.1.23-1.w7.x86_64.rpm            php71w-pecl-memcached-3.0.4-1.w7.x86_64.rpm
    cookil                                  php71w-mbstring-7.1.23-1.w7.x86_64.rpm      php71w-pecl-mongodb-1.4.1-1.w7.x86_64.rpm
    de.html                                 php71w-mcrypt-7.1.23-1.w7.x86_64.rpm        php71w-pecl-redis-3.1.6-1.w7.x86_64.rpm
    php71w-cli-7.1.23-1.w7.x86_64.rpm       php71w-mysqlnd-7.1.23-1.w7.x86_64.rpm       php71w-process-7.1.23-1.w7.x86_64.rpm
    php71w-common-7.1.23-1.w7.x86_64.rpm    php71w-opcache-7.1.23-1.w7.x86_64.rpm       php71w-xml-7.1.23-1.w7.x86_64.rpm
    php71w-devel-7.1.23-1.w7.x86_64.rpm     php71w-pdo-7.1.23-1.w7.x86_64.rpm           PHP7.1.zip
    php71w-embedded-7.1.23-1.w7.x86_64.rpm  php71w-pear-1.10.4-1.w7.noarch.rpm
    php71w-fpm-7.1.23-1.w7.x86_64.rpm       php71w-pecl-igbinary-2.0.5-1.w7.x86_64.rpm
    [root@web ~]# yum localinstall *.rpm
    [root@web ~]# egrep  '^user|^group' /etc/php-fpm.d/www.conf 
    user = nginx
    group = nginx
    
    

    安装数据库

    shell>yum install -y mariadb-server
    shell>systemctl start mariadb
    shell>systemctl enable mariadb
    MariaDB [(none)]> create database piwik;
    MariaDB [(none)]> grant all      on piwik.*       to 'piwik'@'localhost'  identified by '123456';
    
    

    上传代码

    [root@web /app/www]# ls
    How to install Matomo.html  matomo  matomo.zip
    [root@web /app/www]# mv matomo/* .
    [root@web /app/www]# ls
    bower.json     config           How to install Matomo.html  LEGALNOTICE  matomo.js   piwik.js    README.md    vendor
    CHANGELOG.md   console          index.php                   libs         matomo.php  piwik.php   SECURITY.md
    composer.json  CONTRIBUTING.md  js                          LICENSE      matomo.zip  plugins     tests
    composer.lock  core             lang                        matomo       misc        PRIVACY.md  tmp
    [root@web /app/www]# rm "/app/www/How to install Matomo.html" "/app/www/matomo.zip"
    [root@web /app/www]# chown -R nginx. .
    [root@web /app/www]# systemctl restart nginx php-fpm
    
    

    网站页面安装

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    zabbix 监控总结

    a: 物理硬件监控(cpu温度,风扇转速,主板温度,电压,功率 ipmi工具监控 机房巡检)ipmitool命令行
    b:操作系统监控(cpu负载,内存,磁盘容量io,网卡io,进程数,安全监控/etc/password)linux模板
    c: 应用软件监控(nginx,php-fpm,mysql,redis,分布式文件系统glusterFS,ceph) 修改开源的模板
    d:业务监控(业务状态,网页速度,pv,uv,ip监控,会员活跃数量,每天的成单量)
    e: 网络设备监控 snmp
    f:ELK监控日志

    zabbix 模板社区

    展开全文
  • Zabbix 监控

    千次阅读 2016-11-17 00:02:39
    企业级监控解决方案官方网站 zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理...

    介绍
    企业级监控解决方案官方网站
    zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案
    zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位解决存在的各种问题。

    Zabbix 主要特点:
    安装与配置简单,学习成本低 支持多语言(包括中文) 免费开源 自动发现服务器与网络设备分布式监视以及 WEB 集中管理功能 可以无 agent 监视 用户安全认证和柔软的授权方式 通过 WEB 界面设置或查看监视结果 email 等通知功能

    Zabbix主要功能:

    监控CPU负载、内存使用、磁盘使用、网络状态、端口监视、日志监视、插件开发自定义
    Zabbix 由 Zabbix Server 和 Zabbix agent组成

    Zabbix Server 可以通过 SNMP,Zabbix agent,Ping,端口监视等你方法提供对远程服务器/网络状态的 监视,数据收集功能,可以在运行 Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OX X,Windows 多 平台。
    Zabbix Agent 安装在需要被监控的目标服务器上,主要完成对硬件信息与操作系统有关的内存,CPU 等你 信息收集。
    Zabbix Server 可以单独监视远程服务器的服务状态,同时也可以与 Zabbix Agent 结合。可以轮询 Zabbix Agent 主动接收监视数据(trapping 传递 方式),同时还可以被动接收 Zabbix Agent 发送的数据。

    Zabbix 运行机制

    Zabbix 支持多种网络方式下的监控,可以通过分布式的部署和安装监控代理 Zabbix,通过 C/S 模式采集数 据,通过 B/S 模式在 Web 端展示和配置!Agent 监控端口 10050
    服务端安装 Zabbix Server 和 Zabbix Agent 两个服务,客户端只安装 Zabbix Agent 一个服务,监控原理 就是 Zabbix Agent 服务将从系统中获取的相关数据传送给 Zabbix Server,然后 Zabbix Server 服务奖数据分 析之后以 PHP 页面展示出来!

    整个环境所需要的软件包

    php-5.6.13  
    libmcrypt-2.5.8 
    mysql-5.6.26
    nginx-1.8.0 
    zabbix-3.0.5

    我们需要先构建 LNMP 的环境,因为 Zabbix 通过 PHP 页面展示
    搭建 LNMP 的环境,可以参考上篇博客 LNMP源码编译安装
    安装 Zabbix
    下载地址:http://www.zabbix.com/download
    Zabbix 需要数据库的支持,而却 Zabbix 已经自带了数据库结构,images 数据库和表数据等相关内容
    创建 Zabbix 使用数据库

    mysql -uroot -p
    mysql> create database zabbix;
    mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';    //zabbix 用户授权
    mysql> flush privileges;
    mysql> exit

    导入数据库,注意顺序,否则会报错

    // 解压进入zabbix目录
    mysql -uzabbix -pzabbix zabbix < database/mysql/schema.sql
     mysql -uzabbix -pzabbix zabbix < database/mysql/images.sql 
     mysql -uzabbix -pzabbix zabbix < database/mysql/data.sql

    如果在做分布式的环境中,Proxy 服务器只需要一个数据库 schema,代理者 agent 不需要数据库!Server 必须 三个数据库同时拥有
    Zabbix 同时支持很多类型数据库,可以通过查阅帮助: https://www.zabbix.com/documentation/2.4/manual/appendix/install/db_scripts

    编译安装 zabbix

     yum install -y net-snmp-devel  //net-snmp-config 依赖
    
     ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl
    
    // --prefix=    #指定路径
    // --enable-server  #Server 支持
    // --enable-agent   #支持 Zabbix 客户端
    // --with-mysql #指定 MySql 库可以选择制定路径 mysql_config,mysql_config 是命令,用于
    // 编译 mysql 客户端程序
    // --with-net-snmp  #支持 snmp 协议,需要安装 net-snmp-devel 包
    // --with-libcurl   #支持 CURL 功能,libcurl 主要功能就是用不同的协议连接不同的服务器,
    // libcurl 当前支持的协议有 http,https,ftp,gopher,telent,dict,file,和 ldap 协议

    其他参数:
    –enable-proxy 指的是支持 zabbix 代理服务器,zabbix proxy 是一个监控代理服务器,它收集到监控数
    据,选存放在缓冲区,保存的时间可以通过配置文件设定,然后再传送的 zabbix server。监控代理服务需要一个独立的数据库。
    用 zabbix proxy 的好处:进程监控,当监控文遏制通讯不方便的时候,当通讯上千台设备的时候,使用 zabbix_proxy 可以简化维护分布式监控,降低 zabbix server 的负负载,
    看到如下信息,预编译就没有什么问题
    ……


    make install    //上面的提示,没有 make 步骤,直接 install
     ls /usr/local/zabbix/  //编译成功,产生如下目录
    // bin  etc lib sbin    share

    配置 zabbix Server

    vim /usr/local/zabbix/etc/zabbix_server.conf
    
    DBHost=localhost    #默认注释掉了,直接取消注释即可
    DBName=zabbix   #数据库用户,我们授权的用户也是   zabbix
    DBUser=zabbix   #默认是 root,我们授权的用户是 zabbix
    DBPassword=zabbix   #密码我们授权的也是 zabbix
    #监控 Zabbix Server 本身
    #监控本身,意思是本身作为服务器之外,自己也做自己的客户端,也要使用    agentd   这个代理者 配置文件#中,有 agentd 和 agent 两个配置文件,前者是守护进程,后者依赖 xinetd
    vim /usr/local/zabbix/etc/zabbix_agentd.conf
    Server=127.0.0.1    #默认监控服务器自己,这三行不用改
    ServerActive=127.0.0.1
    Hostname=Zabbix server
    UnsafeUserParameters=1  
    #允许所有的字符是在用户定义的参数,参数传递,也就是支持自定义脚本
    #其中 Server 和 ServerActive 都指定 zabbixserver 的 IP 地址,不同的是,前者是被动后者是主动。也就#是说前者允许 127.0.0.1 这个 ip 来我这取数据。而 serverActive 的 127.0.0.1 的意思是,客户端主动提#交数据给 他。启动服务
     useradd -u 8005 -M -s /sbin/nologin zabbix 
    //如果 zabbix 用户不存在, 将以 root 运行,新建之后,如果 zabbix 存在,那么久直接可以用 zabbix 运行
    /usr/local/zabbix/sbin/zabbix_server        //直接运行
     echo /usr/local/zabbix/sbin/zabbix_server >> /etc/rc.local //开机启动 
     netstat -antup | grep zabbix   //zabbix server 运行端口 10051
      tcp   0   0 0.0.0.0:10051 0.0.0.0:*   LISTEN
      37568/zabbix_server

    如果这里没有端口显示,则需要注册端口

    vim /etc/services   //末尾添加下面这几行
    zabbix-agent    10050/tcp   # Zabbix Agent
    zabbix-agent    10050/udp   # Zabbix Agent
    zabbix-trapper  10051/tcp   # Zabbix Trapper
    zabbix-trapper  10051/udp   # Zabbix Trapper

    编辑 php 页面控制文件
    默认配置文件没有写入到我们的 Nagix 的配置文件中,也就是不能加载到我们的 zabbix 页面目录

    cp -r /usr/local/src/zabbix-3.0.5/frontends/php/*   /usr/local/nginx/html/ 
     vim /usr/local/nginx/conf/nginx.conf
    location / {
    root    html;
    index   index.php index.html index.htm; #找到此行内容,添加 index.php
    }

    重启服务

     /usr/local/nginx/sbin/nginx -s reload ; /etc/init.d/php-fpm restart

    打开网页安装 zabbix
    浏览器输入:http://192.168.1.63 如图,下一步 Next
    默认用户名: admin密码: zabbix
    //开始检查环境,如图,发现很多环境不符编辑 php.ini 文件,修 改

    vim /usr/local/php/php.ini
        post_max_size = 16M#修改
        max_execution_time = 300#修改
        max_input_time = 300#修改
        date.timezone = Asia/Shanghai#此行有注释,去注释并修改
        always_populate_raw_post_data = -1#此行取消注释即可
    
    /etc/init.d/php-fpm restart  #重启
    
     提示示没有安装gettext模块,为了不影响后面的功能,现在把这个模块重新安装进去:
    可以单独把这个模块编译安装进来:
    cd /usr/local/src/php-5.6.13/ext/
    cd gettext/
    
    /usr/local/php/bin/phpize 
    
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make && make install
    vim /usr/local/php/php.ini
    // 添加:extension = "gettext.so"
    /etc/init.d/php-fpm restart
    // 再次刷新即可

    写入失败,直接 down 这个配置文件,然后上传上去

    mv zabbix.conf.php /usr/local/nginx/html/conf/ 
    // 然后在点击 Retry

    点击 Finish,完成安装!
    登陆 Zabbix 并配置 登陆之后我们修改语言 默认用户名和密码分别问 admin,zabbix

    点击右上角用户,然后选择语言

    然后 Update 即可,页面变为中文

    如果所示,可到我们当前监控的本机(默认没有启动,点击后面红色的停用,则启用)

    把zabbix_agent 也启动起来:

    /usr/local/zabbix/sbin/zabbix_agentd

    再次刷新页面,可以看到,agent状态已经正常

    但是发现下面显示有问题:这个是中文字符集的问题,在英文状态下显示是正常的

    图形界方框的解决办法
    在 Windows 下面找一个 ttf 的字体文件

     mv /root/Desktop/微软雅黑.ttf  /usr/local/nginx/html/fonts/
      cd /usr/local/nginx/html/fonts/
      mv DejaVuSans.ttf /root/
      mv 微软雅黑.ttf DejaVuSans.ttf

    Zabbix 启动服务总结
    LNMP环境搭建好
    启动nginx服务、启动MySQL服务、启动php-fpm服务、测试环境是否正常
    上传zabbix 3.0.5 压缩包
    解压
    创建数据库,创建用户,授权
    导入zabbix自带的数据库
    安装zabbix,预编译, 直接 make install 安装完成
    修改server、agent配置文件
    复制启动脚本,启动服务,查看端口
    也没初始化zabbix:
    复制源码目录PHP目录下的所有内容到nginx 发布目录下
    重启nginx、php-fpm 服务
    通过IP地址,直接初始化安装zabbix,
    需要修改php.ini 配置文件。按照页面说明来修改对应的数值和选项
    如果提示缺少模块,可以重新打模块进去,满足条件,继续安装
    安装的时候,输入创建的DB和password
    安装完,默认的账户是admin,密码zabbix
    登陆进来,启动zabbix server ,稍等几分钟,可以看到agent端已经变成绿色即可监控本机数据状态
    通过查看配置图形,即可看到监控项的出图情况
    最下面的字体表示有问题,可以复制windows字体来替换原来的字体,刷新页面即可显示正常

    配置监控远程主机:
    安装 Agent

    yum install -y curl curl-devel net-snmp net-snmp-devel perl-DBI   // 解决 依赖
     useradd -u 8001 -M -s /sbin/nologin    zabbix
    
    cd /usr/local/src/ zabbix-3.0.5/
    
     ./configure --prefix=/usr/local/zabbix --enable-agent
    
    //被监控端只需要部署 agnet
     make install
    cat /etc/services|grep zabbix
        zabbix-agent    10050/tcp               # Zabbix Agent
        zabbix-agent    10050/udp               # Zabbix Agent
        zabbix-trapper  10051/tcp               # Zabbix Trapper
        zabbix-trapper  10051/udp               # Zabbix Trapper
    
    # 启动agent:
     /usr/local/zabbix/sbin/zabbix_agentd
    也可以使用系统启动脚本来启动:
    # 配置 Agnet 开机启动
    grep"chkconfig" /usr/local/src/zabbix-3.0.5/ -R –color
    # 查看有 chkconfig 的 文件
            /usr/local/src/zabbix-3.0.5/misc/init.d/fedora/core5/zabbix_agentd
            /usr/local/src/zabbix-3.0.5/misc/init.d/fedora/core5/zabbix_server
            /usr/local/src/zabbix-3.0.5/misc/init.d/fedora/core/zabbix_agentd
            /usr/local/src/zabbix-3.0.5/misc/init.d/fedora/core/zabbix_server
    
        cp /usr/local/src/zabbix-3.0.5/misc/init.d/fedora/core5/zabbix_agentd  /etc/init.d/
    
     vim /etc/init.d/zabbix_agentd  //上一步生成了启动脚本,然后现在编辑脚 本
        ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"   #修改此行
        chkconfig --add zabbix_agentd  chkconfig zabbix_agentd on
    拓展:core 和 core5 里面的文件都可以实现 zabbix 代理启动,core 里面是测试版本,core5 是稳定版本
    
    配置 Agentd 的配置文件
    vim /usr/local/zabbix/etc/zabbix_agentd.conf    //客户端操作
    
    Server=192.168.1.63 #zabbix server 地址,可以多个,用,隔开
    ServerActive=192.168.1.63   #主动检查的意思,主动检查手机的数据的数据发送给 Zabbix Server
    Hostname=test
    UnsafeUserParameters=1
    
    # 启动服务
     /etc/init.d/zabbix_agentd restart
     netstat -antup | grep zabbix
        tcp 0   0 0.0.0.0:10050 0.0.0.0:*   LISTEN
        9683/zabbix_agentd
    
    # Server 端测试通讯
    
     /usr/local/zabbix/bin/zabbix_get -s 192.168.1.64 -p10050 -k system.uname
    //可以获取对方系统版本则证明没有问题

    服务端配置管理脚本

    cp  /usr/local/src/zabbix-3.0.5/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
    
    vim /etc/init.d/zabbix_agentd
    BASEDIR=/usr/local/zabbix   #修改此行内容为 zabbix 的安装位置
    chkconfig --add zabbix_agentd [root@XueGod63 ~]# chkconfig zabbix_agentd on
    /etc/init.d/zabbix_agentd restart       //可以监控自己,也要启动服务 
    netstat -antup | grep zabbix    //两者之间监控端口不一样
        //tcp   0   0 0.0.0.0:10050 0.0.0.0:*   LISTEN
        //51645/zabbix_agentd
        //tcp   0   0 0.0.0.0:10051 0.0.0.0:*   LISTEN
        //10786/zabbix_server
    监控自己使用 10050 端口,监控对方使用的是 10051 端口
    
    

    添加 Host 主机

    添加主机

    这里写图片描述
    编辑,填写主机名,IP地址,注意,这里写的主机名要跟客户端的hostname一样

    这里写代码片
    这里写图片描述

    在弹出的模块里选择一个自己需要的模块:

    这里写图片描述

    返回之后,可以看到已经添加进来:等到可用性变成绿色即可出图监控

    这里写图片描述

    这时候就可以通过图形功能来查看出图情况

    添加监控项:
    通过比较zabbix servers 群组和Linux servers 群组,可以发现,默认的配置中Linux servers监控项比较少,下面手动添加监控项:

    删选无触发器,出来很多监控项,默认都是启用状态,我们无需再次启动,下面修改自动发现的时间

    文件系统探测和网络流量探测

    把原来的3600s改成10s

    修改更新数据后,再次返回图形监控页面,稍等几分钟再次查看监控项

    再次返回主页,可以看到整体的监控状态

    设置 Triger 触发器值

    找到当前主机应用的模板:

    默认的值是20%

    修改成自己设定的值

    更新数据

    模拟测试磁盘空间超标:

     dd if=/dev/zero of=/root/a.txt bs=1M count=6000

    刷新主页查看,发现警告信息

    ========以上是触发器值的设置================

    自定义绘图颜色:
    找到主机对应的模块—修改模板对应的图形颜色

    根据需求修改每一个项的显示颜色

    总结 zabbix 的文件
    zabbix_agent.conf 是用超级服务(xinetd)的方式来启动的,被动检查,只有 Server 说检查的时候才建材
    zabbix_agentd.conf 是以独立进程的方式来启动的,一般使用这个来做配置,自动检查,自动提交 zabbix_server.conf Server 启动配置文件,只有一个
    zabbix_get 是 Zabbix 中的一个程序,用于 Zabbix-Server 到 Zabbix-Agent 的数据获取,通常可以用来 检测验证 Agent 的配置是否正确。它的使用方法如下

    zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key>
    -h:远程 Zabbix-AgentIP 地址或者是主机名。
    -p:远程 Zabbix-Agent 的端口。
    -I:本机出去的 IP 地址,用于一台机器中有多个网卡的情况。
    -k:获取远程 Zabbix-Agent 数据所使用的 Key[expmple@~]# zabbix_get -s 192.168.1.64 -k system.uname
    zabbix_sender 与 get 相反,用来发送 Zabbix 服务器处理性能数据。该工具通常用于长时间运行的用户脚 本,用于定期发送可用性和性能数据。使用方法如下
    zabbix_sender [-Vhv] {[-zpsI] -ko | [-zpI] -T -i <file> -r} [-c <file>]
    参数说明:
    -c --config <file>  配置文件绝对路径
    -z --zabbix-server <server> zabbix server 的 IP 地址
    -p --port <server port> zabbix server 端口.默认 10051
    -s --host <hostname>    主机名,zabbix 里面配置的主机名(不是服务器的 hostname),不能使用
    
    ip 地址
    -I --source-address <IP address> 源 IP
    -k --key <key>  监控项的 key
    -o --value <key value>  key 值
    -i --input-file <input file>    从文件里面读取 hostname、key、value 一行为一条数据,使用空格作为分
    隔符,如果主机名带空格,那么请使用双引号包起来
    -T --with-timestamps    一行一条数据,空格作为分隔符: <hostname> <key> <timestamp>
    <value>,配合 --input-file option,timestamp 为 unix 时间戳
    -r --real-time  将数据实时提交给服务器
    -v --verbose    详细模式, -vv 更详细

    配置 Zabbix 监控 Apache 服务

    http://www.zabbix.org/wiki/Main_Page
    https://github.com/zabbix/zabbix-community-repos
    各种模板
    http://www.douglas.wiki.br/doku.php?id=en:installing_and_configuring_zabbix

    寻找或者自己写监控脚本
    上面给出部分网站去寻找脚本,有能力的可以自己写,我们可以借助别人的脚本,这些脚本大多数是遵循 GPL 的 协议

    下载一个脚本之后,你要分析下脚本的运行环境,这几脚本大多数是个人缩写,每个人的运行环境不一样,所以 你可以用 VIM 打开分析一下,有的是 python,有的是 ruby 写的,脚本拿到手需要改里面的东西! 如上图脚本,第一个是执行脚本,我们先对执行脚本一些必要操作,我们使用 192.168.0.64作为 apache Server

    mv check_apache /usr/local/zabbix/bin/
    
     cd /usr/local/zabbix/bin/ ; chmod +x check_apache  //脚本可执行权 限
     vim check_apache   //脚本需要我们改动的东西
     vim check_apache   //脚本需要我们改动的东西
    ……
    126 rval=$?;;
    127 'version')
    128 ApacheVersion=$(/usr/sbin/httpd -v 2> /dev/null | head -n 1 | awk '{print $3}' | cut -d '/'
    -f  2 | tail -n 1)
    129 echo "$ApacheVersion"
    130 exit $rval;;
    ……
    #在 128 行,我们这里使用 yum 安装的 apache,所以我们的版本获取方式是 httpd 命令,如果你用源码编译,需要指定绝对路径

    改动配置文件
    第二个文件就是我们改动和添加到主 agentd 配置文件的内容

    vim ../etc/zabbix_agentd.conf
    Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf   #此行启用并修改
     cd
    mv conf-apache.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/ vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/conf-apache.conf // 修 改 此文件
    UserParameter=apache[*],/usr/local/zabbix/bin/check_apache    \$1
     service zabbix_agentd restart
    对 httpd 文件的配置
     yum install httpd -y
     vim /etc/httpd/conf/httpd.conf //末尾添加这一段
    <IfModule mod_status.c>
    #
    # Allow server status reports generated by mod_status,
    # with the URL of http://servername/server-status
    
    # Uncomment and change the "192.0.2.0/24" to allow access from other hosts.
    #
    <Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1  ::1
    Allow from 192.168.0.0/24
    </Location>
    # Keep track of extended status information for each request
    ExtendedStatus On
    # Determine if mod_status displays the first 63 characters of a request or
    # the last 63, assuming the request itself is greater than 63 chars.
    # Default: Off
    #SeeRequestTail On
    <IfModule mod_proxy.c>
    # Show Proxy LoadBalancer status in mod_status
    ProxyStatus On
    </IfModule>
    </IfModule>
    [root@XueGod64 ~]# service httpd restart 
    
    
    cd /usr/local/zabbix/bin/
    测试脚本是否正常
    ./check_apache Uptime   //使用-h 或直接回车,有帮助出现

    前端页面操作
    导入模板

    让主机关联模板:

    选择刚才导入的模板,添加,更新

    查看最新数据,筛选Apache

    可以选择生产图形

    配置 zabbix 监控 MySQL
    和监控我们的 Apache 一样,寻找合适的脚本,不过,脚本并不是那么容易就可以找得到的! 要么自己手动去写,要么自己找到的拿来修改,都是需要花费代价的!ZABBIX 默认提供了 MYSQL 的监控模板
    数据库用户授权

     yum install -y mysql-server ;
     service mysqld restart
     mysql_secure_installation
    mysql -uroot -p123456
    
    mysql> grant usage on *.* to "zabbix-monitor"@"%" identified by '123456'; 
    mysql> flush privileges;
    mysql> quit
    cp /usr/local/src/zabbix- 3.0.5/conf/zabbix_agentd/userparameter_mysql.conf/usr/local/zabbix/etc/zabbix_agentd.conf.d/
    
    vim /usr/local/zabbix/etc/zabbix_agentd.conf
    
    Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf   #启用并修改 建立数据库和 zabbix 的链接信息
    
     vim /usr/local/zabbix/etc/.my.cnf
    
        #Zabbix Agent 
        [mysql] 
        host=localhost 
        user=zabbix-monitor 
        password=123456
        socket= /var/lib/mysql/mysql.sock
        [mysqladmin] 
        host=localhost
         user=zabbix-monitor 
        password=123456
        socket= /var/lib/mysql/mysql.sock
    
      vim   /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf 
    将 HOME=/var/lib/zabbix 全部改成 HOME=/usr/local/zabbix/etc/
    
    # For all the following commands HOME should be set to the directory that has .my.cnf file with password information.(提示目录下必须有.my.cnf)
    
     service zabbix_agentd restart

    Zabbix邮件报警配置:

     yum install postfix    //安装 postfix 
      vim /etc/postfix/main.cf  //修改下面行
        myhostname = test63
        mydomain = test63
        myorigin = $myhostname
        inet_interfaces = all
        mynetworks = 127.0.0.0/8, 192.168.0.0/24
    service postfix restart 

    点击添完成,先测试能否收到测试邮件

     mail -s "smxjphb@163.com" ******************@163.com

    测试,关闭 zabbix 客户端服务

     zabbix_agentd service zabbix_agentd stop 
    #结果延迟比较大,大概要5-10分钟置 zabbix 自动发现并监控(监控Windows为案例)
    

    下载安装Windows 客户端agent

    C:\Users\Administrator>Downloads\zabbix_agents_3.0.4.win\bin\win32\zabbi
    .exe -c Downloads\zabbix_agents_3.0.4.win\conf\zabbix_agentd.win.conf -i  # 安装
    zabbix_agentd.exe [5008]: service [Zabbix Agent] installed successfully
    zabbix_agentd.exe [5008]: event source [Zabbix Agent] installed successf
    
    C:\Users\Administrator>Downloads\zabbix_agents_3.0.4.win\bin\win32\zabbi
    .exe -c Downloads\zabbix_agents_3.0.4.win\conf\zabbix_agentd.win.conf -s #启动
    zabbix_agentd.exe [1060]: service [Zabbix Agent] started successfully

    创建自动发现规则
    添加关联动作
    等待一会,就可以发现自动探测监控了
    zabbix监控tomcat

    zabbix是使用了一个叫做Java Gateway的应用去监控JMX的。Java Gateway集成在zabbix官方开发发布的。
    1.源码编译zabbix的时候需要添加参数–enable-java 或者单独下载zabbix-java-getway http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/
    2.zabbix_server端安装jdk
    3.修改zabbix_java相关选项

    #进入到下面的目录下面进行seeting.sh脚本编辑
    find / -name zabbix_java
        /usr/local/zabbix/sbin/zabbix_java
        /usr/local/src/zabbix-3.2.1/src/zabbix_java
    vim /usr/local/src/zabbix-3.2.1/src/zabbix_java/settings.sh 
    #将注释释放掉
        LISTEN_IP="0.0.0.0"   #监听地址
        LISTEN_PORT=10052    #监听端口
        PID_FILE="/tmp/zabbix_java.pid"  
        START_POLLERS=5   # 开启的工作线程数(必须大于等于后面zabbix_server.conf文件的StartJavaPollers参数)

    4.修改zabbix_server文件

    vim /usr/local/zabbix/etc/zabbix_server.conf
     JavaGateway=127.0.0.1
    216 
    217 ### Option: JavaGatewayPort
    218 #       Port that Zabbix Java gateway listens on.
    219 #
    220 # Mandatory: no
    221 # Range: 1024-32767
    222 # Default:
    223  JavaGatewayPort=10052
    224 
    225 ### Option: StartJavaPollers
    226 #       Number of pre-forked instances of Java pollers.
    227 #
    228 # Mandatory: no
    229 # Range: 0-1000
    230 # Default:
    231  StartJavaPollers=3
    

    5.启动zabbix_java

    //  找到zabbix_java目录路径,然后执行命令./startup.sh
    /usr/local/zabbix/sbin/zabbix_java/startup.sh
    # 检查端口是否监听
    netstat -anp|grep 10052
        tcp        0      0 :::10052                    :::*                        LISTEN      106420/java

    6.下载tomcat, Extras:catalina-jmx-remote.jar
    http://tomcat.apache.org/download-70.cgi

    # 将下载好的 catalina-jmx-remote.jar存放到tomcat子目录目录lib录下
    mv catalina-jmx-remote.jar /usr/local/tomcat/lib/
    

    7.修改catalina.sh文件

    7 # OS specific support.  $var _must_ be set to either true or false.
    108 cygwin=false
    109 darwin=false
    110 os400=false
    111 hpux=false
    #增加JAVA_OPTS,添加此行
    112 JAVA_OPTS="-Dcom.sun.management.jmxremote.port=12345   #定义jmx监听端口
    113 -Dcom.sun.management.jmxremote.authenticate=false 
    114 -Dcom.sun.management.jmxremote.ssl=false 
    115 -Djava.rmi.server.hostname=192.168.0.155"       # 客户端IP
    #或者增加
     CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.0.155"
    
    
    # 修改 tomcat server.xml 配置文件,添加以下内容:
     vim /usr/local/zabbix/etc/zabbix_server.conf  
    
     <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"  rmiRegistryPortPlatform="12345"     rmiServerPortPlatform="12346"/>
    
    
    
    
    #测试
    java -jar cmdline-jmxclient-0.10.3.jar - 192.168.0.155:12345 java.lang:type=Memory NonHeapMemoryUsage
    12/03/2016 13:15:18 +0800 org.archive.jmx.Client NonHeapMemoryUsage: 
    committed: 30474240
    init: 2555904
    max: -1
    used: 29289904
    

    8.重启启动tomcat服务和zabbix_agentd服务

    展开全文
  • zabbix监控防火墙和交换机是通过snmp协议进行传输数据和数据分析的,下边我以dell防火墙sonicwall 3400系列和交换机N4032来进行讲解。由于zabbix服务器已安装好,现在只需在防火墙上火交换机上安装配置snmp协议,...

    zabbix监控防火墙和交换机是通过snmp协议进行传输数据和数据分析的,下边我以dell防火墙sonicwall 3400系列和交换机N4032来进行讲解。由于zabbix服务器已安装好,现在只需在防火墙上火交换机上安装配置snmp协议,作为客户端发送数据即可。

    (一)监控防火墙

    首先,登录防火墙,找到该防火墙的监控端口。该系列的端口步骤为:network--->interface--->防火墙被监控的端口,由于不同厂商的防火墙的步骤都是不一样的,但该步骤最主要的就是在防火墙上开启snmp协议,可以让厂商帮忙开通下即可,如下图

    其次,在zabbix服务端snmpwalk -v 2c -c public 192.168.168.168 检查看是否有数据被收集。[root@zabbix ~]# snmpwalk -v 2c -c public 192.168.168.168

    SNMPv2-MIB::sysDescr.0 = STRING: SonicWALL NSA 3600 (SonicOS Enhanced 6.2.2.2-19n)

    SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.8741.1

    DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (638740986) 73 days, 22:16:49.86

    SNMPv2-MIB::sysContact.0 = STRING:

    SNMPv2-MIB::sysName.0 = STRING: zabbix

    SNMPv2-MIB::sysLocation.0 = STRING:

    SNMPv2-MIB::sysServices.0 = INTEGER: 79

    IF-MIB::ifNumber.0 = INTEGER: 21

    IF-MIB::ifIndex.1 = INTEGER: 1

    IF-MIB::ifIndex.2 = INTEGER: 2

    IF-MIB::ifIndex.3 = INTEGER: 3

    IF-MIB::ifIndex.4 = INTEGER: 4

    IF-MIB::ifIndex.5 = INTEGER: 5

    IF-MIB::ifIndex.6 = INTEGER: 6

    IF-MIB::ifIndex.7 = INTEGER: 7

    IF-MIB::ifIndex.8 = INTEGER: 8

    IF-MIB::ifIndex.9 = INTEGER: 9

    IF-MIB::ifIndex.10 = INTEGER: 10

    最后在web界面添加该防火墙监控,如下图:

    最后就可以在该最新数据中查看该图了。出图效果如下:

    (二)监控交换机。

    监控交换机和防火墙一样,只需要在该交换机上开启和配置防火墙即可,具体步骤如下:

    由于本人使用的是dell N4032交换机,只需要配置 Configuring SNMPv1 and SNMPv2这部分即可,

    Configuring SNMPv3不用配置,配置信息如下:Console>enable

    console#configure

    console(config)#snmp-server community public ro            配置只读属性

    console(config)#snmp-server community private rw          配置读写属性

    console(config)#snmp-server enable traps all

    console(config)#snmp-server host 192.168.1.244 public       指定SNMP Server端也就是zabbix服务器的ip地址

    console(config)#exit

    其次,也是在zabbix服务端,执行该命令:[root@zabbix ~]# snmpwalk -v 2c -c public 192.168.10.10

    接收数据正常,接下来就可以在web界面,添加该交换机监控了,具体的参考上边,下边就是监控效果图了。

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,855
精华内容 11,142
关键字:

zabbix监控