zoukankan      html  css  js  c++  java
  • zabbix 组件监控概述

    目录

    zabbix 组件监控概述

    为了监控很多中间件,以 zabbix-agent 的 cenos-4.0.7 的官方镜像为基础,叠加做一系列修改,用于监控 docker 版的中间件:redis 4.0.9 、Zookeeper 3.4.6、Solr 8.4.1、openresy 1.15.8.1、Mongodb 3.2.22,ActiveMQ 5.10.2、Memcached 1.5.15、tomcat 8.5.51(支持同时监控多个 docker 容器实例)和非 docker 版的中间件:mysql5.6 、oracle11gR2 。

    安装 docker-ce

    从本地或者其它虚拟机拷贝廖磊制作的 docker-18.09.6 这个安装文件夹到目标机器 root 下(不建议采用原始的 yum 方式安装 docker , 容易在各种不同环境下产生不同的结果),然后运行安装脚本即可。

    cd docker-18.09.6
    ./setup.sh --install
    

    原基础镜像

    我们把官方镜像 docker pull zabbix/zabbix-agent:centos-4.0.7 拉到公司的 harbor 仓库,同时取了一个新的 LABEL ,名称为 develop-harbor.geostar.com.cn/3rd/zabbix/zabbix-agent:centos-4.0-latest ,后续我们就是以这个镜像为基础来制作自己的 zabbix-agent 镜像。

    新镜像

    • 编译镜像:

      本人使用 openstack 上的 172.16.101.19 这台机器作为制作镜像的机器(请各位不要使用这台机器

      把整个 data 文件夹下的内容载并拷贝到用来制作新镜像的机器的 /data 目录下(如果不存在目录请自行新建),作为我们制作镜像的目录

        cd /data/zabbix-agent/
        ./build.sh
      

      这个shell脚本会停止、删除主机上的所有运行的 docker 容器,然后编译我们自己的 develop-harbor.geostar.com.cn/3rd/zabbix/zabbix-agent:4.0.7-modify 镜像,请慎重使用这个脚本。

    • 上传镜像

      编译通过的镜像经过测试后可以上传到我们的 harbor 镜像仓库存储起来,用于提供给别人使用。

      docker login develop-harbor.geostar.com.cn  # 登录 harbor ,需要输入用户名/密码
      docker push develop-harbor.geostar.com.cn/3rd/zabbix/zabbix-agent:4.0.7-modify  # 推送镜像
      docker logout develop-harbor.geostar.com.cn  # 登出 harbor
      
    • 启动容器镜像:

      docker run --name zabbix-agent -v /usr/bin/docker:/usr/bin/docker  -v /var/run/docker.sock:/var/run/docker.sock  --restart always -e ZBX_HOSTNAME="172.16.101.19_test123" -e ZBX_SERVER_HOST="172.16.102.253" -e ZBX_AGENT_HOST="1.2.3.4" -e SOLR_PORT="2222" -e ORACLE_PORT="1234" -e ORACLE_INSTANCE_NAME="myinstance" -p 10050:10050 -d develop-harbor.geostar.com.cn/3rd/zabbix/zabbix-agent:4.0.7-modify
      

      参数说明:ZBX_HOSTNAME 是 zabbix-server 界面添加的主机名,必须保持严格一致, ZBX_SERVER_HOST 是 zabbix-server 服务器ip,ZBX_AGENT_HOST 是 agent 所在宿主 ip ,SOLR_PORT 是 solr 的应用端口(如果用默认的端口 8983 则不用传),ORACLE_PORT 是 oralce 实例端口(如果用默认的端口 1521 则不用传),ORACLE_INSTANCE_NAME 是 oralce 实例名称。

      ps:如果是用 yum 安装的 docker-ce ,那么需要添加 -v /usr/lib64/libltdl.so.7:/usr/lib64/libltdl.so.7 的启动参数。下面的具体组件监控都需要运行 zabbix-agent 容器来监控

    zookeeper 服务安装

    拉取镜像

    docker pull zookeeper:3.4
    

    运行 zookeeper

    docker run --name zookeeper --restart always -p 2181:2181 -p 2888:2888 -p 3888:3888  -d zookeeper:3.4
    

    注意:zookeeper 内嵌 jetty 容器,会占用 8080 端口,所以这里不做端口映射,如果需要在同一台机器上监控 tomcat ,且使用 8080 ,注意两者避免端口冲突。

    zookeeper 监控

    启动我们自制的 zabbix-agent 容器,在 zabbix 主机管理页面关联Template App Zookeeper 模版,修改宏 {$ZOO_IP} 为当前 zookeeper 服务器 ip ,zookeeper 端口号默认为2181,如果当前服务端口已做修改,也需要修改宏 {$ZOO_PORT} 为 zookeeper 服务的端口号

    OpenResty 服务安装

    拉取镜像

    docker pull openresty/openresty:1.15.8.1-4-alpine-fat-nosse42
    

    运行镜像

    docker run --name openresty --restart always -p 80:80 -v /root/nginx:/etc/nginx/conf.d -d openresty/openresty:1.15.8.1-4-alpine-fat-nosse42
    

    进入容器

    docker exec -it openresty bash
    

    编辑 nginx 配置

    vi /etc/nginx/conf.d/default.conf
    

    注:配置文件加入stub_status配置并暴露/basic_status endpoint

    location = /basic_status {
    	    stub_status on;
    	    access_log off;
    	}
    

    配置如下图:

    浏览器测试能否取得监控数据: http://ip:port/basic_status

    有如上数据返回则配置已经生效

    OpenResty 监控

    zabbix 主机管理页面关联 Template App Nginx 模版即可获得监控数据

    mongodb 服务安装

    拉取 mongodb 镜像

    docker pull mongo:3.2
    

    运行 mongodb

    docker run --name mongo --restart always -p 27017:27017 -d mongo:3.2
    

    mongodb 监控

    zabbix 主机管理页面关联 Template MongoDB 模版即可获得监控数据。

    redis 服务安装

    redis 拉取

    docker pull redis:4.0.9
    

    redis 运行

    docker run -d --privileged=true -p 6379:6379 -v /root/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis:4.0.9 redis-server /usr/local/etc/redis/redis.conf
    

    注:redis 配置文件预先放入 /root/redis/conf/ 目录下,不然无法正常挂载。

    redis 监控

    zabbix 主机管理页面关联 Template App Redis 模版即可获得监控数据。

    solr 服务安装

    solr 镜像拉取

    docker pull solr:8.4.1
    

    solr 容器启动

    docker run --name solr_demo -d -p 8983:8983 -p 10053:10053 --privileged=true -e ENABLE_REMOTE_JMX_OPTS=true -e RMI_PORT=10053 -e SOLR_OPTS="-Djava.rmi.server.hostname=${solr_server_ip}" solr:8.4.1 solr-demo
    

    ${solr_server_ip} 是 solr 主机的 ip,请按照实际替换。这样会从 8983 端口启动 solr,并启动一个 demo 为名字的 core。

    solr 监控

    注意:solr 的监控使用的是 jmx 的远程连接监控,所以 solr 容器启动的时候需要开启对应的环境变量才能监控到数据!

    zabbix 主机管理页面关联 Template App Solr 模版即可获得监控数据。添加主机的时候记住需要添加 jmx 接口,ip 为监控目标主机的ip,端口为 10053 。

    这样就能看到普通监控项和发现类型的监控项(根据 solr 的 core 来分类展示)

    Mysql5.6 服务安装

    卸载 mariadb

    rpm -qa | grep mariadb
    rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
    

    下载 mysql 的 repo 源

    yum install -y wget
    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    

    通过 rpm 安装

    rpm -ivh mysql-community-release-el7-5.noarch.rpm
    

    安装 mysql 并授权

    yum install -y mysql-server
    chown -R mysql:mysql /var/lib/mysql
    

    启动 mysql

    service mysqld start
    

    mysql 客户端用 root 用户连接登录 mysql:

    mysql -uroot
    

    重置 mysql 密码

    use mysql;
    update user set password=password('root') where user='root';
    flush privileges;
    

    mysql 监控

    给 zabbix 用户授权所有 ip 可以访问的权限:

    mysql -uroot -proot
    GRANT ALL ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
    flush privileges;
    SELECT User, Host, Password FROM mysql.user;    //这一句检测是否授权成功
    quit;
    

    zabbix 主机管理页面关联 Template App MySQL 模版即可获得监控数据。

    oracle 服务安装

    详见丁浩提供的 Oracle_DB_R2 安装手册.pdf

    oracle 安装包:
    http://172.16.20.10/Oracle/DateBase/11g_R2/11.2.0.4.0/oracleDB-p13390677-112040-linux-x86_64.tar.xz

    rsp 文件为:
    http://172.16.20.10/Oracle/DateBase/db_install_112040.rsp

    已测试在 centos7.6 环境下正常安装对应 openstack 镜像为
    centos7.6.1810_base-kvm-50g-none

    oracle 监控

    查看机器是否能正常启动oracle监听,lsnrctl status 查看oracle监听启动状态

    上图中oracle监听就没有正常启动,可以按下面两步修改配置来启动监听,vi /etc/hosts 修改/etc/hosts文件,把 <![HOSTIP]> 修改为这台 oracle 机器的 ip

    登录oracle库:

    su - oracle             # 切换到oracle用户
    

    进入 oracle_home

    cd /home/oracle/database/db_home/bin
    

    启动监听

    ./lsnrctl start
    

    sqlplus /nolog       # 不连接任何数据库
    conn /as sysdba     # 用sysdba登陆
    startup 启动实例
    

    select instance_name from v$instance;   #查看实例
    

    创建用户,在当前SQL>下执行以下语句:

    SQL>CREATE USER ZABBIX IDENTIFIED BY ZABBIX DEFAULT TABLESPACE SYSTEM TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK;
    
    SQL>GRANT ALTER SESSION TO zabbix;
     	GRANT CREATE SESSION TO zabbix;
     	GRANT CONNECT TO zabbix;
    	ALTER USER zabbix DEFAULT ROLE ALL;
    	GRANT SELECT ON V_$INSTANCE TO zabbix;
    	GRANT SELECT ON DBA_USERS TO zabbix;
    	GRANT SELECT ON V_$LOG_HISTORY TO zabbix;
    	GRANT SELECT ON V_$LOG TO zabbix;
    	GRANT SELECT ON V_$PARAMETER TO zabbix;
    	GRANT SELECT ON SYS.DBA_AUDIT_SESSION TO zabbix;
    	GRANT SELECT ON V_$LOCK TO zabbix;
    	GRANT SELECT ON DBA_REGISTRY TO zabbix;
    	GRANT SELECT ON V_$LIBRARYCACHE TO zabbix;
    	GRANT SELECT ON V_$SYSSTAT TO zabbix;
    	GRANT SELECT ON V_$PARAMETER TO zabbix;
    	GRANT SELECT ON V_$LATCH TO zabbix;
    	GRANT SELECT ON V_$PGASTAT TO zabbix;
    	GRANT SELECT ON V_$SGASTAT TO zabbix;
    	GRANT SELECT ON V_$LIBRARYCACHE TO zabbix;
    	GRANT SELECT ON V_$PROCESS TO zabbix;
    	GRANT SELECT ON DBA_DATA_FILES TO zabbix;
    	GRANT SELECT ON DBA_TEMP_FILES TO zabbix;
    	GRANT SELECT ON DBA_FREE_SPACE TO zabbix;
    	GRANT SELECT ON V_$SYSTEM_EVENT TO zabbix;
    	GRANT SELECT ON V_$locked_object TO zabbix;
    	GRANT SELECT ON dba_objects TO zabbix;
    	GRANT SELECT ON dba_tablespaces TO zabbix;
    	GRANT SELECT ON V_$SESSION TO zabbix;
    

    注意:如果是 oracle11g 的数据库版本,还需要执行下面的语句开放 ACL 的访问控制,否则在监控的过程中有部份内容无法正常显示(例于数据库版本,数据库文件大小等),而且 orabbix 的日志显示中也会有错误提示。

    SQL> exec dbms_network_acl_admin.create_acl(acl=> 'resolve.xml',description=> 'resolveacl',principal =>'ZABBIX', is_grant => true, privilege =>'resolve');
    SQL> exec dbms_network_acl_admin.assign_acl(acl => 'resolve.xml', host =>'*');
    SQL> commit;
    SQL>exit;
    

    注意:如果是之前 zabbix2.4 升级到 4.0,需要使用新的 orabbix 包,下载地址为:http://172.16.20.10/Zabbix/orabbix/orabbix-20200103.tar.gz
    如果启动报 acl 错误:

    需要删除原来的 acl 重新 create 一次:

    SQL> exec dbms_network_acl_admin.drop_acl ( acl => 'resolve.xml');
    SQL> exec dbms_network_acl_admin.create_acl(acl=> 'resolve.xml',description=> 'resolveacl',principal =>'ZABBIX', is_grant => true, privilege =>'resolve');
    SQL> exec dbms_network_acl_admin.assign_acl(acl => 'resolve.xml', host =>'*');
    SQL> commit;
    SQL>exit;
    

    zabbix 主机管理页面关联 Template_Oracle 模版并设置主机名称为 myinstance(与ORACLE_INSTANCE_NAME 这个 zabbix-agent 启动用到的环境变量设置一致)即可获得监控数据。

    tomcat 服务安装

    拉取 tomcat 镜像

    docker pull develop-harbor.geostar.com.cn/base/apache-tomcat:8.5.51-8u231
    

    启动 tomcat 多实例

    docker run  -p 8088:8080 -p 10057:10057 --name tomcat-test1 -l JMX_MONITOR_UUID=bc47dcd484724fb48fe81bc9f0e3d802 -l JMX_PORT=10057 -d develop-harbor.geostar.com.cn/base/apache-tomcat:8.5.51-8u231
    docker run  -p 8089:8080 -p 10058:10058 --name tomcat-test2 -l JMX_MONITOR_UUID=bc47dcd484724fb48fe81bc9f0e3d803 -l JMX_PORT=10058 -d develop-harbor.geostar.com.cn/base/apache-tomcat:8.5.51-8u231
    

    注意:这里启动了 2 个 tomcat 容器实例,第一个容器内部 8080 映射到外部为 8088,jmx使用 10057 端口,第一个容器内部 8080 映射到外部为8089,jmx 使用 10058 端口。

    进入每个tomcat容器实例内部(以tomcat-test1为例子)

    docker exec -it tomcat-test1 bash
    

    配置 jmx 监听

    vi /srv/tomcat8/bin/catalina.sh
    

    加入以下配置

    CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10057 -Dcom.sun.management.jmxremote.rmi.port=10057 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=172.16.101.245"
    

    其中-Djava.rmi.server.hostname=配置为当前服务器 ip,请自行修改,
    -Dcom.sun.management.jmxremote.port=10057
    -Dcom.sun.management.jmxremote.rmi.port=10057
    这两个 jmx 的端口需要与容器启动时候用的 jmx 端口保持一致。

    退出 tomcat 容器,重启 tomcat 容器

    exit
    docker restart tomcat-test1
    

    测试 jmx 能否获取到数据,打开 jdk 目录下面的 jconsole 工具,输入 jmx 远程连接 ip 和 jmx 连接端口

    点连接后正常连接就证明 jmx 已正常启用

    tomcat 监控

    zabbix 主机管理页面关联 Templates App Tomcat 模版即可获得多个 tomcat 的 docker 实例的监控数据

    监控到的数据

    activemq 服务安装

    拉取镜像

    docker pull develop-harbor.geostar.com.cn/geosmarter/rmohr/activemq:5.10.2
    

    运行 activemq 镜像

    docker run --name activemq --restart always -p 61616:61616 -p 8161:8161 -p 10054:10054 -e ACTIVEMQ_RMI_SERVER_HOSTNAME=${activemq_ip} -d develop-harbor.geostar.com.cn/geosmarter/rmohr/activemq:5.10.2
    

    注:对外暴露的 10054 端口为 jmx 端口, ${activemq_ip}为当前 activemq 服务器 ip

    进入 activemq 容器内部修改配置,注意这里要用 root 用户登录进来

    docker exec -itu root activemq bash
    

    activemq 容器内安装 vim 编辑器

    apt-get update
    apt-get install -y vim
    

    进入 activemq 的 bin 目录

    cd /opt/apache-activemq-5.10.2/bin
    

    修改 activemq 文件配置

    vim activemq
    

    找到 ACTIVEMQ_SUNJMX_START 配置,加入以下配置

    ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.password.file=/opt/apache-activemq-5.10.2/conf/jmx.password"
    ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.access.file=/opt/apache-activemq-5.10.2/conf/jmx.access"
    ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Djava.rmi.server.hostname=$ACTIVEMQ_RMI_SERVER_HOSTNAME -Dcom.sun.management.jmxremote.port=10054 -Dcom.sun.management.jmxremote.rmi.port=10054 -Dcom.sun.management.jmxremote.ssl=false "
    

    保存并退出编辑器,修改文件权限

    chmod 400 /opt/apache-activemq-5.10.2/conf/jmx.access
    chmod 400 /opt/apache-activemq-5.10.2/conf/jmx.password
    

    注:如果要修改 jmx 的权限、账号、密码请修改 /opt/apache-activemq-5.10.2/conf/ 目录下的 jmx.access 和 jmx.password,具体可参考 https://activemq.apache.org/jmx ,这里我们直接采用的默认账号密码

    退出 activemq 容器,重启 activemq 容器

    exit
    docker restart activemq
    

    测试 jmx 能否获取到数据,打开 jdk 目录下面的 jconsole,输入 jmx 远程连接 ip 和端口,activemq 配置了 jmx 账号和密码,需要输入默认的账号密码 admin/activemq,jmx 的端口约定为 10054

    点连接后正常连接就证明 jmx 已正常启用

    activemq 监控

    zabbix 主机管理页面关联 Template JMX ActiveMQ 模版并设置 JMX 端口为 10054 宏{$JMX_USERNAME} = admin,宏{$JMX_PASSWORD} = activemq即可获得监控数据

    memcached 服务安装

    拉取 memcached

    docker pull develop-harbor.geostar.com.cn/geosmarter/memcached:1.5.15
    

    运行 memcached

    docker run --name memcached --restart always -p 11211:11211 -d develop-harbor.geostar.com.cn/geosmarter/memcached:1.5.15
    

    memcached 监控

    在 zabbix 主机管理页面关联 Template App memcached 模版,并且设置宏 {$MEMCACHED_SERVER} =当前 memcached ip 地址,宏 {$MEMCACHED_PORT} = 11211,即可获得监控数据

  • 相关阅读:
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车按键启动和蜂鸣器报警
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车指定花式动作
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车指定花式动作
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车指定花式动作
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前后左右综合实验
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前后左右综合实验
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前后左右综合实验
    asp中设置session过期时间方法总结
    asp中设置session过期时间方法总结
    ASP.NET关于Session_End触发与否的问题
  • 原文地址:https://www.cnblogs.com/huangmengke/p/12827332.html
Copyright © 2011-2022 走看看