5.运行应用程序 | 5. Running the application
5 运行应用程序
“ 运行应用程序
”一章描述了应用程序的配置和启动方式。主题包括:
- 配置目录和参数
另请参阅章节Definition of Agent Configuration Files
,Definition of Manager Configuration Files
其中包含有关代理和管理器配置文件的更多详细信息。
5.1 配置应用程序
系统中必须存在以下两个目录才能运行代理程序:
配置目录
存储由代理使用的所有配置文件(请参见章节Definition of Agent Configuration Files
获得更多信息)。
系统中必须存在以下目录才能运行管理器:
- 在
配置目录
存储由管理员使用的所有配置文件(请参阅章节Definition of Manager Configuration Files
以获取更多信息)。
代理和管理器使用(应用程序)配置参数来找出这些目录的位置。这些参数应该在Erlang系统配置文件中定义。为SNMP应用程序定义了以下配置参数:
agent_options() = [agent_option()]
agent_option() = {restart_type, restart_type()} |
{agent_type, agent_type()} |
{agent_verbosity, verbosity()} |
{versions, versions()} |
{discovery, agent_discovery()} |
{gb_max_vbs, gb_max_vbs()} |
{priority, priority()} |
{multi_threaded, multi_threaded()} |
{db_dir, db_dir()} |
{db_init_error, db_init_error()} |
{local_db, local_db()} |
{net_if, agent_net_if()} |
{mibs, mibs()} |
{mib_storage, mib_storage()} |
{mib_server, mib_server()} |
{audit_trail_log, audit_trail_log()} |
{error_report_mod, error_report_mod()} |
{note_store, note_store()} |
{symbolic_store, symbolic_store()} |
{target_cache, target_cache()} |
{config, agent_config()}
manager_options() = [manager_option()]
manager_option() = {restart_type, restart_type()} |
{net_if, manager_net_if()} |
{server, server()} |
{note_store, note_store()} |
{config, manager_config()} |
{inform_request_behaviour, manager_irb()} |
{mibs, manager_mibs()} |
{priority, priority()} |
{audit_trail_log, audit_trail_log()} |
{versions, versions()} |
{def_user_mod, def_user_module() |
{def_user_data, def_user_data()}
代理特定的配置选项和类型:
agent_type() = master | sub <optional>
如果master
启动了一个主代理程序。否则,不会启动代理。
默认是master
。
agent_discovery() = [agent_discovery_opt()] <optional>
agent_discovery_opt() = {terminating, agent_terminating_discovery_opts()} | {originating, agent_originating_discovery_opts()}
这些terminating
选项会影响经理发起的发现。
这个originating
选项影响这个代理发起的发现。
有关默认值,请参阅中的选项agent_discovery_opt()
。
agent_terminating_discovery_opts() = [agent_terminating_discovery_opt()] <optional>
agent_terminating_discovery_opt() = {enable, boolean()} | {stage2, discovery | plain} | {trigger_username, string()}
这些是影响terminating
该代理发现的选项(即由经理发起)。
terminating
发现选项的默认值为:
- 启用:
true
agent_originating_discovery_opts() = [agent_originating_discovery_opt()] <optional>
agent_originating_discovery_opt() = {enable, boolean()}
这些是影响originating
代理发现的选项。
originating
发现选项的默认值为:
- 启用:
true
multi_threaded() = bool() <optional>
如果为true
,则代理是多线程的,每个获取请求都有一个线程。
默认是false
。
db_dir() = string() <mandatory>
定义SNMP代理内部数据库文件的存储位置。
gb_max_vbs() = pos_integer() | infinity <optional>
定义Get-BULK响应中允许的最大varbind数量。
默认是1000
。
local_db() = [local_db_opt()] <optional>
local_db_opt() = {repair, agent_repair()} | {auto_save, agent_auto_save()} | {verbosity, verbosity()}
定义特定于SNMP代理本地数据库的选项。
有关默认值,请参阅中的选项local_db_opt()
。
agent_repair() = false | true | force <optional>
启动snmpa_local_db时,它总是尝试打开现有的数据库。 如果为false,并且发生一些错误,则会创建一个新的数据库。 如果为true,则现有文件将被修复。 如果强制,即使正确关闭,桌子也会被修复。
默认是true
。
agent_auto_save() = integer() | infinity <optional>
自动保存间隔。每当这段时间没有访问时,该表被刷新到磁盘。
默认是5000
。
agent_net_if() = [agent_net_if_opt()] <optional>
agent_net_if_option() = {module, agent_net_if_module()} | {verbosity, verbosity()} | {options, agent_net_if_options()}
定义特定于SNMP代理网络接口实体的选项。
有关默认值,请参阅agent_net_if_opt()
中的选项。
agent_net_if_module() = atom() <optional>
处理SNMP代理的网络接口部分的模块。必须执行该snmpa_network_interface
行为。
默认是snmpa_net_if
。
agent_net_if_options() = [agent_net_if_option()] <optional>
agent_net_if_option() = {bind_to, bind_to()} | {sndbuf, sndbuf()} | {recbuf, recbuf()} | {no_reuse, no_reuse()} | {req_limit, req_limit()} | {filter, agent_net_if_filter_options()}
这些选项实际上是特定于使用的模块。这里显示的那些适用于默认值agent_net_if_module()
。
有关默认值,请参阅agent_net_if_option()
中的选项。
req_limit() = integer() | infinity <optional>
代理处理的最大并发请求数。
默认是infinity
。
agent_net_if_filter_options() = [agent_net_if_filter_option()] <optional>
agent_net_if_filter_option() = {module, agent_net_if_filter_module()}
这些选项实际上是特定于使用的模块。这里显示的那些适用于默认值agent_net_if_filter_module()
。
有关默认值,请参阅agent_net_if_filter_option()
中的选项。
agent_net_if_filter_module() = atom() <optional>
处理SNMP代理的网络接口过滤器部分的模块。必须执行该snmpa_network_interface_filter
行为。
默认是snmpa_net_if_filter
。
agent_mibs() = [string()] <optional>
指定MIB(包括路径)的列表,该列表定义哪些MIB最初加载到SNMP主代理中。
请注意,总是会加载以下内容:
- version v1:
STANDARD-MIB
默认是[]
。
mib_storage() = [mib_storage_opt()] <optional>
mib_storage_opt() = {module, mib_storage_module()} | {options, mib_storage_options()}
该选项指定如何存储基本mib数据。该选项由snmp代理的两部分使用:mib-server和symbolic-store。
Default is [{module, snmpa_mib_storage_ets}]
.
mib_storage_module() = snmpa_mib_data_ets | snmpa_mib_data_dets | snmpa_mib_data_mnesia | module()
定义由snmpa_mib_storage
行为定义的SNMP代理的mib存储模块。
snmp代理的几个实体(mib-server
通过它的数据模块和symbolic-store
)使用它来存储加载mib时数据检索到的其他数据相关数据。
代理提供了几种实现:snmpa_mib_storage_ets
,snmpa_mib_storage_dets
和snmpa_mib_storage_mnesia
。
默认模块是snmpa_mib_storage_ets
。
mib_storage_options() = list() <optional>
这是依赖于实现的。也就是说,这取决于模块。对于每个模块,一组特定的选项是有效的。对于随应用程序提供的模块,这些选项是受支持的:
snmpa_mib_storage_ets
:{dir, filename()} | {action, keep | clear}, {checksum, boolean()}
- `dir` - If present, points to a directory where a file to which all data in the ets table is "synced". Also, when a table is opened this file is read, if it exists.
By default, this will not be used.
- `action` - Specifies the behaviour when a non-empty file is found: Keep its content or clear it out. Default is keep.
- `checksum` - Defines if the file is checksummed or not. Default is false.
snmpa_mib_storage_dets
:{dir, filename()} | {action, keep | clear}, {auto_save, default | pos_integer()} | {repair, force | boolean()}
- `dir` - This **mandatory** option points to a directory where to place the file of a dets table.
- `action` - Specifies the behaviour when a non-empty file is found: Keep its content or clear it out. Default is keep.
- `auto_save` - Defines the dets auto-save frequency. Default is default.
- `repair` - Defines the dets repair behaviour. Default is false.
snmpa_mib_storage_mnesia
:{action, keep | clear}, {nodes, [node()]}
- `action` - Specifies the behaviour when a non-empty, already existing, table: Keep its content or clear it out. Default is keep.
- `nodes` - A list of node names (or an atom describing a list of nodes) defining where to open the table. Its up to the user to ensure that mnesia is actually running on the specified nodes. The following distinct values are recognised:
- `[]` - Translated into a list of the own node: `[node()]`
- `all` - `erlang:nodes()`
- `visible` - `erlang:nodes(visible)`
- `connected` - `erlang:nodes(connected)`
- `db_nodes` - `mnesia:system_info(db_nodes)`
默认值是调用的结果:erlang:nodes()
。
mib_server() = [mib_server_opt()] <optional>
mib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()} | {data_module, mib_server_data_module()}
定义特定于SNMP代理mib服务器的选项。
有关默认值,请参阅mib_server_opt()
中的选项。
mibentry_override() = bool() <optional>
如果此值为false,则加载mib时,每个mib-entry在安装mib之前都会被检查。检查的目的是为了防止相同的符号mibentry名称用于不同的oid。
默认是false
。
trapentry_override() = bool() <optional>
如果此值为false,则加载mib时,将在安装mib之前检查每个陷阱。检查的目的是为了防止相同的符号陷阱名称用于不同的陷阱。
默认是false
。
mib_server_data_module() = snmpa_mib_data_tttn | module() <optional>
定义由snmpa_mib_data
行为定义的SNMP代理mib-server的后端数据模块。
目前只有代理提供了默认模块,snmpa_mib_data_tttn
。
默认模块是snmpa_mib_data_tttn
。
mibs_cache() = bool() | mibs_cache_opts() <optional>
代理是否使用mib服务器查找缓存。
默认值是true
(在这种情况下,mibs_cache_opts()
默认值适用)。
mibs_cache_opts() = [mibs_cache_opt()] <optional>
mibs_cache_opt() = {autogc, mibs_cache_autogc()} | {gclimit, mibs_cache_gclimit()} | {age, mibs_cache_age()}
定义特定于SNMP代理mib服务器缓存的选项。
有关默认值,请参阅mibs_cache_opt()
中的选项。
mibs_cache_autogc() = bool() <optional>
定义mib服务器是否应自动执行缓存gc或将其留给用户(请参阅参考资料gc_mibs_cache/0,1,2,3
)。
默认是true
。
mibs_cache_age() = integer() > 0 <optional>
定义缓存中的条目在被GC调用之前将被允许变为多大(假定执行GC)。无论何时访问,缓存中的每个条目都会“触及”。
年龄定义为毫秒。
默认是10 timutes
。
mibs_cache_gclimit() = integer() > 0 | infinity <optional>
执行GC时,这是将从缓存中删除的最大缓存条目数。
有这个限制的原因是,如果缓存很大,GC可能需要很长时间,在此期间代理被锁定。
默认是100
。
error_report_mod() = atom() <optional>
定义一个错误报告模块,实现该snmpa_error_report
行为。工具箱提供了两个模块:snmpa_error_logger
和snmpa_error_io
。
默认是snmpa_error_logger
。
symbolic_store() = [symbolic_store_opt()]
symbolic_store_opt() = {verbosity, verbosity()}
定义特定于SNMP代理符号存储的选项。
有关默认值,请参阅中的选项symbolic_store_opt()
。
target_cache() = [target_cache_opt()]
target_cache_opt() = {verbosity, verbosity()}
定义特定于SNMP代理目标缓存的选项。
有关默认值,请参阅target_cache_opt()
中的选项。
agent_config() = [agent_config_opt()] <mandatory>
agent_config_opt() = {dir, agent_config_dir()} | {force_load, force_load()} | {verbosity, verbosity()}
为SNMP代理定义特定的配置相关选项。
有关默认值,请参阅agent_config_opt()
中的选项。
agent_config_dir = dir() <mandatory>
定义SNMP代理配置文件的存储位置。
force_load() = bool() <optional>
如果true
在启动过程中重新读取配置文件,并忽略配置数据库的内容。因此,如果true
配置数据库的更改在重新启动代理程序时丢失了。
默认是false
。
管理员特定的配置选项和类型:
server() = [server_opt()] <optional>
server_opt() = {timeout, server_timeout()} | {verbosity, verbosity()}
指定管理器服务器进程的选项。
默认是silence
。
server_timeout() = integer() <optional>
异步请求清理时间。对于每个请求,都会将一些信息存储在内部,以便能够将回复(到达时)发送到正确的目的地。如果回复到达,此信息将被删除。但是,如果没有回复(及时),则必须在通过最佳
时间之后删除信息。此清理将按照时间定义的定期执行server_timeout()
。这些信息将有一个最好的前
时间,由定义的Expire
调用请求的功能时,给定的时间(见async_get
,async_get_next
和async_set
)。
以毫秒为单位的时间。
默认是30000
。
manager_config() = [manager_config_opt()] <mandatory>
manager_config_opt() = {dir, manager_config_dir()} | {db_dir, manager_db_dir()} | {db_init_error, db_init_error()} | {repair, manager_repair()} | {auto_save, manager_auto_save()} | {verbosity, verbosity()}
为SNMP管理器定义特定的配置相关选项。
有关默认值,请参阅manager_config_opt()
中的选项。
manager_config_dir = dir() <mandatory>
定义SNMP管理器配置文件的存储位置。
manager_db_dir = dir() <mandatory>
定义SNMP管理器存储持久数据的位置。
manager_repair() = false | true | force <optional>
定义永久数据库的修复选项(如果以及如何在打开时修复表)。
默认是true
。
manager_auto_save() = integer() | infinity <optional>
自动保存间隔。每当这段时间没有访问时,该表被刷新到磁盘。
默认是5000
。
manager_irb() = auto | user | {user, integer()} <optional>
该选项定义了管理员将如何处理向收到的通知请求发送回复(确认)。
- auto - 管理员将自动发送响应(确认>通知 - 请求消息。
见snmpm_network_interface
,handle_inform
与definition of the manager net if
获得更多信息。
默认是auto
。
manager_mibs() = [string()] <optional>
指定MIB的列表(包括路径)并定义最初将哪些MIB加载到SNMP管理器中。
默认是[]
。
manager_net_if() = [manager_net_if_opt()] <optional>
manager_net_if_opt() = {module, manager_net_if_module()} | {verbosity, verbosity()} | {options, manager_net_if_options()}
定义特定于SNMP管理器网络接口实体的选项。
有关默认值,请参阅manager_net_if_opt()
中的选项。
manager_net_if_options() = [manager_net_if_option()] <optional>
manager_net_if_option() = {bind_to, bind_to()} | {sndbuf, sndbuf()} | {recbuf, recbuf()} | {no_reuse, no_reuse()} | {filter, manager_net_if_filter_options()}
这些选项实际上是特定于使用的模块。这里显示的那些适用于默认值manager_net_if_module()
。
有关默认值,请参阅manager_net_if_option()
中的选项。
manager_net_if_module() = atom() <optional>
处理SNMP管理器网络接口部分的模块。它必须实施该snmpm_network_interface
行为。
默认是snmpm_net_if
。
manager_net_if_filter_options() = [manager_net_if_filter_option()] <optional>
manager_net_if_filter_option() = {module, manager_net_if_filter_module()}
这些选项实际上是特定于使用的模块。这里显示的那些适用于默认值manager_net_if_filter_module()
。
有关默认值,请参阅manager_net_if_filter_option()
中的选项。
manager_net_if_filter_module() = atom() <optional>
为SNMP管理器处理网络接口过滤器部分的模块。必须执行该snmpm_network_interface_filter
行为。
默认是snmpm_net_if_filter
。
def_user_module() = atom() <optional>
实现默认用户的模块。参阅snmpm_user
行为。
默认是snmpm_user_default
。
def_user_data() = term() <optional>
数据为默认用户。在调用回调函数时传递给用户。
默认是undefined
。
通用配置类型:
restart_type() = permanent | transient | temporary
查看supervisor
文档以获取更多信息。
默认值是permanent
代理和transient
管理者。
db_init_error() = terminate | create | create_db_and_dir
定义如果代理无法打开现有数据库文件该怎么做。terminate
意味着代理/经理将终止,create
意味着代理/经理将删除有故障的文件并创建新文件,并且create_db_and_dir
意味着代理/经理将创建数据库文件以及数据库文件的任何缺失父目录。
默认是terminate
。
priority() = atom() <optional>
为所有SNMP进程定义Erlang优先级。
默认是normal
。
versions() = [version()] <optional>
version() = v1 | v2 | v3
哪些SNMP版本将被接受/使用。
默认是[v1,v2,v3]
。
verbosity() = silence | info | log | debug | trace <optional>
SNMP过程的详细程度。这指定了现在打印的很多调试信息。
默认是silence
。
bind_to() = bool() <optional>
如果为true
,net_if绑定到IP地址。如果为false
,net_if在它运行的主机上侦听任何IP地址。
默认是false
。
no_reuse() = bool() <optional>
如果为true
,net_if没有指定IP和端口地址应该是可重用的。如果为false
,地址设置为可重用。
默认是false
。
recbuf() = integer() <optional>
接收缓冲区大小。
默认值由gen_udp定义。
sndbuf() = integer() <optional>
发送缓冲区大小。
默认值由gen_udp
定义。
note_store() = [note_store_opt()] <optional>
note_store_opt() = {timeout, note_store_timeout()} | {verbosity, verbosity()}
指定SNMP注释存储的选项。
有关默认值,请参阅note_store_opt()
中的选项。
note_store_timeout() = integer() <optional>
请注意清理时间。在笔记存储中存储笔记时,每个笔记都会被赋予一生。每个timeout
note_store进程执行一次GC来删除过期的注释。以毫秒为单位的时间。
默认是30000
。
audit_trail_log() [audit_trail_log_opt()] <optional>
audit_trail_log_opt() = {type, atl_type()} | {dir, atl_dir()} | {size, atl_size()} | {repair, atl_repair()} | {seqno, atl_seqno()}
如果存在,该选项指定审计线索记录的选项。 disk_log模块用于维护一个换行日志。 如果存在,则必须指定目录和大小选项。
如果不存在,则不使用审计跟踪日志记录。
atl_type() = read | write | read_write <optional>
指定应该使用哪种类型的审计跟踪日志。代理和经理的类型的影响实际上是不同的。
对于代理人:
- 如果
write
指定,则只记录设置的请求。
对于管理者:
- 如果
write
指定,则只记录发送的消息。
默认是read_write
。
atl_dir = dir() <mandatory>
指定审计跟踪日志应存储的位置。
如果audit_trail_log
指定应该进行日志记录,则必须
定义此参数。
atl_size() = {integer(), integer()} <mandatory>
指定审计跟踪日志的大小。该参数被发送到disk_log
。
如果audit_trail_log
指定应该进行日志记录,则必须
定义此参数。
atl_repair() = true | false | truncate | snmp_repair <optional>
指定在打开审计跟踪日志时是否以及如何修复。 除非此参数具有值snmp_repair,否则它将发送到disk_log。 另一方面,如果该值为snmp_repair,则snmp会尝试自行处理某些故障。 即使它不能修复文件,它也不会直接截断它,而是将它移到一边以供以后离线分析。
默认是true
。
atl_seqno() = true | false <optional>
指定审计跟踪日志条目是否将(序列)编号。序列号的范围根据RFC 5424,即1到2147483647。
默认是false
。
5.2 修改配置文件
要启动应用程序(代理和/或管理器),必须修改配置文件,并且有两种方法可以执行此操作。可以手动编辑文件,也可以按如下方式运行配置工具。
如果使用认证或加密(仅限SNMPv3),请启动crypto
应用程序。
1> snmp:config().
Simple SNMP configuration tool (version 4.0)
------------------------------------------------
Note: Non-trivial configurations still has to be
done manually. IP addresses may be entered
as dront.ericsson.se (UNIX only) or
123.12.13.23
------------------------------------------------
Configure an agent (y/n)? [y]
Agent system config:
--------------------
1. Agent process priority (low/normal/high) [normal]
2. What SNMP version(s) should be used (1,2,3,1&2,1&2&3,2&3)? [3] 1&2&3
3. Configuration directory (absolute path)? [/ldisk/snmp] /ldisk/snmp/agent/conf
4. Config verbosity (silence/info/log/debug/trace)? [silence]
5. Database directory (absolute path)? [/ldisk/snmp] /ldisk/snmp/agent/db
6. Mib storage type (ets/dets/mnesia)? [ets]
7. Target cache verbosity (silence/info/log/debug/trace)? [silence]
8. Symbolic store verbosity (silence/info/log/debug/trace)? [silence]
9. Local DB verbosity (silence/info/log/debug/trace)? [silence]
10. Local DB repair (true/false/force)? [true]
11. Local DB auto save (infinity/milli seconds)? [5000]
12. Error report module? [snmpa_error_logger]
13. Agent type (master/sub)? [master]
14. Master-agent verbosity (silence/info/log/debug/trace)? [silence] log
15. Shall the agent re-read the configuration files during startup
(and ignore the configuration database) (true/false)? [true]
16. Multi threaded agent (true/false)? [false] true
17. Check for duplicate mib entries when installing a mib (true/false)? [false]
18. Check for duplicate trap names when installing a mib (true/false)? [false]
19. Mib server verbosity (silence/info/log/debug/trace)? [silence]
20. Mib server cache (true/false)? [true]
21. Note store verbosity (silence/info/log/debug/trace)? [silence]
22. Note store GC timeout? [30000]
23. Shall the agent use an audit trail log (y/n)? [n] y
23b. Audit trail log type (write/read_write)? [read_write]
23c. Where to store the audit trail log? [/ldisk/snmp] /ldisk/snmp/agent/log
23d. Max number of files? [10]
23e. Max size (in bytes) of each file? [10240]
23f. Audit trail log repair (true/false/truncate)? [true]
24. Which network interface module shall be used? [snmpa_net_if]
25. Network interface verbosity (silence/info/log/debug/trace)? [silence] log
25a. Bind the agent IP address (true/false)? [false]
25b. Shall the agents IP address and port be not reusable (true/false)? [false]
25c. Agent request limit (used for flow control) (infinity/pos integer)? [infinity] 32
25d. Receive buffer size of the agent (in bytes) (default/pos integer)? [default]
25e. Send buffer size of the agent (in bytes) (default/pos integer)? [default]
25f. Do you wish to specify a network interface filter module (or use default) [default]
Agent snmp config:
------------------
1. System name (sysName standard variable) [bmk's agent]
2. Engine ID (snmpEngineID standard variable) [bmk's engine]
3. Max message size? [484]
4. The UDP port the agent listens to. (standard 161) [4000]
5. IP address for the agent (only used as id
when sending traps) [127.0.0.1]
6. IP address for the manager (only this manager
will have access to the agent, traps are sent
to this one) [127.0.0.1]
7. To what UDP port at the manager should traps
be sent (standard 162)? [5000]
8. Do you want a none- minimum- or semi-secure configuration?
Note that if you chose v1 or v2, you won't get any security for these
requests (none, minimum, semi_des, semi_aes) [minimum]
making sure crypto server is started...
8b. Give a password of at least length 8. It is used to generate
private keys for the configuration: kalle-anka
9. Current configuration files will now be overwritten. Ok (y/n)? [y]
- - - - - - - - - - - - -
Info: 1. SecurityName "initial" has noAuthNoPriv read access
and authenticated write access to the "restricted"
subtree.
2. SecurityName "all-rights" has noAuthNoPriv read/write
access to the "internet" subtree.
3. Standard traps are sent to the manager.
4. Community "public" is mapped to security name "initial".
5. Community "all-rights" is mapped to security name "all-rights".
The following agent files were written: agent.conf, community.conf,
standard.conf, target_addr.conf, target_params.conf,
notify.conf, vacm.conf and usm.conf
- - - - - - - - - - - - -
Configure a manager (y/n)? [y]
Manager system config:
----------------------
1. Manager process priority (low/normal/high) [normal]
2. What SNMP version(s) should be used (1,2,3,1&2,1&2&3,2&3)? [3] 1&2&3
3. Configuration directory (absolute path)? [/ldisk/snmp] /ldisk/snmp/manager/conf
4. Config verbosity (silence/info/log/debug/trace)? [silence] log
5. Database directory (absolute path)? [/ldisk/snmp] /ldisk/snmp/manager/db
6. Database repair (true/false/force)? [true]
7. Database auto save (infinity/milli seconds)? [5000]
8. Inform request behaviour (auto/user)? [auto]
9. Server verbosity (silence/info/log/debug/trace)? [silence] log
10. Server GC timeout? [30000]
11. Note store verbosity (silence/info/log/debug/trace)? [silence]
12. Note store GC timeout? [30000]
13. Which network interface module shall be used? [snmpm_net_if]
14. Network interface verbosity (silence/info/log/debug/trace)? [silence] log
15. Bind the manager IP address (true/false)? [false]
16. Shall the manager IP address and port be not reusable (true/false)? [false]
17. Receive buffer size of the manager (in bytes) (default/pos integer)? [default]
18. Send buffer size of the manager (in bytes) (default/pos integer)? [default]
19. Shall the manager use an audit trail log (y/n)? [n] y
19b. Where to store the audit trail log? [/ldisk/snmp] /ldisk/snmp/manager/log
19c. Max number of files? [10]
19d. Max size (in bytes) of each file? [10240]
19e. Audit trail log repair (true/false/truncate)? [true]
20. Do you wish to assign a default user [yes] or use
the default settings [no] (y/n)? [n]
Manager snmp config:
--------------------
1. Engine ID (snmpEngineID standard variable) [bmk's engine]
2. Max message size? [484]
3. IP address for the manager (only used as id
when sending requests) [127.0.0.1]
4. Port number (standard 162)? [5000]
5. Configure a user of this manager (y/n)? [y]
5b. User id? kalle
5c. User callback module? snmpm_user_default
5d. User (callback) data? [undefined]
5. Configure a user of this manager (y/n)? [y] n
6. Configure an agent handled by this manager (y/n)? [y]
6b. User id? kalle
6c. Target name? [bmk's agent]
6d. Version (1/2/3)? [1] 3
6e. Community string ? [public]
6f. Engine ID (snmpEngineID standard variable) [bmk's engine]
6g. IP address for the agent [127.0.0.1]
6h. The UDP port the agent listens to. (standard 161) [4000]
6i. Retransmission timeout (infinity/pos integer)? [infinity]
6j. Max message size? [484]
6k. Security model (any/v1/v2c/usm)? [any] usm
6l. Security name? ["initial"]
6m. Security level (noAuthNoPriv/authNoPriv/authPriv)? [noAuthNoPriv] authPriv
6. Configure an agent handled by this manager (y/n)? [y] n
7. Configure an usm user handled by this manager (y/n)? [y]
7a. Engine ID [bmk's engine]
7b. User name? hobbes
7c. Security name? [hobbes]
7d. Authentication protocol (no/sha/md5)? [no] sha
7e Authentication [sha] key (length 0 or 20)? [""] [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, \
17,18,19,20]
7d. Priv protocol (no/des/aes)? [no] des
7f Priv [des] key (length 0 or 16)? [""] 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
7. Configure an usm user handled by this manager (y/n)? [y] n
8. Current configuration files will now be overwritten. Ok (y/n)? [y]
- - - - - - - - - - - - -
The following manager files were written: manager.conf, agents.conf , users.conf and usm.conf
- - - - - - - - - - - - -
--------------------
Configuration directory for system file (absolute path)? [/ldisk/snmp]
ok
5.3 启动应用程序
使用以下命令启动Erlang:
erl -config /tmp/snmp/sys
如果使用认证或加密(仅限SNMPv3),请启动加密应用程序。 如果忘记此步骤,代理将无法启动,但会报告{config_error,{unsupported_crypto,_}}错误。
1> application:start(crypto).
ok
2> application:start(snmp).
ok
5.4 调试应用程序
可能调试应用程序的每个(非超级用户)进程(代理和管理程序),可能除了应用程序用户可能提供的net_if模块之外)。 这通过调用snmpa:verbosity / 2和snmpm:verbosity / 2函数和/或使用配置参数来完成。 冗长本身有几个层次:沉默| info | 日志| 调试| 跟踪。 对于最低冗长的沉默,没有什么是印刷的。 冗长度越高,打印的越多。 默认值始终为静音。
3> snmpa:verbosity(master_agent, log).
ok
5> snmpa:verbosity(net_if, log).
ok
6>
%% Example of output from the agent when a get-next-request arrives:
** SNMP NET-IF LOG:
got packet from {147,12,12,12}:5000
** SNMP NET-IF MPD LOG:
v1, community: all-rights
** SNMP NET-IF LOG:
got pdu from {147,12,12,12}:5000 {pdu, 'get-next-request',
62612569,noError,0,
[{varbind,[1,1],'NULL','NULL',1}]}
** SNMP MASTER-AGENT LOG:
apply: snmp_generic,variable_func,[get,{sysDescr,persistent}]
** SNMP MASTER-AGENT LOG:
returned: {value,"Erlang SNMP agent"}
** SNMP NET-IF LOG:
reply pdu: {pdu,'get-response',62612569,noError,0,
[{varbind,[1,3,6,1,2,1,1,1,0],
'OCTET STRING',
"Erlang SNMP agent",1}]}
** SNMP NET-IF INFO: time in agent: 19711 mysec
调试代理的其他有用函数有:
snmpa:info/0,1
info
用于检索其他代理信息的列表。
snmpa:which_aliasnames/0
which_aliasnames
用于检索代理已知的所有别名的列表。
snmpa:which_tables/0
which_tables
用于检索代理程序已知的所有(MIB)表的列表。
snmpa:which_variables/0
which_variables
用于检索代理程序已知的所有(MIB)变量的列表。
snmpa:which_notifications/0
which_notifications
用于检索代理程序已知的所有(MIB)通知/陷阱列表。
snmpa:restart_worker/0,1
restart_worker
用于重新启动多线程代理的工作进程。
snmpa:restart_set_worker/0,1
restart_set_worker
用于重新启动多线程代理的设置工作进程。
snmpa_local_db:print/0,1,2
例如,这个函数可以显示计数器snmpInPkts
和snmpOutPkts
。
调试代理的另一个有用方法是漂亮地打印代理直接处理的所有表和/或变量的内容。这可以通过简单地调用:
snmpa:print_mib_info()
见print_mib_info/0
,print_mib_tables/0
或print_mib_variables/0
获取更多信息。