ubuntu24.04 zabbix7.0.8 snmptrap配置和参数优化

目录

一、snmptrap所需软件安装

二、Perl trap 接收器文件获取

三、配置文件修改

1. zabbix_server.conf修改

2. 配置 Perl trap 接收器

3. 配置snmptrapd

4. 配置/var/log/snmptrap/snmptrap.log日志分割

5. 可上传mib文件用于将oid解析为英文名称

四、验证配置生效情况

4.1.重启服务

4.2.验证

五、新增主机监控

5.1 创建Fusion主机

5.2 华为交换机配置可参考如下:

六、mysql优化

七、postgresql+timescledb 一主一从

7.1 postgresql和timescledb安装

7.2 主库设置

7.3 从库设置

7.4 检查

7.5 zabbix表转换为超表

7.6 pgpool4.6配置



一、snmptrap所需软件安装

sudo apt install libperl-dev snmptrapd snmpd snmp build-essential  libsnmp-perl snmp-mibs-downloader

此处可以在如下链接下载net-snmp备用,

Net-SNMPNet-SNMPhttp://www.net-snmp.org/download.htmlhttp://www.net-snmp.org/download.html

二、Perl trap 接收器文件获取

下载下图文件解压(需要使用安装的版本的文件),拷贝出路径下文件稍后使用: misc/snmptrap/zabbix_trap_receiver.pl

三、配置文件修改

1. zabbix_server.conf修改

编辑配置文件
vim /etc/zabbix/zabbix_server.conf
修改如下选项:

# 启用snmptrap
StartSNMPTrapper=1
# 日志存放路径,文件和文件夹均需要单独创建,
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log

赋予创建的文件权限  chmod 777 /var/log/snmptrap/snmptrap.log

zabbix_server参数优化参考如下链接:

Zabbix配置参数优化 - 遇见阿杜 - 博客园

zabbix 之 参数优化-CSDN博客

2. 配置 Perl trap 接收器

# 将之前获取的接收器文件拷贝到/usr/bin/目录
cp zabbix_trap_receiver.pl /usr/bin/


# 赋予执行权限
chmod +x /usr/bin/zabbix_trap_receiver.pl


# 修改脚本 $SNMPTrapperFile参数必须和zabbix_server.conf中SNMPTrapperFile值一致
vim /usr/bin/zabbix_trap_receiver.pl
$SNMPTrapperFile = '/var/log/snmptrap/snmptrap.log';

3. 配置snmptrapd

snmp v1,v2c使用的是团体字,按下图修改即可接收信息,v3版本需要额外添加命令

# 修改配置文件
vim /etc/snmp/snmptrapd.conf

# 添加如下参数
disableAuthorization yes
perl do "/usr/bin/zabbix_trap_receiver.pl"

在snmptrapd中snmptrap v3版本创建的用户必须与发送陷阱的EngineID绑定。为此,您可以在snmptrapd.conf文件中创建如下:

 createUser -e  ENGINEID myuser SHA“我的身份验证通行证” AES“我的加密通行证”                
在上一行中,需要设置以下内容:

ENGINEID :
将要发送陷阱的应用程序的EngineID。在华为交换机中,display cu 可以在snmp-agent配置的开头看到
myuser :
将要发送陷阱的USM用户名。
SHA:
身份验证类型(SHA或MD5,SHA更好)
“我的认证通行证”:
认证密码短语,用于生成秘密认证密钥。如果包含空格,请用引号引起来。
AES
使用的加密类型(AES或DES,AES更好)
“我的加密通行证”
用于生成秘密加密密钥的加密密码短语。如果包含空格,请用引号引起来。如果不选择它,它将被设置为与身份验证密码相同的密码。
具体可参考如下连接
https://blog.51cto.com/u_13858192/2532012

4. 配置/var/log/snmptrap/snmptrap.log日志分割

随便找一个复制一份改改名字和路径

5. 可上传mib文件用于将oid解析为英文名称

将从厂商处下载的文件上传到 /usr/share/snmp/mibs

修改配置文件 vim /etc/snmp/snmp.conf

四、验证配置生效情况

4.1.重启服务

systemctl restart snmptrapd snmpd zabbix-server
systemctl enable snmptrapd

4.2.验证

输入如下命令:

snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.3' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.3 s "test"

可以看到数据已经写入,如果没有数据,试试安装net-snmp在排查试试。

五、新增主机监控

5.1 创建Fusion主机

新增监控项

结果检查

5.2 华为交换机配置可参考如下:

# 必须开启信息中心
info-center enable

# snmp配置 组zabbix,10.10.100.97,yourpassword 替换为你自己的组,snmp服务站,验证密码
snmp-agent sys-info version v3
snmp-agent group v3 zabbixgroup privacy read-view ViewDefault notify-view ViewDefault
snmp-agent usm-user v3 zabbixusers1
snmp-agent usm-user v3 zabbixusers1 group zabbixgroup
snmp-agent usm-user v3 zabbixusers1 authentication-mode sha     回车输入yourpassword
snmp-agent usm-user v3 zabbixusers1 privacy-mode aes128         回车输入yourpassword

# trap主机配置 如果选v3 snmptrapd里需要对每台交换机额外加一条命令
snmp-agent target-host trap address udp-domain 10.10.100.97 params securityname zabbixusers1 v2c ext-vb

#启用trap告警功能,enable后可以跟指定的模块,我这里是开所有的模块trap
snmp-agent trap enable

#有些交换机没这个命令,zabbix获取不到信息
snmp-agent protocol source-status all-interface

 

华为交换机官方trap无法获取信息异常排错参考连接:

https://support.huawei.com/enterprise/zh/doc/EDOC1100339648?section=j01y

六、mysql优化

编辑mysql配置文件(数据库推荐使用postgresql+timescaledb)

vim /etc/mysql/mysql.conf.d/mysqld.cnf
log-bin = mysql-bin
server-id = 97
innodb_buffer_pool_size = 6G
innodb_flush_log_at_trx_commit = 0
innodb_log_file_size = 256M
event_scheduler = ON

重启mysql

systemctl restart mysql

表分区我使用了如下两个链接的脚本,:

MariaDB mysql zabbix分区_zabbix mysql和mariadb-CSDN博客

PostgreSQL TimescaleDB zabbix分区_zabbix postgresql timescaledb-CSDN博客

分区脚本我已经在链接里弄下来了,如下创建个.sql文件复制进去并执行比如zbx.sql:

mysql -u 'zabbix' -p'zabbixDBpass' zabbix < zbx.sql

DELIMITER $$
CREATE PROCEDURE `partition_create`(SCHEMANAME varchar(64), TABLENAME varchar(64), PARTITIONNAME varchar(64), CLOCK int)
BEGIN
        /*
           SCHEMANAME = The DB schema in which to make changes
           TABLENAME = The table with partitions to potentially delete
           PARTITIONNAME = The name of the partition to create
        */
        /*
           Verify that the partition does not already exist
        */

        DECLARE RETROWS INT;
        SELECT COUNT(1) INTO RETROWS
        FROM information_schema.partitions
        WHERE table_schema = SCHEMANAME AND table_name = TABLENAME AND partition_description >= CLOCK;

        IF RETROWS = 0 THEN
                /*
                   1. Print a message indicating that a partition was created.
                   2. Create the SQL to create the partition.
                   3. Execute the SQL from #2.
                */
                SELECT CONCAT( "partition_create(", SCHEMANAME, ",", TABLENAME, ",", PARTITIONNAME, ",", CLOCK, ")" ) AS msg;
                SET @sql = CONCAT( 'ALTER TABLE ', SCHEMANAME, '.', TABLENAME, ' ADD PARTITION (PARTITION ', PARTITIONNAME, ' VALUES LESS THAN (', CLOCK, '));' );
                PREPARE STMT FROM @sql;
                EXECUTE STMT;
                DEALLOCATE PREPARE STMT;
        END IF;
