138 | | |
| 138 | The default perfSONAR toolkit installation comes with esmond archiver installed and the measurement results are archived by default at the node itself. The archive can be accessed through the RESTful API from the below URL, |
| 139 | |
| 140 | https://[perfSONAR-IP]/esmond/perfsonar/archive/ |
| 141 | |
| 142 | So we have nothing to do with archive configuration. Now we will install required MaDDash packages since they are not bundled with perfSONAR toolkit. |
| 143 | |
| 144 | sudo yum install epel-release http://software.internet2.edu/rpms/el7/x86_64/latest/packages/perfSONAR-repo-0.10-1.noarch.rpm |
| 145 | sudo yum clean all |
| 146 | sudo yum install maddash |
| 147 | sudo yum install perfsonar-psconfig-maddash |
| 148 | |
| 149 | Here you need to open some ports on linux firewall which is require for MaDDash web and esmond archiver. |
| 150 | |
| 151 | {{{ |
| 152 | firewall-cmd --permanent --add-port=80/tcp |
| 153 | firewall-cmd --permanent --add-port=443/tcp |
| 154 | firewall-cmd --reload |
| 155 | }}} |
| 156 | |
| 157 | Next we have to create a pSConfig template for feeding measurement tasks to the perfSONAR node. Sample templates can be found at /usr/share/doc/perfsonar/psconfig/ on the central measurement archive server. skeleton.json is basic sample configuration file to start with. Below is the configuration file that we are going to use in this installation. |
| 158 | |
| 159 | |
| 160 | {{{ |
| 161 | { |
| 162 | "_meta":{ |
| 163 | "display-name":"LEARN Measurements", |
| 164 | "psconfig-publisher":{ |
| 165 | "publish-source":"psconfig-publish-cli", |
| 166 | "publish-time":"2022-07-13T00:26:07+00:00" |
| 167 | } |
| 168 | }, |
| 169 | "addresses":{ |
| 170 | "PS":{ |
| 171 | "address":"PS_IP" |
| 172 | }, |
| 173 | "NSRC":{ |
| 174 | "address":"perfsonar.nsrc.org" |
| 175 | }, |
| 176 | "NORDUnet":{ |
| 177 | "address":"perfsonar-ps.ndgf.org" |
| 178 | } |
| 179 | }, |
| 180 | "archives":{ |
| 181 | "example_esmond_archive":{ |
| 182 | "archiver":"esmond", |
| 183 | "data":{ |
| 184 | "measurement-agent":"{% scheduled_by_address %}", |
| 185 | "url":"https://[PS_IP]/esmond/perfsonar/archive/" |
| 186 | } |
| 187 | } |
| 188 | }, |
| 189 | "groups":{ |
| 190 | "example_group_mesh":{ |
| 191 | "addresses":[ |
| 192 | { |
| 193 | "name":"PS" |
| 194 | }, |
| 195 | { |
| 196 | "name":"NSRC" |
| 197 | }, |
| 198 | { |
| 199 | "name":"NORDUnet" |
| 200 | } |
| 201 | ], |
| 202 | "type":"mesh" |
| 203 | } |
| 204 | }, |
| 205 | "schedules":{ |
| 206 | "example_schedule_PT10M":{ |
| 207 | "repeat":"PT10M", |
| 208 | "slip":"PT10M", |
| 209 | "sliprand":true |
| 210 | }, |
| 211 | "example_schedule_PT4H":{ |
| 212 | "repeat":"PT4H", |
| 213 | "slip":"PT4H", |
| 214 | "sliprand":true |
| 215 | } |
| 216 | }, |
| 217 | "tasks":{ |
| 218 | "example_task_latencybg":{ |
| 219 | "_meta":{ |
| 220 | "display-name":"Example Loss Tests" |
| 221 | }, |
| 222 | "archives":[ |
| 223 | "example_esmond_archive" |
| 224 | ], |
| 225 | "group":"example_group_mesh", |
| 226 | "test":"example_test_latencybg" |
| 227 | }, |
| 228 | "example_task_throughput":{ |
| 229 | "_meta":{ |
| 230 | "display-name":"Example Throughput Tests" |
| 231 | }, |
| 232 | "archives":[ |
| 233 | "example_esmond_archive" |
| 234 | ], |
| 235 | "group":"example_group_mesh", |
| 236 | "schedule":"example_schedule_PT4H", |
| 237 | "test":"example_test_throughput" |
| 238 | }, |
| 239 | "example_task_trace":{ |
| 240 | "_meta":{ |
| 241 | "display-name":"Example Traceroute Tests" |
| 242 | }, |
| 243 | "archives":[ |
| 244 | "example_esmond_archive" |
| 245 | ], |
| 246 | "group":"example_group_mesh", |
| 247 | "schedule":"example_schedule_PT10M", |
| 248 | "test":"example_test_trace" |
| 249 | } |
| 250 | }, |
| 251 | "tests":{ |
| 252 | "example_test_latencybg":{ |
| 253 | "spec":{ |
| 254 | "dest":"{% address[1] %}", |
| 255 | "flip":"{% flip %}", |
| 256 | "source":"{% address[0] %}" |
| 257 | }, |
| 258 | "type":"latencybg" |
| 259 | }, |
| 260 | "example_test_throughput":{ |
| 261 | "spec":{ |
| 262 | "dest":"{% address[1] %}", |
| 263 | "duration":"PT30S", |
| 264 | "source":"{% address[0] %}" |
| 265 | }, |
| 266 | "type":"throughput" |
| 267 | }, |
| 268 | "example_test_trace":{ |
| 269 | "spec":{ |
| 270 | "dest":"{% address[1] %}", |
| 271 | "source":"{% address[0] %}" |
| 272 | }, |
| 273 | "type":"trace" |
| 274 | } |
| 275 | } |
| 276 | } |
| 277 | }}} |
| 278 | |
| 279 | You can run below to validate file for any syntax errors, |
| 280 | |
| 281 | {{{ |
| 282 | jq . learn.json |
| 283 | }}} |
| 284 | |
| 285 | Now we will add pSConfig template as a local template. |
| 286 | |
| 287 | psconfig remote add /<Path-To-Template>/learn.json" |
| 288 | |
| 289 | Now restart below services to make the changes to be effect. |
| 290 | |
| 291 | {{{ |
| 292 | systemctl restart cassandra |
| 293 | systemctl restart maddash-server |
| 294 | systemctl restart psconfig-maddash-agent |
| 295 | }}} |