1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
6 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 only,
10 * as published by the Free Software Foundation.
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License version 2 for more details (a copy is included
16 * in the LICENSE file that accompanied this code).
18 * You should have received a copy of the GNU General Public License
19 * version 2 along with this program; If not, see
20 * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
22 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
23 * CA 95054 USA or visit www.sun.com if you need additional information or
29 * Copyright 2008 Sun Microsystems, Inc. All rights reserved
30 * Use is subject to license terms.
33 * This file is part of Lustre, http://www.lustre.org/
34 * Lustre is a trademark of Sun Microsystems, Inc.
36 * snmp/lustre-snmp-util.h
38 * Author: PJ Kirner <pjkirner@clusterfs.com>
41 #ifndef LUSTRE_SNMP_UTIL_H
42 #define LUSTRE_SNMP_UTIL_H
45 * Definitions of magic values
49 #define SYSKERNELVERSION 21
50 #define SYSHEALTHCHECK 22
55 #define OSDCOMMONNAME 32
56 #define OSDCAPACITY 33
57 #define OSDFREECAPACITY 34
59 #define OSDFREEOBJECTS 36
63 #define OSCCOMMONNAME 42
64 #define OSCOSTSERVERUUID 43
65 #define OSCCAPACITY 44
66 #define OSCFREECAPACITY 45
68 #define OSCFREEOBJECTS 47
72 #define MDDCOMMONNAME 52
73 #define MDDCAPACITY 53
74 #define MDDFREECAPACITY 54
76 #define MDDFREEFILES 56
77 #define MDSNBSAMPLEDREQ 57
81 #define MDCCOMMONNAME 62
82 #define MDCMDSSERVERUUID 63
83 #define MDCCAPACITY 64
84 #define MDCFREECAPACITY 65
86 #define MDCFREEOBJECTS 67
88 #define CLIMOUNTNUMBER 70
90 #define CLICOMMONNAME 72
92 #define CLIMDCCOMMONNAME 74
95 #define CLILOVCOMMONNAME 77
99 #define LOVCOMMONNAME 82
101 #define LOVNUMACTIVEOBD 84
102 #define LOVCAPACITY 85
103 #define LOVFREECAPACITY 86
105 #define LOVFREEFILES 88
106 #define LOVSTRIPECOUNT 89
107 #define LOVSTRIPEOFFSET 90
108 #define LOVSTRIPESIZE 91
109 #define LOVSTRIPETYPE 92
111 #define LDLMNUMBER 100
112 #define LDLMNAMESPACE 101
113 #define LDLMLOCKCOUNT 102
114 #define LDLMUNUSEDLOCKCOUNT 103
115 #define LDLMRESOURCECOUNT 104
117 /* Defining the proc paths for Lustre file system */
118 #define LUSTRE_PATH "/proc/fs/lustre/"
119 #define OSD_PATH LUSTRE_PATH "obdfilter/"
120 #define OSC_PATH LUSTRE_PATH "osc/"
121 #define MDS_PATH LUSTRE_PATH "mds/"
122 #define MDC_PATH LUSTRE_PATH "mdc/"
123 #define CLIENT_PATH LUSTRE_PATH "llite/"
124 #define LOV_PATH LUSTRE_PATH "lov/"
125 #define LDLM_PATH LUSTRE_PATH "ldlm/namespaces/"
126 #define FILEPATH_MDS_SERVER_STATS LUSTRE_PATH "mdt/MDS/mds/stats"
127 #define FILEPATH_MDS_SERVER_READPAGE_STATS LUSTRE_PATH "mdt/MDS/mds_readpage/stats"
128 #define FILEPATH_MDS_SERVER_SETATTR_STATS LUSTRE_PATH "mdt/MDS/mds_setattr/stats"
130 /* Common procfs file entries that are refrenced in mulitple locations*/
131 #define FILENAME_SYSHEALTHCHECK "health_check"
132 #define FILENAME_SYS_STATUS "/var/lustre/sysStatus"
134 #define FILENAME_NUM_REF "num_refs"
135 #define FILENAME_UUID "uuid"
136 #define FILENAME_COMMON_NAME "common_name"
137 #define FILENAME_KBYTES_TOTAL "kbytestotal"
138 #define FILENAME_KBYTES_FREE "kbytesfree"
139 #define FILENAME_FILES_TOTAL "filestotal"
140 #define FILENAME_FILES_FREE "filesfree"
141 #define STR_REQ_WAITIME "req_waittime"
143 /* strings which the file /var/lustre/sysStatus can hold */
144 #define STR_ONLINE "online"
145 #define STR_ONLINE_PENDING "online pending"
146 #define STR_OFFLINE "offline"
147 #define STR_OFFLINE_PENDING "offline pending"
150 /* Script required for starting/stopping lustre services */
151 #define LUSTRE_SERVICE "/etc/init.d/lustre"
153 #define MIN_LEN(val1,val2) (((val1)>(val2))?(val2):(val1))
155 /* The max size of a lustre procfs path name*/
156 #define MAX_PATH_SIZE 512
158 /* The max size of a string read from procfs */
159 #define MAX_LINE_SIZE 512
161 /* Types passed to get_file_list() */
165 /* Defining return values */
169 typedef struct counter64 counter64;
179 /* File operation related functions */
180 char *get_file_list(const char *dirname, int file_type, uint32_t *count);
181 extern int is_directory(const char *filename);
182 extern int read_string(const char *filepath, char *lustre_var,size_t var_size);
183 int read_counter64(const char *file_path, counter64 *c64,int factor);
184 int read_ulong(const char *file_path,unsigned long* valuep);
186 /* Start/Stop/Restart Lustre Services */
187 extern void lustrefs_ctrl(int command);
188 extern int get_sysstatus();
190 extern void report(const char *fmt, ...);
192 /* Table Driven SNMP OID Handler support*/
193 typedef unsigned char* (*f_oid_handler_t)(
194 const char* file_path,
199 int magic; /*The magic number*/
200 const char *name; /*The procfs name*/
201 f_oid_handler_t fhandler; /*The handler */
204 unsigned char* oid_table_ulong_handler(const char* file_path,size_t *var_len);
205 unsigned char* oid_table_c64_handler(const char* file_path,size_t *var_len);
206 unsigned char* oid_table_c64_kb_handler(const char* file_path,size_t *var_len);
207 unsigned char* oid_table_obj_name_handler(const char* file_path,size_t *var_len);
208 unsigned char* oid_table_string_handler(const char* file_path,size_t *var_len);
209 unsigned char* oid_table_is_directory_handler(const char* file_path,size_t *var_len);
211 var_genericTable(struct variable *vp,
216 WriteMethod **write_method,
218 struct oid_table *ptable);
220 int stats_values(char * filepath,char * name_value, unsigned long long * nb_sample, unsigned long long * min, unsigned long long * max, unsigned long long * sum, unsigned long long * sum_square);
221 extern int mds_stats_values(char * name_value, unsigned long long * nb_sample, unsigned long long * min, unsigned long long * max, unsigned long long * sum, unsigned long long * sum_square);
223 #endif /* LUSTRE_SNMP_UTIL_H */