END$$
DELIMITER ;
DELIMITER $$
CREATE PROCEDURE `partition_drop`(SCHEMANAME VARCHAR(64), TABLENAME VARCHAR(64), DELETE_BELOW_PARTITION_DATE BIGINT)
BEGIN
        /*
           SCHEMANAME = The DB schema in which to make changes
           TABLENAME = The table with partitions to potentially delete
           DELETE_BELOW_PARTITION_DATE = Delete any partitions with names that are dates older than this one (yyyy-mm-dd)
        */
        DECLARE done INT DEFAULT FALSE;
        DECLARE drop_part_name VARCHAR(16);

        /*
           Get a list of all the partitions that are older than the date
           in DELETE_BELOW_PARTITION_DATE.  All partitions are prefixed with
           a "p", so use SUBSTRING TO get rid of that character.
        */
        DECLARE myCursor CURSOR FOR
                SELECT partition_name
                FROM information_schema.partitions
                WHERE table_schema = SCHEMANAME AND table_name = TABLENAME AND CAST(SUBSTRING(partition_name FROM 2) AS UNSIGNED) < DELETE_BELOW_PARTITION_DATE;
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

        /*
           Create the basics for when we need to drop the partition.  Also, create
           @drop_partitions to hold a comma-delimited list of all partitions that
           should be deleted.
        */
        SET @alter_header = CONCAT("ALTER TABLE ", SCHEMANAME, ".", TABLENAME, " DROP PARTITION ");
        SET @drop_partitions = "";

        /*
           Start looping through all the partitions that are too old.
        */
        OPEN myCursor;
        read_loop: LOOP
                FETCH myCursor INTO drop_part_name;
                IF done THEN
                        LEAVE read_loop;
                END IF;
                SET @drop_partitions = IF(@drop_partitions = "", drop_part_name, CONCAT(@drop_partitions, ",", drop_part_name));
        END LOOP;
        IF @drop_partitions != "" THEN
                /*
                   1. Build the SQL to drop all the necessary partitions.
                   2. Run the SQL to drop the partitions.
                   3. Print out the table partitions that were deleted.
                */
                SET @full_sql = CONCAT(@alter_header, @drop_partitions, ";");
                PREPARE STMT FROM @full_sql;
                EXECUTE STMT;
                DEALLOCATE PREPARE STMT;

                SELECT CONCAT(SCHEMANAME, ".", TABLENAME) AS `table`, @drop_partitions AS `partitions_deleted`;
        ELSE
                /*
                   No partitions are being deleted, so print out "N/A" (Not applicable) to indicate
                   that no changes were made.
                */
                SELECT CONCAT(SCHEMANAME, ".", TABLENAME) AS `table`, "N/A" AS `partitions_deleted`;
        END IF;
END$$
DELIMITER ;
DELIMITER $$
CREATE PROCEDURE `partition_maintenance`(SCHEMA_NAME VARCHAR(32), TABLE_NAME VARCHAR(32), KEEP_DATA_DAYS INT, HOURLY_INTERVAL INT, CREATE_NEXT_INTERVALS INT)
BEGIN
        DECLARE OLDER_THAN_PARTITION_DATE VARCHAR(16);
        DECLARE PARTITION_NAME VARCHAR(16);
        DECLARE OLD_PARTITION_NAME VARCHAR(16);
        DECLARE LESS_THAN_TIMESTAMP INT;
        DECLARE CUR_TIME INT;

        CALL partition_verify(SCHEMA_NAME, TABLE_NAME, HOURLY_INTERVAL);
        SET CUR_TIME = UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00'));

        SET @__interval = 1;
        create_loop: LOOP
                IF @__interval > CREATE_NEXT_INTERVALS THEN
                        LEAVE create_loop;
                END IF;

                SET LESS_THAN_TIMESTAMP = CUR_TIME + (HOURLY_INTERVAL * @__interval * 3600);
                SET PARTITION_NAME = FROM_UNIXTIME(CUR_TIME + HOURLY_INTERVAL * (@__interval - 1) * 3600, 'p%Y%m%d%H00');
                IF(PARTITION_NAME != OLD_PARTITION_NAME) THEN
                        CALL partition_create(SCHEMA_NAME, TABLE_NAME, PARTITION_NAME, LESS_THAN_TIMESTAMP);
                END IF;
                SET @__interval=@__interval+1;
                SET OLD_PARTITION_NAME = PARTITION_NAME;
        END LOOP;

        SET OLDER_THAN_PARTITION_DATE=DATE_FORMAT(DATE_SUB(NOW(), INTERVAL KEEP_DATA_DAYS DAY), '%Y%m%d0000');
        CALL partition_drop(SCHEMA_NAME, TABLE_NAME, OLDER_THAN_PARTITION_DATE);

END$$
DELIMITER ;
DELIMITER $$
CREATE PROCEDURE `partition_verify`(SCHEMANAME VARCHAR(64), TABLENAME VARCHAR(64), HOURLYINTERVAL INT(11))
BEGIN
        DECLARE PARTITION_NAME VARCHAR(16);
        DECLARE RETROWS INT(11);
        DECLARE FUTURE_TIMESTAMP TIMESTAMP;

        /*
         * Check if any partitions exist for the given SCHEMANAME.TABLENAME.
         */
        SELECT COUNT(1) INTO RETROWS
        FROM information_schema.partitions
        WHERE table_schema = SCHEMANAME AND table_name = TABLENAME AND partition_name IS NULL;

        /*
         * If partitions do not exist, go ahead and partition the table
         */
        IF RETROWS = 1 THEN
                /*
                 * Take the current date at 00:00:00 and add HOURLYINTERVAL to it.  This is the timestamp below which we will store values.
                 * We begin partitioning based on the beginning of a day.  This is because we don't want to generate a random partition
                 * that won't necessarily fall in line with the desired partition naming (ie: if the hour interval is 24 hours, we could
                 * end up creating a partition now named "p201403270600" when all other partitions will be like "p201403280000").
                 */
                SET FUTURE_TIMESTAMP = TIMESTAMPADD(HOUR, HOURLYINTERVAL, CONCAT(CURDATE(), " ", '00:00:00'));
                SET PARTITION_NAME = DATE_FORMAT(CURDATE(), 'p%Y%m%d%H00');

                -- Create the partitioning query
                SET @__PARTITION_SQL = CONCAT("ALTER TABLE ", SCHEMANAME, ".", TABLENAME, " PARTITION BY RANGE(`clock`)");
                SET @__PARTITION_SQL = CONCAT(@__PARTITION_SQL, "(PARTITION ", PARTITION_NAME, " VALUES LESS THAN (", UNIX_TIMESTAMP(FUTURE_TIMESTAMP), "));");

                -- Run the partitioning query
                PREPARE STMT FROM @__PARTITION_SQL;
                EXECUTE STMT;
                DEALLOCATE PREPARE STMT;
        END IF;
END$$
DELIMITER ;
DELIMITER $$
CREATE PROCEDURE `partition_maintenance_all`(SCHEMA_NAME VARCHAR(32))
BEGIN
                CALL partition_maintenance(SCHEMA_NAME, 'history', 7, 24, 3);
                CALL partition_maintenance(SCHEMA_NAME, 'history_log', 7, 24, 3);
                CALL partition_maintenance(SCHEMA_NAME, 'history_str', 7, 24, 3);
                CALL partition_maintenance(SCHEMA_NAME, 'history_text', 7, 24, 3);
                CALL partition_maintenance(SCHEMA_NAME, 'history_uint', 7, 24, 3);
                CALL partition_maintenance(SCHEMA_NAME, 'trends', 365, 24, 3);
                CALL partition_maintenance(SCHEMA_NAME, 'trends_uint', 365, 24, 3);
END$$
DELIMITER ;

创建每12小时执行一次的事件

mysql -u 'zabbix' -p'zabbixDBpass' zabbix -e "CREATE EVENT zbx_partitioning ON SCHEDULE EVERY 12 HOUR DO CALL
partition_maintenance_all('zabbix');"

检查是否成功

mysql -u 'zabbix' -p'zabbixDBpass' zabbix -e "SELECT * FROM INFORMATION_SCHEMA.events\G"

修改管家天数和分区脚本的一致,框里的都可以改

mysql -u 'zabbix' -p'zabbixDBpass' zabbix -e "ALTER EVENT zbx_partitioning ON SCHEDULE EVERY 12 HOUR DO CALL
partition_maintenance_all_30and400('zabbix');"

七、postgresql+timescledb 一主一从

7.1 postgresql和timescledb安装

参考链接:

https://docs.timescale.com/self-hosted/latest/install/installation-linux/

http://www.postgres.cn/docs/current/warm-standby.html#FILE-STANDBY-SIGNAL

安装最新的PostgreSQL软件包
sudo apt install gnupg postgresql-common apt-transport-https lsb-release wget

运行PostgreSQL包设置脚本
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

添加TimescaleDB包
echo "deb https://packagecloud.io/timescale/timescaledb/ubuntu/ $(lsb_release -c -s) main" | sudo tee /etc/apt/sources.list.d/timescaledb.list

安装TimescaleDB GPG密钥
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/timescaledb.gpg

更新本地存储库列表
sudo apt update

安装TimescaleDB
sudo apt install timescaledb-2-postgresql-17 postgresql-client-17

为TimescaleDB调优PostgreSQL实例
sudo timescaledb-tune

重启并登录到PostgreSQL
sudo systemctl restart postgresql
sudo -u postgres psql

将TimescaleDB添加到数据库
CREATE EXTENSION IF NOT EXISTS timescaledb;
您可以看到已安装的扩展列表
\dx

7.2 主库设置

vim /etc/postgresql/17/main/postgresql.conf

# 启用WAL日志归档
wal_level = replica
# 允许最多5个从库连接
max_wal_senders = 5
#所有ip可远程登陆
listen_addresses = '*'
#主数据库上保留的 WAL 日志的最小大小,以MB为单位
wal_keep_size = 1GB
# 开启同步提交,off是异步提交
synchronous_commit = on
#同步提交必须配置,异步提交不需要,同步提交建议2个备库
synchronous_standby_names = 'wdd1'
shared_preload_libraries = 'timescaledb'

vim /etc/postgresql/17/main/pg_hba.conf

# 允许从库复制的ip和用户
host    replication     zabbix          192.168.11.12/32        md5	
host    all             zabbix          192.168.11.12/32        scram-sha-256

创建用户

创建具有复制权限的用户
CREATE USER zabbix WITH REPLICATION ENCRYPTED PASSWORD 'admin';

在主库执行以下 SQL 检查用户是否有复制权限(userepl 应为 t(表示有复制权限):
SELECT usename, userepl FROM pg_user WHERE usename = 'zabbix';

权限不对可以 修改用户赋予复制权限
ALTER USER zabbix WITH REPLICATION; 

重启服务

systemctl restart postgresql

7.3 从库设置

停止服务
systemctl stop postgresql

删除数据文件夹
rm -rf /var/lib/postgresql/17/main

初始备份
sudo -u postgres
pg_basebackup -h 192.168.11.11 -D /var/lib/postgresql/17/main -U zabbix -P -R --wal-method=stream --create-slot --slot=copyslot1

可以看到standby.signal文件
ll /var/lib/postgresql/17/main

同步提交需设置application_name=wdd1
vim /var/lib/postgresql/17/main/postgresql.auto.conf 

vim /etc/postgresql/17/main/postgresql.conf

设置只读
hot_standby = on

#所有ip可远程登陆
listen_addresses = '*'

重启服务
systemctl restart postgresql

7.4 检查

主库检查状态,能看到从库信息

SELECT client_addr,application_name, sync_state FROM pg_stat_replication;

判断数据库是否为主库 f 表示是主库,t 表示属于备库角色

select pg_is_in_recovery();

执行以下命令,检查WAL发送进程的状态:应该能看到一个或多个WAL发送进程正在运行。

ps aux | grep wal_sender

检查日志槽

 SELECT slot_name,plugin,slot_type,database,active,restart_lsn FROM pg_replication_slots;

7.5 zabbix表转换为超表

zabbix手册页:
6 TimescaleDB 配置

在导入初始架构和数据后通过执行以下命令为特定的数据库启用 TimescaleDB 扩展

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

对于新安装,运行 postgresql/timescaledb/schema.sql 脚本。 该脚本必须在使用初始模式/数据创建常规 PostgreSQL 数据库之后运行

cat /usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix

登录数据库查看是否有超表

sudo -su postgres psql

\c zabbix

SELECT hypertable_name FROM timescaledb_information.hypertables;   查看是否超表

7.6 pgpool4.6配置

vim /etc/pgpool2/pgpool.conf

listen_addresses = '*'
port = 9999

logging_collector = on
log_directory = '/var/log/pgpool2'
log_filename = 'pgpool.log'
log_file_mode = 0600
log_line_prefix = '%m: %a pid %p: '
log_connections = on
log_disconnections = on
log_pcp_processes = on
log_hostname = on
log_client_messages = on
log_min_messages = warning

backend_hostname0 = '192.168.11.11'
backend_port0 = 5432
backend_weight0 = 0
backend_data_directory0 = '/var/lib/postgresql/17/main'
backend_flag0 = 'ALWAYS_PRIMARY'
backend_application_name0 = 'master1'

backend_hostname1 = '192.168.11.12'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/var/lib/postgresql/17/main'
backend_flag1 = 'DISALLOW_TO_FAILOVER'
backend_application_name0 = 'slave1'

enable_pool_hba = on
pool_passwd = 'pool_passwd'
authentication_timeout = 1min

load_balance_mode = on

# 流复制检查,延迟检查用户和密码
sr_check_user = 'pgpool'
sr_check_password = ''
# 健康检查
health_check_user = 'pgpool'
health_check_password = ''
health_check_period = 10
health_check_timeout = 30
health_check_max_retries = 3

pcp_listen_addresses = '*'
pcp_port = 9898
ssl = off


# 创建日志文件,可以使用自带的日志轮转或linux的
mkdir /var/log/pgpool2
touch /var/log/pgpool2/pgpool.log
chmod 777 /var/log/pgpool2/pgpool.log


# 使用的加密协议需要和数据库一样比如都是scram-sha-256
vim /etc/pgpool2/pool_hba.conf
host    all         all         192.168.11.0/24       scram-sha-256
host    all         all         192.168.11.0/24       scram-sha-256


#创建解密密钥文件 scram-sha-256加密需要
[root@server1 ~]# su - postgres -c "echo 'some string' > ~/.pgpoolkey"
[root@server1 ~]# su - postgres -c "chmod 600 ~/.pgpoolkey"
下面两个命令分别写入md5 和scram-sha-256加密密码
pg_enc -m -k /var/lib/postgresql/.pgpoolkey -u zbx -p
pg_md5 -m -u scopy -p
cat /etc/pgpool-II/pool_passwd
vim /etc/pgpool2/pool_passwd



systemctl restart pgpool2

创建健康检查和流复制状态检查用户
CREATE USER pgpool WITH PASSWORD 'admin';
GRANT pg_monitor TO pgpool;

创建zabbix连接数据库用户
sudo -u postgres createuser --pwprompt zabbix

创建postgresql流复制用户
CREATE USER zbx WITH REPLICATION ENCRYPTED PASSWORD 'admin';

### 如何在Ubuntu 24.04上安装配置SNMP #### 安装必要的软件包 为了使SNMP正常工作,需要先更新本地的APT仓库缓存并安装`snmpd`服务以及一些辅助工具。 ```bash sudo apt update && sudo apt upgrade -y sudo apt install snmpd snmp -y ``` 上述命令会下载最新的软件列表到本地计算机,并确保所有已安装程序都是最新版本[^1]。接着安装SNMP守护进程(snmpd)及其客户端工具(snmp),这允许用户通过网络监控设备性能指标其他重要参数。 #### 配置SNMP服务 默认情况下,`/etc/snmp/snmpd.conf` 文件包含了所有的配置选项。编辑此文件可以更改访问控制、团体字符串(community string)以及其他设置: ```bash sudo nano /etc/snmp/snmpd.conf ``` 对于基本的安全性功能性调整,可以在该文件内添加或修改以下几行内容以适应特定需求: - 设置读取权限给指定IP地址范围内的主机: ``` rocommunity public 192.168.1.0/24 ``` - 如果希望启用更详细的日志记录功能,则可加入这一行: ``` loglevel debug ``` 完成编辑之后保存退出nano编辑器(Ctrl+X), 并重启SNMP服务让新的设定生效: ```bash sudo systemctl restart snmpd.service ``` 此时可以通过执行简单的测试查询验证SNMP是否已经正确启动运行了: ```bash snmpwalk -v 2c -c public localhost system ``` 如果一切顺利的话应该能看到一系列有关系统的OID(Object Identifier)输出信息[^5]。 #### 测试SNMP连接性 要确认远程节点能否成功获取数据,可以从另一台Linux机器上尝试同样的`snmpwalk`命令指向目标服务器的公网IP地址代替localhost来进行跨网段通信测试。另外也可以利用图形界面的应用比如Paessler PRTG Network Monitor 或者 Nagios Core 来实现更加直观便捷的操作体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值